1

愚かな質問があります。私はJava Webアプリケーションとジャージーとの残りのインターフェースを持っています。コードの初期化ブロックはどこに置くことができますか?

たとえば、メソッド「createInstance」を持つシングルトンがあります。残りのサーバーが実行されているときに「createInstance」メソッドを実行するにはどうすればよいですか。初期化のものを配置する「Main()」のようなものはありますか?

私はプロジェクトにもサーブレットを持っていますが、ユーザーがWebページを開いたときにそれらが実行されています。

初期化コードを配置する場所が存在するかどうかを知りたいです。

4

3 に答える 3

6

最後に私は解決策を見つけました:

初期化コードを実行するために、「ServletContextListener」の実装を作成できます。

このように私はこれを行います:

package foopackage;

...
public class ServletContextClass implements ServletContextListener
{  

    @Override
    public void contextInitialized(ServletContextEvent arg0) 
    {        
            ...     
    }


    @Override
    public void contextDestroyed(ServletContextEvent arg0) 
    {
           ...
    }
}

アプリケーションサーバーの初期化後にこのリスナーを使用するには、これをweb.xmlに配置する必要があります。

 <listener>
     <listener-class>foopackage.ServletContextClass</listener- class>
 </listener>
于 2013-01-28T11:43:14.837 に答える
0

「オブジェクトの初期化」の意味がまったく明確ではありません。明らかな答えは、必要な場所でオブジェクトを初期化することだと思います。

シングルトンを作成する必要がある場合は、静的フィールドまたは列挙型を使用して、Java の他のシングルトンと同じように作成します。そして、REST メソッドの 1 つの中でそのインスタンスを取得します。例えば

@GET
@Produces("application/xml")
public String getData() {
   Singleton singleton = Singleton.getInstance();
   String result = singleton.domSomething();
   return result;
}

リソース (Web サービス) をシングルトンにしたい場合は、javax.ws.rs.core.Application を拡張することで実現できます。次に、使用している JAX-RS 実装とサーバーに応じて、このアプリケーション定義を使用して REST サービスを初期化するには、web.xml を構成する必要がある場合があります。このクラスにはgetSingletons()、リソースのシングルトンを提供するために拡張できるという名前のメソッドがあります。

于 2013-01-10T15:42:21.440 に答える
-1

残りのリソースは、他のクラスとまったく同じです。
コンストラクターを使用して、オブジェクトを初期化できます。

于 2013-01-10T15:48:29.150 に答える