Слушатель Java не запускается под Tomcat - PullRequest
1 голос
/ 24 марта 2009

В моих журналах 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--;
    }
} 

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

UPDATE

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

UPDATE

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

UPDATE

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

Ответы [ 3 ]

2 голосов
/ 22 февраля 2013

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

Это все связано с лежащим в основе исключением, которое приводит к тому, что страшное сообщение «SEVERE: Error listenerStart» нигде не регистрируется, и как настроить ведение журнала для создания исключения.

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

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

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. Ваш пробег может отличаться.

1 голос
/ 24 марта 2009

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

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

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

0 голосов
/ 17 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...