2011-12-24 48 views
1

私はStruts2の対Struts1の違いを通過、この点に出くわした:なぜStruts2のActionクラスにシングルトンの概念がないのですか?

  • のStruts 1つのアクションはシングルトンであり、唯一のすべての要求を処理するために、クラスの1つのインスタンスが存在しますので、スレッドセーフでなければなりませんそのアクションのために。

  • Struts 2アクションオブジェクトはリクエストごとにインスタンス化されるため、スレッドセーフの問題はありません。

ここで私の質問です:Struts2では、なぜActionクラスのためのシングルトンの概念はありませんか?不必要に、すべての要求に対してより多くのオブジェクト作成が存在するため、私が考えるように。 私が間違っている場合は私を修正してください。

答えて

2

Javaではオブジェクトの作成が非常に高速です。スレッドセーフなアクションクラス(およびサーブレットなど)をプログラミングすることは、刺激的でエラーを起こしやすい。

すべての場合と同様、トレードオフがあります。

+0

ありがとう、すべてにハッピーとメリークリスマス。 – Pawan

+0

サーブレットはスレッドセーフなアクションクラスに似ていますか? –

+0

@NagappaLM質問が分かりません。サーブレットはシングルトンであり、Struts 2アクションはシングルトンではありません。 –

0

新しいインスタンスを作成するのではなく、新しいオブジェクトを作成するjvmは、そのオブジェクトのインスタンスを作成します。したがって、特定のオブジェクトに対して要求が何回行われても問題ありません...インスタンスがもっと多い場合でも、ハングアップしません...