2013-03-22 26 views
7

Chcę przetestować mój ServletContextListener z osadzonym Molo. Wywołuje contextDestroyed na przystanku serwera, ale nie wywołuje contextInitialized na starcie serwera. Jak mogę to naprawić?Korzystanie z ServletContextListener z Jetty

Server server = new Server(PORT); 
ServletContextListener myListener = ...; 
WebAppContext webapp = new WebAppContext(); 
webapp.addEventListener(myListener); 
webapp.setServer(server); 
server.setHandler(webapp); 
server.start(); -> doesnt call myListener.contextInitialized() 

server.stop(); -> call myListener.contextDestroyed() 
+0

Czy próbowano ustawienie ścieżki kontekstu (i ewentualnie wojnę): 'webapp.setContextPath („/”); webapp.setWar (warURL); '). Jeśli nie, żaden kontekst nie jest * naprawdę * wdrożony –

+0

@BGR setContextPath ("/") nie pomogło. Nie mam żadnego pliku web.xml. –

+0

@ BGR, Ale myListener.contextDestroyed() działa zgodnie z projektem. –

Odpowiedz

1

miałem podobny problem z Jetty 9.3.10

Czy próbowałeś ustawiania rozszerzonych typów słuchacza prawdziwe? Jeśli jest ustawiona na false (domyślnie), implementacje ServletContextListener nie będą rozpatrywane w org.eclipse.jetty.server.handler.ContextHandler.Context#checkListener

webapp.getServletContext().setExtendedListenerTypes(true);