使用JavaMail的Java EE 6 Application Server for Web Profile

时间:2012-03-07 17:09:14

标签: java java-ee web-applications java-ee-6 application-server

我有一个Java EE Web应用程序,它使用Java EE 6 Web配置文件+ EJB Timer服务和JavaMail中的功能。我目前正在开发期间使用GlassFish 3.1.2完整配置文件,但我想研究替代方案,因为:

  • GlassFish 3.1.2中似乎有一个bug with multipart forms,而GlassFish 3.1.1还有其他问题在3.1.2中修复了。 (赶上22 ......)该错误由票证中的jar修复。
  • 对于支持“web profile”的应用程序服务器而言,似乎有比“完整配置文件”更多的选项,前者应该更加轻量级。
  • 我想选择最佳的部署选项

我目前正在使用GlassFish的嵌入式应用程序服务器功能进行测试,因此需要为任何替代方案提供类似的工具。在最坏的情况下,我可以忍受格式化为嵌入式自动化测试的GlassFish。

是否可以将JavaMail和EJB Timer Service实现模块“添加”到仅实现Web配置文件的应用程序服务器?它运作良好吗?如果无法做到这一点,是否有使用JavaMail和EJB Timer Service的替代方法?

您可以推荐哪些符合我要求的应用服务器?

最后,我考虑使用EJB的“异步调用”功能,它不是EJB lite的一部分。如果我理解正确,在Java EE容器中运行时手动启动线程是违法的。在这种情况下,如何在Java EE Web Profile中启动异步操作?

我对整个Java EE生态系统和术语仍然比较陌生,所以请不要犹豫,让我澄清我问题的任何部分。

支持文档

编辑1

根据Apache TomEE doc,TomEE,TomEE +和OpenEJB符合该法案。

编辑2

基于the AS 7.1 release notesthis theadthis issue JBoss AS 7.1.0似乎实现了我需要的所有功能。

3 个答案:

答案 0 :(得分:4)

首先,我从未使用过GlassFish,因此我无法向您提供任何相关信息。

我不确定您的应用程序是否正在构建真正的生产环境,但jboss 7.1在遇到麻烦时还没有任何官方商业支持。

针对JDK 6优化的Jboss 5.1通过red hat提供商业支持。

话虽这么说,jboss实例可以完全配置并且非常灵活。这意味着您可以从“网络”开始。配置文件和添加/删除您不需要的服务。 (始终建议在生产环境中删除未使用的服务。)

这是一个wiki,它提供了有关在jboss 5中减轻jboss配置文件的信息。它指示了删除服务所需的所有步骤。 减肥操作也可以颠倒,因此您可以将任何需要的内容添加到特定的个人资料中。

所以基本上有两种方法:

  • 首先使用'默认'或者'所有'并开始删除应用程序不需要的服务
  • 从' minimal'开始或者'网络'配置文件并开始添加您的应用程序所缺少的服务。您从具有它的配置文件中复制服务。 (我个人更喜欢这种方法)

添加和删除服务可能是一种反复试验的工作。您需要在互联网上搜索正在尝试添加或删除的服务的正确指南。 (提示,请始终对AS提供的配置文件副本执行操作并记录每一步。如果您执行的操作看起来不可逆转,则可以重新开始。)

我希望这有任何帮助。

答案 1 :(得分:3)

汤姆说得对,JBoss AS7还没有商业支持。然而,它即将到来 - AS7正在被生产为EAP 6(令人讨厌!),并且是going into beta in a few days。社区版本已经出现了几个月,虽然它确实有很多粗糙的边缘,但它基本上运作良好。

AS7具有比以前版本更加模块化的架构。这个想法是你只加载你需要的模块,这意味着尽管它是一个完整的配置文件实现(从7.1开始),如果你只使用web配置文件功能,你只需支付Web配置文件实现的运行时成本。你仍然有你不需要坐在磁盘上的位,但磁盘很便宜(7.1.0是125 MB全部 - 几乎不是很大)。

我担心我没有使用任何其他完全成熟的应用服务器(至少在过去十年中没有),因此无法评论它们。我相信Geronimo支持完整的EE6,所以如果你不需要商业支持,那可能值得一看。

我花了一些时间使用基于Tomcat的设置。是的,您可以为Tomcat添加足够的额外内容来创建一种基本上是应用程序服务器的“仿生Tomcat”,但是自己动手做是你真正不应该做的工作 - 纯粹的浪费。我没有用过TomEE。一般来说,我不是Tomcat的忠实粉丝,我不得不承认。

答案 2 :(得分:2)

正如您所说,OpenEJB / TomEE非常适合该法案。根据您提到的内容,以下是您可能会喜欢的一些示例:

要在测试用例中配置JavaMail资源,请执行以下操作:

Properties p = new Properties();
p.setProperty("superbizMail", "new://Resource?type=javax.mail.Session");
p.setProperty("superbizMail.mail.smtp.host", "mail.superbiz.org");
p.setProperty("superbizMail.mail.smtp.port", "25");
p.setProperty("superbizMail.mail.transport.protocol", "smtp");
p.setProperty("superbizMail.mail.smtp.auth", "true");
p.setProperty("superbizMail.mail.smtp.user", "someuser");
p.setProperty("superbizMail.password", "mypassword");

EJBContainer.createEJBContainer(p);

然后通过以下方法将JavaMail会话注入EJB:

@Resource
private Session superbizMail;

幕后制作'superbizMail'。对所有属性进行削减,并将生成的属性集传递给javax.mail.Session.getDefaultInstance(Properties props)。结果Session是注入@Resource引用

的内容