Развертывание приложения Spring Boot на AWS beanstalk

Со вчерашнего дня я пытаюсь развернуть весеннюю загрузку в Tomcat на AWS Beanstalk, и у меня всегда возникает это исключение:

    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)
 ...

В моей локальной среде разработки у меня нет этой ошибки. В моем локальном разработчике я работал на Tomcat 7 с версией 1.0.2.RELEASE.

Я создал войну с тем, что развертываю на экземпляре Tomcat 7 в AWS Beanstalk, и всегда появляется ошибка, указанная ниже. Как исправить эту ошибку?


person Dimitri    schedule 27.11.2014    source источник


Ответы (1)


Когда вы развертываете приложение Spring Boot в автономном контейнере сервлетов, оно использует специальный «встроенный» контейнер сервлетов, ErrorPageFilter, для обработки ошибок приложения путем перенаправления запросов на настроенные страницы ошибок. Код в org.coursera.symptomserver.auth.config.OAuth2SecurityConfiguration$1 неверно предполагает, что этот класс является org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory, что приводит к ClassCastException.

Первое, что нужно сделать, - это сделать этот код более надежным, добавив проверку instanceof, чтобы он пытался выполнить приведение только в том случае, если он знает, что он будет успешным. Во-вторых, поскольку вы фактически развертываете автономный экземпляр Tomcat, вам необходимо применить эту настройку к Tomcat, изменив его server.xml или context.xml, а не делать это программно.

person Andy Wilkinson    schedule 28.11.2014
comment
У меня есть точное исключение - я не гуру весенней загрузки, не могли бы вы подсказать, как я могу это исправить? - person Simon; 12.12.2015
comment
Здравствуйте, я создал здесь вопрос: stackoverflow.com/questions/34240159/ - person Simon; 13.12.2015