HDa*_*ave 12 java enterprise tomcat javabeans ejb-3.0
在Tomcat FAQ上,它说:"Tomcat不是EJB服务器.Tomcat不是一个完整的J2EE服务器."
但如果我:
那我不是有效地拥有一个Java EE应用服务器吗?然后不是我的bean EJB?还是有其他一些定义特征?
什么是符合Java EE的应用服务器为您提供的,您不能轻易/轻松地从Tomcat获取某些第三方子系统?
EJB是符合javax.ejbAPI的JavaEE组件.
JavaEE是API的集合,您不需要使用它们.
Tomcat是一个"部分"JavaEE服务器,因为它只实现了一些JavaEE API,例如Servlets和JNDI.它没有实现例如EJB和JMS,因此它不是完整的JavaEE实现.
如果您添加了一些额外的部分(例如OpenEJB,HornetQ),您将添加缺少的部分,并最终得到一个完整的JavaEE服务器.但开箱即用,Tomcat不是那样,并不会尝试成为.
但如果我添加 (...) 那么我是否实际上就拥有了一个 Java EE 应用服务器?那么我的 Bean 不是 EJB 吗?或者还有其他一些决定性特征吗?
不,您没有 Java EE 应用程序服务器,成熟的 Java EE 应用程序服务器不仅仅是 Tomcat + Spring + 独立的事务管理器。即使添加 JMS 提供程序和 EJB 容器,您仍然不会拥有 Java EE 服务器。在我看来,所有部分之间的粘合很重要,并且是 Java EE 容器附加值的一部分。
关于 EJB,EJB 规范不仅仅是 JPA,还包括会话 Bean 和消息驱动 Bean(实际上,我并不真正将 JPA 实体视为 EJB,即使由于历史原因 JPA 是 Java EE 5 中 EJB 3.0 规范的一部分) - 在 Java EE 6 中不再如此,JPA 2.0 和 EJB 3.1 是单独的规范)。我还应该提到的是,带有注释的 Spring bean@Transactional并不等同于会话 Bean。Java EE 容器可以使用会话 Bean 执行更多操作(见下文)。虽然您可能不需要它们,但它们仍然不是严格等效的。
最后一件事,Java EE 容器实现了一个标准,而 Spring 容器没有,它是专有的。
兼容 Java EE 的应用程序服务器为您提供了哪些功能,而您无法通过某些第 3 方子系统轻松地从 Tomcat 获得这些功能?
正如我所说,我认为“粘合剂”是附加值的一部分,对整体的坚固性有很大贡献。然后,ewernli的回答很好地强调了实现的困难。我只想补充一下:
是的,一个好的 Java EE 服务器会做一些非常巧妙的事情来提高容错能力(连接池集群、JNDI 树、JMS 目标、使用幂等 bean 自动重试、智能 EJB 客户端、事务恢复、服务迁移等)。对于“关键任务”应用程序(绝大多数不是),这一点很重要。在这种情况下,Servlet API 之上的库在我看来并不能替代。
| 归档时间: |
|
| 查看次数: |
5568 次 |
| 最近记录: |