【问题标题】:Not Found in ExternalContext as a Resource Error (Amazon Elastic Beanstalk / Spring Boot / JSF + Primefaces)在 ExternalContext 中找不到作为资源错误(Amazon Elastic Beanstalk / Spring Boot / JSF + Primefaces)
【发布时间】:2021-06-02 19:57:36
【问题描述】:

我使用 Spring Boot、JSF + Primefaces 创建了一个应用程序。我将它部署到 Amazon Elastic Beanstalk,并设置项目需要使用的环境变量。

当我尝试访问我的网站时,收到以下错误消息:

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Mar 04 07:21:33 UTC 2021
There was an unexpected error (type=Not Found, status=404).
/login.xhtml Not Found in ExternalContext as a Resource

这是我的 Faces 配置(作为 java 类):

    package com.jsf;



@SpringBootApplication
@Configuration
@ComponentScan("com.jsf")
public class HelloJsfApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloJsfApplication.class, args);
    }

    // JSF Configration Başlangıc
    @Bean
    public ServletRegistrationBean<FacesServlet> facesServletRegistraiton() {
        ServletRegistrationBean<FacesServlet> registration = new ServletRegistrationBean<FacesServlet>(
                new FacesServlet(), new String[] { "*.xhtml" });
        registration.setName("Faces Servlet");
        registration.setLoadOnStartup(1);
        registration.addUrlMappings("*.xhtml");

        return registration;
    }

    @Bean
    public ServletContextInitializer servletContextInitializer() {
        return servletContext -> {
            servletContext.setInitParameter("com.sun.faces.forceLoadConfiguration", Boolean.TRUE.toString());
            servletContext.setInitParameter("primefaces.THEME", "bootstrap");
            // Primefaces client browser tarafında kontrol edilebilme örneğin textbox 10
            // karakter olmalı vs..
            servletContext.setInitParameter("primefaces.CLIENT_SIDE_VALIDATION", Boolean.TRUE.toString());
            // Xhtml sayfalarında commentlerin parse edilmemesi.
            servletContext.setInitParameter("javax.faces.FACELETS_SKIP_COMMENTS", Boolean.TRUE.toString());
            // primefaces icon set için
            servletContext.setInitParameter("primefaces.FONT_AWESOME", Boolean.TRUE.toString());
        };
    }

    @Bean
    public ServletListenerRegistrationBean<ConfigureListener> jsfConfigureListener() {
        return new ServletListenerRegistrationBean<ConfigureListener>(new ConfigureListener());
    }

    // JSF Configration Sonu
}

webapp/WEB-INF 文件夹下的 my faces 配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
        
    </application>

</faces-config>

如你所见,我所有的 xhtml 文件都在 webapp 文件夹下:

我的 application.properties 文件(使用 java 参数):

server.servlet.context-path = ${CONTEXT_PATH}
server.port = ${PORT}

spring.datasource.url = ${SPRING_DATASOURCE_URL}
spring.datasource.username = ${SPRING_DATASOURCE_USERNAME}
spring.datasource.password = ${SPRING_DATASOURCE_PASSWORD}

spring.jpa.properties.hibernate.dialect = ${SPRING_JPA_DATABASE_PLATFORM}

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = ${SPRING_JPA_HIBERNATE_DDL_AUTO}
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=${SPRING_JPA_HIBERNATE_LOB_CREATION}

spring.datasource.driver-class-name=${SPRING_DATASOURCE_DRIVERCLASSNAME}

这是我在 Amazon 上定义的 java 参数(出于安全原因,我不会发布 db 参数):

PORT=5000
CONTEXT_PATH=/
SPRING_DATASOURCE_DRIVERCLASSNAME=org.postgresql.Driver
...

等等。

我真的没有解决方案了。使用相同的打包 jar,我以相同的环境参数部署到 Heroku,它可以完美运行。

我在使用 Amazon Elastic Beanstalk 时做错了什么?

亲切的问候。

【问题讨论】:

    标签: spring-boot jsf primefaces amazon-elastic-beanstalk


    【解决方案1】:

    我发现了问题。

    Maven,不会在“jar”包中添加 *.xhtml 文件。 这里是反编译版jar打包的ss(带jd-gui)

    ..这是战争包装的ss:

    因此,如果您认为在开发和之后的管理过程中所做的一切都是正确的,请检查包装类型。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2012-10-20
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 2018-10-14
      • 2016-11-07
      相关资源
      最近更新 更多