在Wildfly Linux上从库中调用@Asynchronous方法

时间:2015-02-03 10:18:07

标签: linux asynchronous ejb wildfly-8

我在应用小型图书馆使用wildfly电子邮件资源发送电子邮件时遇到了一些问题 带库的想法是提供单例提供异步方法来发送电子邮件。  简短的服务看起来像

@Singleton
public class MailService {

    private static final String MIME_TYPE = "text/html; charset=utf-8";
    private static final Logger LOG = Logger.getLogger(MailService.class.getName());

    @Inject
    private Session session;

    @Asynchronous
    public void sendEmail(final EmailModel email) {
        try {
            MimeMessage message = new MimeMessage(session);
            if (email.normalRecipientsListIsEmpty()) {
                throw new RuntimeException("need destination address.");
            }
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email.getNormalRecipients()));
            message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(email.getCCRecipients()));
            message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(email.getBCCRecipients()));

            message.setSubject(email.getSubject());

            message.setContent(email.getContent(), MIME_TYPE);
            Transport.send(message);
        } catch (MessagingException e) {
            throw new RuntimeException("Failed to sen email.", e);
        }

    }

}

通过@Produces服务字段中的Stateless注释在项目中生成注入会话。 虽然在Windows上一切正常,但是如果部署在运行在linux上的wildfly上,则会出现超时异常消息,例如"无法获取5000milis内的方法锁定" 当我将整个代码移动到项目时,没有任何变化,一切都开始完美。

我的问题是,为什么会发生这种情况?在某处或在配置中实现是否存在差异?我该如何解决这个问题并将代码移回库中,以便在其他项目中重用它?

0 个答案:

没有答案