2011-09-16 14 views
1

を開始している私は以前この質問をした: Jersey app-run initialization code on startup to initialize applicationジャージー初期化コードは、完全に

は、サーバーが完全にWebアプリケーションを初期化した後に、この初期化コードを実行する方法はありますか?私はlogin callを一度実行する前にTomcatが完全に開始したWebアプリケーションが必要であるという点でcatch-22の問題にぶつかっていますか?

+0

あなたのデザインを考え直さなければならないようです... –

答えて

1

いくつかの考慮事項があります。まず、Jerseyはサーブレットとして実装され、ロードされる方法です。サーブレットの起動をサーブレットコンテキストの起動から切り離す最も簡単な方法は、起動時にサーブレットを起動しないことです。これを実現するには、web.xmlのサーブレット記述子からload-on-startup要素を省略します。非ポジティブに設定することも有効です。

の場合、起動時にサーブレットをロードする必要がありますが、それでもデカップリングしたい場合は、おそらくカスタムコードを書く必要があります。他の方法は考えられませんでした。いくつかのタイプのリスナ(ServletContextListenerまたはSpring ApplicationListener)を使用して、アプリケーションの設定方法に応じて、JerseyサーブレットをHTTPリクエストすることによって初期化する新しいスレッドを開始します。それは少し汚れているように感じますが、私が言ったように、それは私と私のチームが思い付くことができる唯一のものです。

+0

私はServletFilterでそれをやってしまい、最初のリクエストでコールし、他のコールではコールしませんでした。 – Vijay

関連する問題