1

我已经在我的 JSF 应用程序的支持 bean 中设置了一个 JavaMail 会话,结果证明发送电子邮件相当容易。但是,根据网络条件,它可能需要相当长的时间。Transport.send()方法将阻塞调用线程,直到发送电子邮件或协议以某种方式失败。

我的问题是:考虑到许多用户同时访问服务器的可能性,在 JSF 支持 bean 中可以这样做吗?

我可以创建一个应用程序范围的工作线程,该线程将使用 BlockingQueue 来处理后台的所有电子邮件。这是正确的做法吗?

4

2 回答 2

2

一种可能是让 ejb 产生 jms-messages,一个 mdb 异步消费消息并调用 Transport.send()

看这个例子: 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 回答