2010-11-24 13 views
4

私のServletクラスがシングルトン(マネージャークラスなど)を使用する場合は、それをどこに保存する必要がありますか?サーブレット自体、またはServletContextにありますか?サーブレットのシングルトンをどこに保存しますか?

サーブレットコンテナは、Servletクラスの複数のインスタンスを作成してリクエストを処理できますか?

答えて

7

only one instance of a Servletがあることは確かです。でも、それでもServletContextに保存する方が良いでしょう。したがって、他のサーブレットからもアクセスできます。

+1

実際に 'ServletContextListener'を使用してマネージャクラスを準備/作成し、アプリケーションスコープ(' ServletContext')に入れることができます。たとえば[この質問](http://stackoverflow.com/questions/3468150/using-init-servlet)も参照してください。問題のマネージャークラスは必ずしもシングルトンである必要はありません。ただ1つのインスタンスを作成し、アプリケーションスコープに一度入れてください。それで全部です。 – BalusC

1

基本的にどこにでも保存できます。セッション、アプリケーションコンテキスト、またはサーブレットそのもののフィールドとして使用できます。マルチスレッド環境を扱っているため、サーブレットは一度に複数回呼び出されるため、必ず不変にしてください。

を編集してください:Bozhoが指摘しているように、セッションを使用するのは最適ではない可能性があるため、シングルトンをセッションに入れる前にニーズを評価する必要があります。

+0

セッションに参加しない方が良い – Bozho

関連する問題