Вопрос

В моих журналах Tomcat (catalina) я получаю следующую ошибку, препятствующую запуску моего приложения:

SEVERE: Error listenerStart
24-Mar-2009 13:23:10 org.apache.catalina.core.StandardContext start
SEVERE: Context [/exampleA] startup failed due to previous errors

Я не знаю, почему я это получаю.В моем web.xml у меня есть следующее

<listener>
    <listener-class>
        uk.co.a.listener.SessionListener
    </listener-class>
</listener>

<listener>
    <listener-class>
        uk.co.a.listener.SessionAttributeListener
    </listener-class>
</listener>

Когда я комментирую слушателей, все запускается нормально.Код для слушателей приведен ниже:

public class SessionAttributeListener implements HttpSessionAttributeListener {
    static Log log = LogFactory.getLog(SessionAttributeListener.class.getName());

    public void attributeAdded(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeAdded to THE SESSION:" + hsbe.getName());
    }

    public void attributeRemoved(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeRemoved from THE SESSION:" + hsbe.getName());
    }

    public void attributeReplaced(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeReplaced in THE SESSION:" + hsbe.getName());
    }
}

и

public class SessionListener implements HttpSessionListener {

    static Log log = LogFactory.getLog(SessionListener.class.getName());

    private static int activeSessions = 0;
    public void sessionCreated(HttpSessionEvent evt)
    {
        activeSessions++;
        log.debug("No. of active sessions on:"+
                new java.util.Date()+" : "+activeSessions);
    }
    public void sessionDestroyed (HttpSessionEvent evt)
    {
        activeSessions--;
    }
} 

Почему это не запускается?Или где я могу найти дополнительную информацию?

ОБНОВЛЯТЬ

Кажется, проблема только с запуском SessionAttributeListener.SessionListener не запускался, поскольку <слушатель> был объявлен после <сервлета>

ОБНОВЛЯТЬ

Возникла проблема с используемым файлом JAR.Класс SessionAttributeListener не был включен.Когда он был включен, приложение запустилось.

ОБНОВЛЯТЬ

Кажется, что AttributeListener не работает.Когда он используется, код терпит неудачу.Есть ли простой способ проверить, работает ли прослушиватель?

Это было полезно?

Решение

В вашем обновлении написано: «Похоже, что AttributeListener не запущен.Когда он используется, код терпит неудачу.Есть ли простой способ проверить, работает ли прослушиватель?» Вы пробовали добавить статический инициализатор?что-то вроде

static {
log.debug("static initialiser called");
}

таким образом, при первом обращении к классу вы должны получить запись журнала.

Другие советы

Поскольку в итоге я нашел путь к решению в другом месте, я подумал, что было бы полезно обновить эту проблему, добавив эту информацию.

Все дело в базовом исключении, которое вызывает ужасную ошибку «СЕРЬЕЗНО:Сообщение об ошибке прослушивателяStart нигде не регистрируется и как настроить ведение журнала для создания исключения.

От здесь есть очень четкое описание проблемы с журналированием и ее решение.

В моем случае я выбрал еще более урезанную версию, добавив

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].handlers = java.util.logging.ConsoleHandler

в tomcat conf/logging.properties и заменив /web-app соответствующим путем контекста веб-приложения.

И волшебным образом появилось скрытое исключение, сообщившее мне, что среда выполнения Java 6 не хочет знать о коде, скомпилированном Java 7.Неприятно, но легко исправимо.

Это применимо к Tomcat 7.Ваш пробег может отличаться.

Когда вы сталкиваетесь с сообщением «Ошибка запуска из-за предыдущих ошибок» в журналах Tomcat, вы либо обнаружите исключение в журнале, которое вызывает эту проблему, либо вам необходимо полностью настроить ведение журнала в Tomcat, чтобы исключение могло быть записано в журнал Tomcat. журналы.После того, как в ваши журналы записана основная причина, решение обычно тривиально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top