将Spring Boot应用程序部署到AWS beanstalk

时间:2014-11-27 09:24:56

标签: spring-mvc tomcat amazon-web-services spring-boot elastic-beanstalk

我从昨天开始尝试在AWS Beanstalk上的Tomcat中部署Spring引导,并且我总是引发此异常:

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'errorPageFilter': Initialization of bean failed;
      .....

       Caused by: java.lang.ClassCastException: org.springframework.boot.context.web.ErrorPageFilter cannot be cast to org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
        at org.coursera.symptomserver.auth.config.OAuth2SecurityConfiguration$1.customize(OAuth2SecurityConfiguration.java:212)
        at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization(EmbeddedServletContainerCustomizerBeanPostProcessor.java:67)
        at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization(EmbeddedServletContainerCustomizerBeanPostProcessor.java:54)
 ...

在我当地的开发环境中,我没有遇到此错误。在我的本地开发中,我使用' 1.0.2.RELEASE'在Tomcat 7上开发。版。

我创建了一场战争,我在AWS Beanstalk中部署了Tomcat 7实例,下面的错误总是出来。我该如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

将Spring Boot应用程序部署到独立的servlet容器时,它使用一个特殊的“嵌入式”servlet容器ErrorPageFilter,通过将请求转发到已配置的错误页面来处理应用程序错误。 org.coursera.symptomserver.auth.config.OAuth2SecurityConfiguration$1中的代码错误地认为此类是org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory,导致ClassCastException

要做的第一件事是通过添加instanceof检查来使这段代码更加健壮,这样它只有在知道它会成功时才会尝试强制转换。其次,当您实际部署到独立的Tomcat实例时,您需要通过更改其server.xmlcontext.xml而不是以编程方式执行此操作来将此自定义应用于Tomcat。