2012-03-13 14 views
0

ServletContextListenerを使用せずに、Restlet Webアプリケーションにスタートアップ初期化コードを埋め込むことはできますか?Restletアプリケーションに(起動)初期化コードを配置するのに最も適切な場所は何ですか?

私はJBoss/TomcatのようなWebサーバーに私のRestletを透過的に配備し、Listenerの初期化ロジックを取り除きたいと思っています。これは、Webサーバーの外に簡単に展開できるように、それでも、重い生産用ではないが、それでも価値がある。

org.restlet.Componentのコンストラクタに挿入すると、1回だけ実行されることを確認しますか?それはそれを置くための適切な場所ですか?

public class MyComponent extends org.restlet.Component 
{ 
    public MyComponent() //constructor 
    { 
    //insert initialization code here that should run ONLY ONCE? 

    this.getDefaultHost().attach(new MyApplication()); // MyApplication extends org.restlet.Application 
    } 
} 

私は、ドキュメントを経て、また同様のポストを見て:RESTlet startup initialization deprecated?が、私はまだそれが正しい方法だかはわかりません。私は可能な限りリスナーへの依存を取り除きたいと思います。

答えて

1

コンポーネントのコンストラクタを使用すると、初期化処理に適した場所であり、このような処理が1回だけ実行されることが保証されます。

コンポーネントのメソッドの開始/停止は、あなたのケースでも使用できることがわかります。スーパーメソッドを呼び出すことを忘れないでください。これらのメソッドは、一般的に1回行われるコンポーネントの起動/停止時に呼び出されます。

希望します。 Thierry

+0

サーブレットコンテナにデプロイするときに 'start/stop'を明示的に呼び出す必要はないと思いますので、コンストラクタが最適な場所になると思います。確認していただいてありがとうございます!感謝します。 – PhD

関連する問題