2012-10-13 10 views
13

Przeczytałem this, ale nie do końca rozumiem, jak to działa. Chcę załadować plik właściwości i skonfigurować pulę połączeń po uruchomieniu aplikacji internetowej. Oczywiście chcę to zrobić tylko raz i w jednym miejscu, więc mogę to zmienić w razie potrzeby. W zwykłych serwletach po prostu wstawiłbym mój kod inicjujący do metody init() serwletu, ale nie masz do niego dostępu z serwletem Jersey. Więc gdzie mam to zrobić? Jak działają nasi słuchacze w powyższym linku?Zainicjuj bazę danych w sieci web startupów Jersey

Odpowiedz

37

Wszystko, co musisz zrobić, to napisać klasę Java, która implementuje interfejs ServletContextListener. Ta klasa musi implementować dwie metody contextInitialized method, która jest wywoływana, gdy aplikacja internetowa jest po raz pierwszy tworzona i contextDestroyed, która zostanie wywołana, gdy zostanie zniszczona. Zasób, który ma zostać zainicjowany, zostanie utworzony w metodzie contextInitialized i zasobu zwolnionego w klasie contextDestroyed. Aplikacja musi być skonfigurowana tak, aby wywoływała tę klasę po wdrożeniu, co jest wykonywane w pliku deskryptora web.xml.

public class ServletContextClass implements ServletContextListener 
    { 
      public static Connection con; 

    public void contextInitialized(ServletContextEvent arg0) 
    { 
     con.getInstance();  
    }//end contextInitialized method 


    public void contextDestroyed(ServletContextEvent arg0) 
    { 
     con.close();  
    }//end constextDestroyed method 

} 

konfiguracja web.xml

<listener> 
    <listener-class>com.nameofpackage.ServletContextClass</listener-class> 
</listener> 

To teraz pozwolę aplikacja wywołać ServletContextClass gdy aplikacja jest wdrażany i instancji połączenia lub innego zasobu miejsce w metodzie contextInitialized co jakiś podobny do co robi metoda init Servlet.

3

Ponieważ nie trzeba modyfikować samej koszulki w czasie uruchamiania, prawdopodobnie nie należy używać AbstractResourceModelListener. To, czego chcesz, to javax.servlet.ServletContextListener. Możesz dodać elementy listener do swojego pliku web.xml w ten sam sposób, w jaki dodajesz elementy serwletu. ServletContextListener zostanie wywołany, kiedy twój kontekst (aplikacja internetowa) zostanie najpierw utworzony i przed uruchomieniem serwletu Jersey. Możesz zrobić, co potrzebujesz, do bazy danych w tym słuchaczu i będzie ona gotowa po rozpoczęciu korzystania z Jersey.

Powiązane problemy