我有一个使用spring-boot 1.4.0和JSF 2.2(Mojarra 2.2.13)构建的应用程序,该应用程序在嵌入式tomcat(8.5)上运行。
当我在 本地 运行该应用程序时,它可以正常运行-不管我是通过IDE mvn spring-boot:run还是使用IDE从它启动它java -jar target/myapp.jar
mvn spring-boot:run
java -jar target/myapp.jar
但是,当我 在docker容器 (使用docker 1.12.1)中启动应用程序时, 除 JSF页面 外 ,其他所有功能均正常。例如,像spring-boot- actuator的页面/health工作正常,但是当尝试访问/home.xhtml(JSF页面)时,我得到:
/health
/home.xhtml
白标错误页面
此应用程序没有针对的显式映射/error,因此您将其视为后备。
/error
2016 GMT 2016年10月12日星期三,发生意外错误(类型=未找到,状态= 404)。 /home.xhtml Not Found in ExternalContext as a Resource
/home.xhtml Not Found in ExternalContext as a Resource
我用于io.fabric8:docker-maven- plugin构建docker映像(基于带有openjdk-8-jre的alpine),其中包括/mavendocker容器内部的构建工件并java -jar /maven/${project.artifactId}-${project.version}.jar启动应用程序。
io.fabric8:docker-maven- plugin
/maven
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会自动放置它的位置。
<packaging>jar</packaging>
src/main/resources/META- INF
src/main/webapp
如果包含JSF src/main/webapp,则不会将其包含(或放置在正确的位置)到spring-boot-repackaged的jar文件中。
我src/main/resources现在看起来像这样:
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