Ошибка Heroku после развертывания Atlassian Bamboo

Я использую плагин Atlassian Bamboo Heroku для создания и развертывания моего веб-приложения Java в Heroku. Сборка выполняется успешно, и файл войны затем загружается в Heroku, где он теперь должен быть доступен, однако я получаю стандартную страницу ошибки приложения Heroku и вижу следующее в своих журналах Heroku:

 2012-11-11T12:41:12+00:00 app[web.1]: INFO: Initializing Spring root WebApplicationContext
2012-11-11T12:41:17+00:00 app[web.1]:   at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
2012-11-11T12:41:17+00:00 app[web.1]:   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
2012-11-11T12:41:17+00:00 app[web.1]:   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
2012-11-11T12:41:17+00:00 app[web.1]:   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
2012-11-11T12:41:17+00:00 app[web.1]:   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
2012-11-11T12:41:17+00:00 app[web.1]:   at java.lang.Thread.run(Thread.java:636)
2012-11-11T12:41:17+00:00 app[web.1]: Nov 11, 2012 12:41:17 PM org.apache.catalina.core.StandardContext startInternal
2012-11-11T12:41:17+00:00 app[web.1]: SEVERE: Error listenerStart
2012-11-11T12:41:17+00:00 app[web.1]: Nov 11, 2012 12:41:17 PM org.apache.catalina.core.StandardContext listenerStart
2012-11-11T12:41:17+00:00 app[web.1]: SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
2012-11-11T12:41:17+00:00 app[web.1]: java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded
2012-11-11T12:41:17+00:00 app[web.1]:   at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:137)
2012-11-11T12:41:17+00:00 app[web.1]:   at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)
2012-11-11T12:41:17+00:00 app[web.1]:   at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:45)
2012-11-11T12:41:17+00:00 app[web.1]:   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
2012-11-11T12:41:17+00:00 app[web.1]:   at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
2012-11-11T12:41:17+00:00 app[web.1]:   at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2012-11-11T12:41:17+00:00 app[web.1]:   at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
2012-11-11T12:41:19+00:00 app[web.1]: Nov 11, 2012 12:41:19 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
2012-11-11T12:41:19+00:00 app[web.1]: INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [2,144] milliseconds.
2012-11-11T12:41:19+00:00 app[web.1]: Nov 11, 2012 12:41:19 PM org.apache.catalina.core.StandardContext startInternal
2012-11-11T12:41:19+00:00 app[web.1]: SEVERE: Context [/] startup failed due to previous errors
2012-11-11T12:41:19+00:00 app[web.1]: SEVERE: Context [/] failed in [org.apache.catalina.core.StandardContext] lifecycle. Allowing Tomcat to shutdown.
2012-11-11T12:41:19+00:00 app[web.1]: Nov 11, 2012 12:41:19 PM org.apache.catalina.core.ApplicationContext log
2012-11-11T12:41:19+00:00 app[web.1]: INFO: Shutting down log4j
2012-11-11T12:41:19+00:00 app[web.1]: INFO: Closing Spring root WebApplicationContext

Если я устанавливаю войну приложений со своей консоли (используя мастер git push heroku), все работает нормально.


person JMM    schedule 11.11.2012    source источник


Ответы (1)


Похоже, если я хочу использовать Log4jConfigListener, он работает только для расширенной WAR. Плагин Bamboo Heroku должен развертывать его как нерасширенный, что вызывает мою проблему. Я удалю Log4jConfigListener и перенастрою ведение журнала по-другому.

Из журналов Spring (http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/util/Log4jConfigListener.html):

Слушатель Bootstrap для пользовательской инициализации log4j в веб-среде. Делегаты Log4jWebConfigurer (подробности конфигурации см. в его javadoc). ПРЕДУПРЕЖДЕНИЕ. Предполагается наличие расширенного файла WAR как для загрузки файла конфигурации, так и для записи файлов журнала. Если вы хотите, чтобы ваш WAR не был расширен или вам не нужны файлы журналов для конкретного приложения в каталоге WAR, не используйте настройку log4j в приложении (таким образом, не используйте Log4jConfigListener или Log4jConfigServlet). Вместо этого используйте глобальную настройку log4j для всей виртуальной машины (например, в JBoss) или java.util.logging JDK 1.4 (которая также является глобальной).

person JMM    schedule 12.11.2012
comment
Привет, Энни, это Джеймс из Atlassian Bamboo. Похоже, проблема на стороне Heroku. Возможно, стоит связаться с Heroku, если проблема не исчезнет. - person jdumay; 12.11.2012
comment
Плагин Bamboo развертывает файл WAR в Heroku. Расширенная WAR в настоящее время не поддерживается. Расширенные проекты WAR можно развернуть с помощью git push: devcenter.heroku.com/articles/java- веб-приложение - person Jesper J.; 23.11.2012