1

JSF アプリケーションのバッキング Bean に JavaMail セッションを設定しましたが、電子メールの送信は非常に簡単であることがわかりました。ただし、ネットワークの状況によっては、かなりの時間がかかる場合があります。Transport.send()メソッドは、電子メールが送信されるか、プロトコルが何らかの形で失敗するまで、呼び出しスレッドをブロックします。

私の質問は、多くのユーザーが同時にサーバーにアクセスする可能性を考慮して、JSF バッキング Bean でこれを行っても問題ないでしょうか?

アプリケーション スコープのワーカー スレッドを作成できます。このワーカー スレッドは、BlockingQueue から離れて動作し、すべての電子メールをバックグラウンドで処理します。これは正しいことですか?

4

2 に答える 2

2

可能性としては、jms-messages を生成する ejb と、メッセージを非同期的に消費して Transport.send() を呼び出す mdb を用意することです。

この例を見てください: http://faeddalberto.blogspot.com/2011/03/sending-email-with-ejb-3-mdb-message.html

于 2012-10-19T07:22:14.280 に答える
1

はい、ネットワークを使用するもの (したがって予期せず遅延する可能性があるもの) はすべて別のスレッドに移動することをお勧めします。

于 2012-10-19T06:31:31.357 に答える