5

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

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

  • JBoss 可嵌入 EJB
  • Apache OpenEJB
  • OW2 联盟 EasyBeans
  • 还要别的吗?

我期待使用 JMS(带有 MDB)、会话 bean(有状态和无状态)、JPA,我对使用带有 Seam 的 JSF 感到非常兴奋。

现在,鉴于上述选择,使用一个或另一个嵌入式 EJB 提供程序有什么优势吗?

4

1 回答 1

6

以下是我自己的作业结果——希望有人发现对嵌入式 EJB 提供程序的分析有助于决定是否使用以及使用哪个容器。

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

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

嵌入式 JBoss

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

Apache OpenEJB 3.1

  • 许可证: 阿帕奇许可证
  • *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 使用其他几个开源框架,例如提供 JPA 和 CMP 持久性的 OpenJPA、用于 JMS/MDB 的 ActiveMQ 和用于 JAX-WS 功能的 Apache CXF。
  • *JNDI 配置:*灵活的 JNDI 命名模式
  • *部署类型:*Collapsed EAR (war), JAR
  • 管理支持: ActiveMQ JMX mbeans
  • *支持:*社区支持、邮件列表和论坛、Apache Geronimo 的 EJB 容器
  • *JMS 提供者:*ActiveMQ
  • *XA 连接池:*是
  • *EJB 定时器服务:*是
  • *持久性提供者:*OpenJPA、Hibernate
  • *限制:*OpenEJB 使用 OpenJPA 提供 JPA 和 CMP 持久性,OpenJPA 当前需要 JavaAgent 才能正常工作。
  • *文档:*有限但比其他更好
  • *EJB 3.1:*部分

易豆

  • *许可证:*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:
于 2009-03-01T07:15:36.347 回答