2012-02-09 7 views
5

Mam wbudowany Jetty i próbuję ustawić parametr inicjalizacji.Zestaw Jetty setInitParameter NIE inicjuje żadnego parametru

Główna klasa główna tworzy aplet z CGI która rozciąga CGI.

ciągu Głównego, mam następujący kod:

ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS); 
context2.setContextPath("/cgi"); 
context2.setResourceBase("./cgi-bin"); 
context2.setInitParameter("commandPrefix", "perl"); 
context2.addServlet(new ServletHolder(new Cgi()), "/"); 
server.setHandler(context2); 

Within CGI, ja sprawdzić parametr:

public void init(ServletConfig servletConfig) throws ServletException { 
     System.out.println(servletConfig.getInitParameter("commandPrefix")); 
     super.init(servletConfig); 
} 

Za każdym razem, to wypisuje wartość null dla wywołanie getInitParameter. Wtedy, gdy Cgi rzeczywiście POTRZEBUJE tego użyć, nie robi tego, ponieważ nie jest ustawione. Dlaczego to się mogło stać?

Odpowiedz

9

Ustawiasz InitParameter na ServletContextHandler, ale powinieneś ustawić go na ServletHolder.

(Jest to nieco mylące, wiem)

+0

Dziękuję! To dezorientowało mnie jak szalone minione tygodnie – joslinm

2

Musisz ustawić parametr startowy kontekst, a nie parametr aplet startowych. Musisz więc pobrać go jako parametr inicjujący kontekst, a nie jako parametr inicjujący serwlet.

System.out.println(servletConfig.getServletContext().getInitParameter("commandPrefix")); 

Alternatywnie można oczywiście również ustawić go jako parametr aplet init, zamiast, ale w ten sposób parametr będzie dostępny tylko do powiązanego serwletu tylko, nie do wszystkich innych apletów działających w tym samym kontekście. Może to być lub nie być to, czego chcesz, w zależności od konkretnych wymagań funkcjonalnych.

Powiązane problemy