2011-11-09 7 views
1

struts 1.xのアクションクラスは、本質的にスレッドセーフではありません。これは、strutsがアクションクラスをキャッシュし、それを他のリクエストにも使用するためです。毎回、struts 1.xアクションクラスの新しいインスタンスを作成できますか?

毎回アクションクラスの新しいインスタンスが作成されるような方法で、struts 1.xアクションクラスを構成する方法はありますか?

可能であれば、それを行うことには何か欠点がありますか?

答えて

3

を使用して見て可能性があり、もちろん答えははい:あなたはStruts 1の完全なソースを手に入れ、それを意図していないものにねじることができます。

する必要がありますか?ほとんど間違いない。あなたがこれを引き受けることを決めた場合は、RequestProcessor.processActionCreateから始めてください。

私はブラッドと一緒ですが、やや強くなります。あなたがしようとしていることは悪い考えです。フレームワークの使用を想定して、セッションコンテキスト、アプリケーションコンテキスト、スレッドローカル、同期などを使用します。

フレームワークの意図外に移動することで、懸念すべき技術的リスクが発生します。 Struts 1のNothingは、フレームワークの構築方法ではないため、リクエストごとのアクションでテストされました。それは動作する可能性があります。それはすばらしく失敗するかもしれません。 のようになります。のようになります。しばらくの間。それが起こらない限り、あなたは怒っている。

IMO設計したフレームワークを使用する方がより効果的です。どのような問題を解決しようとしていますか?変更されたフレームワークの機能を検証するには、少なくとも完全なリリースサイクルを必要としない、より良いソリューションが考えられます。

0

しないでください。あなたが言ったように、スレッドセーフではありません。

ユーザーの状態を保持する必要がある場合は、データベースのデータとユーザーのHTTP_SESSIONのルックアップキーの値を格納します。より良いパフォーマンスが必要な場合は、キャッシング戦略を導入することができます。

あなただけの各単一の要求のためにいくつかのデータを保存しようとしている、としたくないか、HTTP_SESSIONを使用できない場合、あなたは最終的にThreadLocal

+0

うん。しかし、私が尋ねようとしているのは、毎回新しいインスタンスを作成する方法です。アクションクラスの同じインスタンスが再利用されるため、スレッドセーフではありません。私はその問題を解消するために悩んでいます。 – vinoth

+0

あなたが私の答えが有効であると感じなかったことは残念ですが、このサイトであなたの評判を得るのは簡単ではありません... – Brad

関連する問題