gpt4 book ai didi

jsf - 如何让 JSF 在 docker 容器中使用 spring-boot 应用程序?

转载 作者:行者123 更新时间:2023-12-03 04:15:35 28 4
gpt4 key购买 nike

我有一个使用 spring-boot 1.4.0 和 JSF 2.2 (Mojarra 2.2.13) 构建的应用程序,在嵌入式 tomcat (8.5) 上运行。

当我本地运行应用程序时,它工作正常 - 无论我是使用 mvn spring-boot:run 还是 java 从 IDE 启动它-jar目标/myapp.jar

但是,当我在 Docker 容器内(使用 docker 1.12.1)启动应用程序时,一切都正常除了 JSF 页面。例如,像 /health 这样的 spring-boot-actuator 页面工作得很好,但是当尝试访问 /home.xhtml (一个 JSF 页面)时,我得到:

<小时/>

白标错误页面

此应用程序没有对 /error 的显式映射,因此您将其视为后备。

2016 年 10 月 12 日星期三 09:33:33 GMT出现意外错误(类型=未找到,状态=404)。/home.xhtml 在ExternalContext 中未作为资源找到

<小时/>

我使用 io.fabric8:docker-maven-plugin 构建 docker 镜像(基于带有 openjdk-8-jre 的 alpine),其中包括 /maven< 下的构建工件 位于 docker 容器内,并使用 java -jar/maven/${project.artifactId}-${project.version}.jar 来启动应用程序。

我使用端口 9000 而不是标准 tomcat 端口 (8080),这也是由 docker 镜像公开的。

我已经比较了本地 jar 和 docker 容器中包含的 jar,它们都有相同的内容。

如有任何帮助,我们将不胜感激。提前致谢

最佳答案

XHTML 文件和其余 JSF 文件被放置在错误的目录中。

至少在使用 <packaging>jar</packaging> 时看来所有 JSF 内容都必须放在 src/main/resources/META-INF 下而不是src/main/webapp大多数 IDE 会自动将其放置在其中。

当 JSF 的东西在 src/main/webapp 时它没有被包含(或不在正确的位置)到 spring-boot-repackaged jar 文件中。

我的src/main/resources现在看起来像这样:

src
└── main
   └── resources
├── application.yml
└── META-INF
   ├── faces-config.xml
   └── resources
   ├── administration
      │   └── userlist.xhtml
       ├── css
      │   └── default.css
      ├── images
      │   └── logo.png
      └── home.xhtml

关于jsf - 如何让 JSF 在 docker 容器中使用 spring-boot 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40001824/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com