2012-10-13 10 views
13

Ho letto this ma non capisco come funziona. Voglio caricare un file delle proprietà e configurare il mio pool di connessioni all'avvio della mia applicazione web. Ovviamente voglio farlo solo una volta e in un posto solo così posso cambiarlo se necessario. Con servlet regolari, inserisco semplicemente il mio codice di inizializzazione nel metodo init() del servlet, ma non si ha accesso ad esso con un servlet di Jersey. Quindi dove lo faccio? Come funzionano gli ascoltatori nel link qui sopra?Inizializza database su avvio webapp Jersey

risposta

37

Tutto ciò che dovete fare è scrivere una classe java che implementa l'interfaccia ServletContextListener. Questa classe deve implementare il metodo contextInitialized di due metodi che viene chiamato quando l'applicazione Web viene creata per la prima volta e contextDestroyed che verrà chiamata quando viene distrutta. La risorsa che si desidera inizializzare verrà creata un'istanza nel contestoMetodo inizializzato e la risorsa liberata nella classe contextDestroyed. L'applicazione deve essere configurata per chiamare questa classe quando viene distribuita, che viene eseguita nel file descrittore 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 

} 

La configurazione web.xml

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

Questo ora permetterà l'applicazione chiamare il ServletContextClass quando l'applicazione viene distribuita ed un'istanza della connessione o in qualsiasi altro luogo risorsa nel metodo contextInitialized qualche cosa simile a cosa fa il metodo init di Servlet.

3

Poiché non è necessario modificare Jersey al momento dell'avvio, probabilmente non si desidera un AbstractResourceModelListener. Quello che vuoi è un javax.servlet.ServletContextListener. Puoi aggiungere elementi listener al tuo web.xml nello stesso modo in cui aggiungi elementi servlet. Il ServletContextListener verrà chiamato quando il contesto (applicazione web) viene creato per la prima volta e prima dell'avvio del servlet di Jersey. Puoi fare tutto ciò che è necessario al database in questo listener e sarà pronto quando inizierai a utilizzare Jersey.

Problemi correlati