Весеннее завершение загрузки приложения без каких-либо ошибок на консоли
Я создал весеннее загрузочное приложение, используя maven. Там, где я собрал исполняемый файл jar для приложения, я попытался запустить его в окнах уровня EC2, свободных от экземпляров, используя следующую команду
java -jar com-spring-boot-apps-0.0.1-SNAPSHOT.jar --server.port=8181 -Xdebug
Некоторое приложение не запускается, оно существует со следующими журналами на консоли.
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.3.RELEASE)
2018-07-11 13:55:50.762 INFO 2784 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-07-11 13:55:50.768 INFO 2784 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.31
2018-07-11 13:55:50.800 INFO 2784 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : Loaded APR based Apache Tomcat Native library [1.2.17] using APR version [1.6.3].
2018-07-11 13:55:50.803 INFO 2784 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2018-07-11 13:55:50.805 INFO 2784 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2018-07-11 13:55:52.060 INFO 2784 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : OpenSSL successfully initialized [OpenSSL 1.0.2o 27 Mar 2018]
2018-07-11 13:55:52.402 INFO 2784 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-07-11 13:55:52.532 INFO 2784 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
Исключение:-
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'regionProvider': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cloud.aws.core.region.StaticRegionProvider]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: The region 'ap-south-1a' is not a valid region!
6 ответов
Commons-logging конфликтует с log4j. Я сталкивался с этим несколько раз, и каждый раз, исключая ведение журнала, помогло мне решить эту проблему. Рекомендую проверить дерево зависимостей.
mvn dependency:tree > module-dependency.txt
Затем исключите commons-loggin везде, где вы видите
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
Правильно ли указано название вашего региона?
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html
Регион "ap-south-1a" является неправильным регионом. Это должно быть "ap-south-1" по моему мнению. Вы можете проверить файл конфигурации в.aws dir, чтобы увидеть, правильно ли задан регион. Также проверьте правильность переменной среды AWS_DEFAULT_REGION, если она установлена.
Вы можете корректно завершить работу приложения через JMX или HTTP, если конечная точка включена (добавьте endpoints.shutdown.enabled=true в файл application.properties).
/ shutdown - позволяет приложению корректно завершить работу. (по умолчанию не включено).
Это сработало для меня после удаления cloud.aws.region.static=ap-south-1a из свойств application.properties и pom.xml.
Но в то же время, если я удаляю это свойство из настройки проекта моего локального компьютера, происходит сбой со следующей ошибкой
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'amazonS3': Invocation of init method failed; nested exception is java.lang.IllegalStateException: There is no EC2 meta data available, because the application is not running in the EC2 environment. Region detection is only possible if the application is running on a EC2 instance
В моем случае в файле pom.xml отсутствовала структура ведения журнала. Я использовал spring-boot-starter-parent версию 2.2.5.RELEASE. Чтобы решить проблему, что приложение не запущено, в pom.xml я добавил следующее:
<dependency>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>