Как я могу найти ошибку, когда Tomcat не может запустить мое веб-приложение Spring / Hibernate? - PullRequest
2 голосов
/ 09 июля 2009

У меня есть приложение Spring / Hibernate, которое я преобразовал в веб-приложение для предоставления веб-сервисов RESTful (используя Джерси). Я пытаюсь развернуть веб-приложение на Tomcat 6.0.20 и получаю только загадочное сообщение об ошибке в файле журнала:

Jul 8, 2009 2:25:22 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Jul 8, 2009 2:25:22 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/lmrest] startup failed due to previous errors

Я установил уровень ведения журнала для отладки, но нет никаких подозрительных сообщений, показывающих, что пошло не так, кроме этого, что выглядит довольно безобидно для меня:

1360 [http-8080-1] INFO  org.hibernate.cfg.search.HibernateSearchEventListenerRegister  - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.

Я использую последние версии Spring и Hibernate. Я использую ContextLoaderListener в моем web.xml. Может ли это быть слушатель, который не запускается? Я предполагаю, что он работает по крайней мере частично, поскольку я вижу, как многие сообщения журнала конфигурации Hibernate прокручиваются до сбоя при запуске веб-приложения. Моя главная проблема в том, что я не вижу никаких сообщений об ошибках, указывающих на то, что не удалось запустить слушатель, на которого он жалуется.

Файл web.xml, который я использую, выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- listener to pull in the Spring application context -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:appContext.xml</param-value>
    </context-param>

    <!-- Jersey servlet container to intercept all URIs -->
    <servlet>
        <servlet-name>JerseyContainer</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>JerseyContainer</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

Если кто-нибудь может дать мне несколько идей относительно того, где искать мою ошибку, я буду очень признателен, потому что я в замешательстве. Заранее спасибо!

- Джеймс

Ответы [ 7 ]

3 голосов
/ 09 июля 2009

Пожалуйста, сделайте следующее:

  • удалить все артефакты, связанные с log4j, из вашего файла войны - включая log4j.jar / properties / xml;
  • включает log4j.jar в общем / lib или lib (в зависимости от вашей версии Tomcat);
  • добавить файл log4j.properties в common / classes (не уверен в Tomcat 6).

Этот конфиг должен убедиться, что все выходные данные log4j направлены правильно. При необходимости переключитесь на отладку, но это не должно быть:

log4j.rootLogger=info, R 

log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/catalina.out 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d %p %t %c - %m%n 
3 голосов
/ 28 октября 2013

В Ubuntu 12.04 системные журналы tomcat7 хранятся в /var/lib/tomcat7/localhost.<date>.log

Это местоположение контролируется /etc/tomcat7/logging.properties:

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler

Так как запуск не удался из-за ошибки Tomcat, а не из-за ошибки приложения, на этом подробный отчет закончился. В моем случае Tomcat жаловался на отсутствующее определение класса.

SEVERE: Error configuring application listener of class com.foo.security.tomcat.CustomSessionListener
java.lang.ClassNotFoundException: com.alleni.zebra.security.tomcat.CustomSessionListener
1 голос
/ 09 июля 2009

Apache не может найти класс org.hibernate.cfg.search.HibernateSearchEventListenerRegister. Вы уверены, что все классы, необходимые для запуска hibernate, загружены в classpath? Hibernate делится на множество пакетов .jar, я предлагаю вам проверить зависимости между файлами .jar

1 голос
/ 09 июля 2009

Проверьте ваши log4j.properties или log4j.xml и убедитесь, что ваш уровень ведения журнала установлен на DEBUG

0 голосов
/ 12 октября 2011

Вероятно, classpath или что-то не загружается ... как другие говорят, чтобы регистрация работала.

1) Я рекомендую подход «бинарный поиск», чтобы найти ошибку. Прокомментируйте раздел «Джерси» в вашем web.xml. Посмотрите, работает ли он (или хотя бы запускается).

2) Если нет, закомментируйте Spring ContextLoaderListener. Посмотрите, работает ли это.

3) После того, как вы нашли проблемный элемент, вы можете выполнить «бинарный поиск» в его файлах конфигурации - комментируя половину конфигурации и т. Д., Пока не найдете проблемный раздел или ссылку на класс.

Если при удалении обоих / всех разделов файла web.xml ваш контекст по-прежнему не загружается, просмотрите прослушиватели контекста Tomcat / Catalina и конфигурацию сервера.

0 голосов
/ 09 июля 2009

Здесь - аналогичное обсуждение на форумах SprinSource. Поскольку applicationContext.xml работает со стандартным JAR, это, скорее всего, проблема пути к классам. Дважды проверьте папку WEB-INF / lib и убедитесь, что в общей папке Tomcat нет конфликтующих файлов JAR.

0 голосов
/ 09 июля 2009

Есть ли какие-либо ошибки в журнале (в более ранний момент времени)? Это не так уж и много (хотя я не удивлюсь, если это так).

...