spring と hibernate と struts を使用する Web アプリケーションがあります (Tomcat で実行されます)。
呼び出しシーケンスは次のようなものです...
Struts アクションは、Spring サービス Bean を呼び出し、Spring DAO Bean を呼び出します。DAO 実装は Hibernate 実装です。
問題は 、すべての春の Bean が同じスレッドで実行されるかどうかです。ThreadLocal に何かを保存して、別の Bean で取得できますか?
これは Stateless Session Bean では機能しないと確信しています。EJB コンテナは、セッション Bean への呼び出しごとに新しいスレッドを生成できます (または生成します)。
春のコンテナは同じことをしますか?つまり、すべての Bean を同じスレッドで実行しますか?
JUnit テストを試したとき、テスト ケースと 2 つの Bean で Thread.currentThread().getId() を介して同じ ID を取得しました。
それとも挙動が予測不能?または、Tomcat サーバーで実行すると変更されますか?
明確化 2 つのスレッド間でデータを交換したくありません。データを ThreadLocal に入れ、コール スタック内のすべての Bean からデータを取得できるようにしたいと考えています。これは、すべての Bean が同じスレッドにある場合にのみ機能します