2017-01-26 8 views
0

ApplicationEventListener#onEvent никогда не вызывается. Что может быть неправильно здесь. Используется класс конфигурации ресурсов, и я могу вызвать API.Jersey 2 ApplicationEventListener onEvent() не называется

<servlet> 
    <servlet-name>MyApplication</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.MyApplication</param-value> 
    </init-param> 
</servlet> 

<servlet-mapping> 
    <servlet-name>MyApplication</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

конфигурации App:

public class MyApplication extends ResourceConfig{ 
    @NameBinding 
    @Retention(RetentionPolicy.RUNTIME) 
    public @interface Secured {} 

    public MyApplication(){ 

     register(com.UserLogin.class); 

     register(com.MyApplicationEventListener.class); 
    } 
} 
+0

Все хорошо. Вы можете увидеть тест в [this gist] (https://gist.github.com/psamsotha/d5de14c76eed39e4585444f6e9d8648b) –

+0

@peeskillet делает то же самое. Я ожидаю, что инструкции Sysout будут напечатаны на консоли EclipseIDE, когда я запускаю/останавливаю сервер tomcat. Но нет. Все, что я могу отлаживать на моем конце? – zee

+1

Если вы не сделаете запрос, Джерси не будет полностью запущен, поэтому слушатель никогда не будет вызван, просто запустив и остановив сервер. Вам нужно установить ' 1' в web.xml для конфигурации сервлета. Это приведет к полной загрузке Джерси при запуске сервера –

ответ

0

Если вы сделаете запрос, Джерси не будет полностью запущен, так что слушатель никогда не будет вызываться только запуска и остановки сервера. Вам нужно установить <load-on-startup>1</load-on-startup> в web.xml для конфигурации сервлета. Это приведет к полной загрузке Джерси при запуске сервера.