小编典典

如何使JSF与docker容器中的spring-boot应用程序一起使用?

spring-boot

我有一个使用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

但是,当我 在docker容器 (使用docker 1.12.1)中启动应用程序时, JSF页面
,其他所有功能均正常。例如,像spring-boot-
actuator的页面/health工作正常,但是当尝试访问/home.xhtml(JSF页面)时,我得到:


白标错误页面

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

2016 GMT 2016年10月12日星期三,发生意外错误(类型=未找到,状态= 404)。 /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启动应用程序。

我使用的是端口9000而不是标准的tomcat端口(8080),而docker映像也暴露了该端口。

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

任何帮助,将不胜感激。提前致谢


阅读 295

收藏
2020-05-30

共1个答案

小编典典

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
2020-05-30