选择嵌入式EJB 3.x容器以在Tomcat上运行Java EE 5应用程序

top*_*hef 5 embedded ejb jms java-ee openejb

如果我的问题听起来过于通用,我很抱歉 - 我正在做自己的所有初步研究,但没有什么可以替代真实的经验......

我的目标是将遗留Java EE应用程序(pre-EJB 3.x)移植到带有嵌入式EJB容器的Tomcat.我目前的选择如下:

  • JBoss Embeddable EJB
  • Apache OpenEJB
  • OW2 Consortium EasyBeans
  • 还要别的吗?

我期望使用JMS(使用MDB),会话bean(有状态和无状态),JPA,我真的很高兴将JSF与Seam一起使用.

现在,根据上面的选择,使用一个或另一个嵌入式EJB提供程序有什么优势吗?

top*_*hef 6

下面是我自己的作业结果 - 希望有人发现嵌入式EJB提供程序的这种分析有助于决定是否使用哪个容器.

我选择Apache OpenEJB,因为它提供了丰富的功能,部分支持EJB 3.1,并且似乎是最活跃和最全面的产品.

像往常一样,哪种产品最适合您,实际上取决于您的实际需求,目标和环境.

嵌入式JBoss

  • 许可证:LGPL
  • Java:JDK 5.0
  • Tomcat集成:是的,修改了server.xml
  • Tomcat版本:5.0及以上(?)
  • 部署到Tomcat:嵌入式战争
  • 功能列表:JNDI(本地),JBoss TS,JBoss消息传递,JCA,JNDI,EJB,JPA,本地TX数据源/连接池,EJB安全JNDI配置:通过在Tomcat的JNDI实例化之上分层自身来覆盖Tomcat的JNDI实现; Tomcat JNDI是只读的
  • 部署类型:仅限JAR
  • 管理支持:没有
  • 支持:有限,构建于JBoss Microcontainer之上,是JBoss 5.0的核心,支持Tomcat上的Seam选项
  • JMS Provider:与JBoss 5.x相同的配置文件.JMS在hsqldb-persistence-service.xml中配置,可以调整它以与其他数据库一起使用
  • XA连接池:没有
  • EJB计时器服务:没有
  • *持久性提供者:*Hibernate
  • 限制:没有远程JMS; 仅限本地接口; 仅限本地的JBoss JNDI实现
  • 文件:有限
  • EJB 3.1:没有

Apache OpenEJB 3.1

  • 许可证: Apache许可证
  • *Java:*JDK 5.0或6.0
  • Tomcat集成:是的,修改了启动shell脚本
  • *Tomcat版本:*Tomcat 6.x或5.5
  • *部署到Tomcat:*war文件
  • *功能列表:*EJB 3.0和3.1,JTA,JAX-WS,JMS,J2EE连接器,JPA,JNDI.OpenEJB使用其他几个开源框架(如OpenJPA)来提供JPA和CMP持久性,ActiveMQ用于JMS/MDB,Apache CXF用于JAX-WS功能.
  • *JNDI配置:*灵活的JNDI命名模式
  • *部署类型:*折叠EAR(战争),JAR
  • 管理支持: ActiveMQ JMX mbeans
  • *支持:*社区支持,邮件列表和论坛,Apache Geronimo的EJB容器
  • *JMS提供商:*ActiveMQ
  • *XA连接池:*是
  • *EJB计时器服务:*是的
  • *持久性提供者:*OpenJPA,Hibernate
  • *限制:*OpenEJB使用OpenJPA提供JPA和CMP持久性,而OpenJPA目前需要JavaAgent才能正常运行.
  • *文件:*有限但比其他人更好
  • *EJB 3.1:*部分

EasyBeans

  • *许可:*LGPL
  • *Java:*JDK 5.0或6.0
  • Tomcat集成:是的
  • *Tomcat版本:*Tomcat 6.x或5.5
  • *部署到Tomcat:*war文件
  • *功能列表:*EJB 3.0,JAX-WS,OSGi支持
  • JNDI配置:
  • *部署类型:*JAR
  • 管理支持:
  • *支持:*社区支持和专业支持,邮件列表,JIRA,JOnAS应用服务器的EJB容器
  • JMS提供者:
  • XA连接池:
  • *EJB计时器服务:*是的
  • *持久性提供者:*OpenJPA,Hibernate,TopLink,EclipseLink
  • 限制:
  • *文档:*限制
  • EJB 3.1:没有