2012-10-13 12 views
13

thisを読みましたが、どのように動作するのかよくわかりません。 Webアプリケーションの起動時にプロパティファイルを読み込み、接続プールを設定したいとします。明らかに私はこれを一度だけ、一箇所でやりたいので、必要ならば変更することができます。通常のサーブレットでは、初期化コードをサーブレットのinit()メソッドに置くだけですが、Jerseyサーブレットで初期化コードにアクセスする必要はありません。だから私はそれをやりますか?上のリンクのリスナーはどのように機能しますか?Jersey webappの起動時にデータベースを初期化する

答えて

37

あなたがする必要があることは、ServletContextListenerインターフェイスを実装するJavaクラスを書くことだけです。このクラスは、Webアプリケーションが最初に作成されたときに呼び出される2つのメソッドcontextInitializedメソッドと、破棄されるときに呼び出されるcontextDestroyedメソッドを実装する必要があります。初期化するリソースは、contextInitializedメソッドでインスタンス化され、リソースはcontextDestroyedクラスで解放されます。アプリケーションは、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 

} 

これはこれで、アプリケーションがデプロイされるとき、アプリケーションがServletContextClassを呼ぼうとするいくつかのものを同様のcontextInitializedメソッドでの接続やその他のリソースの場所をインスタンス化します

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

web.xml構成サーブレットのinitメソッドは何をしますか?

3

起動時にJersey自体を変更する必要がないので、おそらくAbstractResourceModelListenerは必要ありません。あなたが欲しいのはjavax.servlet.ServletContextListenerです。サーブレット要素を追加するのと同じ方法で、listener要素をweb.xmlに追加できます。コンテキスト(Webアプリケーション)が最初に作成され、Jerseyサーブレットが開始される前に、ServletContextListenerが呼び出されます。このリスナーのデータベースに必要なものはすべて実行でき、Jerseyの使用を開始すると準備が整います。

関連する問題