将 Spring Boot 应用程序部署到 AWS beanstalk
Posted
技术标签:
【中文标题】将 Spring Boot 应用程序部署到 AWS beanstalk【英文标题】:Deploying Spring Boot app to AWS beanstalk 【发布时间】:2015-01-25 20:06:54 【问题描述】:从昨天开始,我一直在尝试在 AWS Beanstalk 上的 Tomcat 中部署 Spring Boot,但我总是遇到这个异常:
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】:当您将 Spring Boot 应用程序部署到独立的 servlet 容器时,它使用一个特殊的“嵌入式”servlet 容器ErrorPageFilter
,通过将请求转发到配置的错误页面来处理应用程序错误。 org.coursera.symptomserver.auth.config.OAuth2SecurityConfiguration$1
中的代码错误地假设此类是 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
,这导致 ClassCastException
。
要做的第一件事是通过添加instanceof
检查使这段代码更加健壮,以便它只在知道它会成功时才尝试强制转换。其次,当您实际部署到独立的 Tomcat 实例时,您需要通过更改其 server.xml
或 context.xml
而不是以编程方式将其应用于 Tomcat。
【讨论】:
我有一个确切的例外 - 我不是弹簧靴专家,请您指导我如何解决这个问题? 您好,我在这里创建了一个问题:***.com/questions/34240159/…以上是关于将 Spring Boot 应用程序部署到 AWS beanstalk的主要内容,如果未能解决你的问题,请参考以下文章