我已经在我的 JSF 应用程序的支持 bean 中设置了一个 JavaMail 会话,结果证明发送电子邮件相当容易。但是,根据网络条件,它可能需要相当长的时间。Transport.send()方法将阻塞调用线程,直到发送电子邮件或协议以某种方式失败。
我的问题是:考虑到许多用户同时访问服务器的可能性,在 JSF 支持 bean 中可以这样做吗?
我可以创建一个应用程序范围的工作线程,该线程将使用 BlockingQueue 来处理后台的所有电子邮件。这是正确的做法吗?
我已经在我的 JSF 应用程序的支持 bean 中设置了一个 JavaMail 会话,结果证明发送电子邮件相当容易。但是,根据网络条件,它可能需要相当长的时间。Transport.send()方法将阻塞调用线程,直到发送电子邮件或协议以某种方式失败。
我的问题是:考虑到许多用户同时访问服务器的可能性,在 JSF 支持 bean 中可以这样做吗?
我可以创建一个应用程序范围的工作线程,该线程将使用 BlockingQueue 来处理后台的所有电子邮件。这是正确的做法吗?
一种可能是让 ejb 产生 jms-messages,一个 mdb 异步消费消息并调用 Transport.send()
看这个例子: http: //faeddalberto.blogspot.com/2011/03/sending-email-with-ejb-3-mdb-message.html
是的,最好将任何使用网络的东西(因此可能会意外延迟)移动到单独的线程中。