【问题标题】:Calling an EJB3 library from an EJB2 library从 EJB2 库调用 EJB3 库
【发布时间】:2012-12-04 20:45:35
【问题描述】:
我有一个用 EJB2.1 编写的现有应用程序。它作为 EAR 部署在 jboss-5.1.0.GA 上。
我现在有一个新的需求来实现应该由 EJB2.1 应用程序使用的流程。两者都在自己的 ear 文件中,但都在同一个 jboss-5.1.0 实例上运行。
我的问题是:
- 是否可以从 EJB2.1 耳朵调用 EJB3 耳朵的服务?
- 如果上面的答案是肯定的,是否可以管理交易?即只有 EJB2.1 应用程序提交任何事务。
- 将现有的 2.1 应用程序迁移到 v3 是不可能的。将新流程创建为 v3 是否值得努力,或者我可能会遇到两者之间的集成问题?
- 我一直在寻找一个简单的 hello world 类型示例来演示上述内容,但没有找到。有人知道一个很好的例子吗?
- 将从 EJB2 应用程序中的会话 bean 调用 EJB3 服务。这是错误的方法吗? (即会话 bean 不是客户端)。
【问题讨论】:
标签:
java
jakarta-ee
ejb
ejb-3.0
【解决方案1】:
EJB3 规范允许平滑过渡,定义了 EJB2/EJB3 互操作性的方法,它有时很庞大,您需要在“普通”EJB3 应用程序中不需要的工件 (@RemoteHome)
- 是否可以从 EJB2.1 耳朵调用 EJB3 耳朵的服务?
是的,有可能,请参阅:Referencing EJB3 beans in EJB2.1 和
Introduction to using EJB2.1 client adaptors
和示例项目“ejb21_client_adaptors”
- 如果上面的答案是肯定的,是否可以管理交易?即只有 EJB2.1 应用程序提交任何事务。
是的,只要记住用 @TransactionAttribute(TransactionAttributeType.MANDATORY) 注释您的 EJB3 方法
- 将从 EJB2 应用程序中的会话 bean 调用 EJB3 服务。这是错误的方法吗? (即会话 bean 不是客户端)。
我看这里没问题,会话 bean 可以调用其他 bean 的服务。