14

私はこれを読みましたが、それがどのように機能するのかよくわかりません。Webアプリケーションの起動時に、プロパティファイルをロードし、接続プールを設定したいと思います。もちろん、これは1回だけ、1つの場所で実行したいので、必要に応じて変更できます。通常のサーブレットでは、初期化コードをサーブレットのinit()メソッドに入れるだけですが、Jerseyサーブレットではアクセスできません。だから私はどこでそれをしますか?上記のリンクのリスナーはどのように機能しますか?

4

2 に答える 2

40

あなたがする必要があるのは、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
}

web.xml構成

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

これにより、アプリケーションがデプロイされたときにアプリケーションがServletContextClassを呼び出し、サーブレットのinitメソッドと同様のコンテキスト初期化メソッド内の接続またはその他のリソースの場所をインスタンス化できるようになります。

于 2012-10-13T18:48:01.357 に答える
3

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

于 2012-10-13T18:30:25.787 に答える