JSPにセッションBeanがあり、そのBeanで、10秒間スリープして再度実行するスレッドを開始しています。私が直面している問題は、ログアウトした後もこのスレッドが実行され続けることです。
誰かがそれが実行されないようにする方法を手伝ってもらえますか?
JSPにセッションBeanがあり、そのBeanで、10秒間スリープして再度実行するスレッドを開始しています。私が直面している問題は、ログアウトした後もこのスレッドが実行され続けることです。
誰かがそれが実行されないようにする方法を手伝ってもらえますか?
EJB 仕様によれば、 EJBからスレッドを開始することは違法です。参照。セクション 21.2.2 (593 ページ):
「エンタープライズ Bean は、スレッドの管理を試みてはなりません。エンタープライズ Bean は、スレッドの開始、停止、一時停止、または再開を試みたり、スレッドの優先度や名前を変更したりしてはなりません。エンタープライズ Bean は、スレッド グループの管理を試みてはなりません。」
EJB を使用した別のソリューションがあるか、別のフレームワークを使用する必要がある場合があります。これは、正確に何を達成しようとしているかによって異なります。
多くのユーザーがいる場合、リソース (メモリと CPU) が不足する可能性があるため、サーブレットからスレッドを開始することはお勧めできません。特にデータベース アクセスでは奇妙な動作が発生します。
10 秒ごとにトリガーされ、セッション Bean がサブスクライブされたリストを処理する Quartz タイマー (http://quartz-scheduler.org) を追加します。ユーザーのログアウト時に、Bean をサービスから再度サブスクライブ解除します。