将 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.xmlcontext.xml 而不是以编程方式将其应用于 Tomcat。

【讨论】:

我有一个确切的例外 - 我不是弹簧靴专家,请您指导我如何解决这个问题? 您好,我在这里创建了一个问题:***.com/questions/34240159/…

以上是关于将 Spring Boot 应用程序部署到 AWS beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

AWS CodePipeline 将 Spring Boot 应用程序部署到 Elastic BeansTalk

如何将 Spring Boot 应用程序战争部署到 AWS Elastic Beanstalk?

无法将 Spring Boot v2 Gradle 应用程序部署到 AWS Beanstalk

当我将 Spring Boot 应用程序部署到 AWS Elastic Beanstalk 并且无法从本地 Spring Boot 连接到 RDS 时出现 502 错误网关

如何运行部署在 AWS 上的 Spring Boot 程序 [关闭]

AWS Beanstalk 中的 Spring Boot 微服务