从EJB2库调用EJB3库

时间:2012-12-04 20:45:36

标签: java java-ee ejb ejb-3.0

我有一个用EJB2.1编写的现有应用程序。这部署在jboss-5.1.0.GA上作为EAR。

我现在有了一个新的要求来实现一个应该由EJB2.1应用程序使用的进程。两者都将在他们自己的ear文件中,但都将在同一个jboss-5.1.0实例上运行。

我的问题是:

  • 是否可以从EJB2.1 ear调用EJB3 ear的服务?
  • 如果上述答案是肯定的,是否可以管理交易?即只有EJB2.1应用程序提交任何事务。
  • 将现有的2.1应用程序迁移到v3是不可能的。创建新流程作为v3值得努力还是我可能会遇到两者之间的集成问题?
  • 我一直在寻找一个简单的hello世界类型示例来演示上述但未能找到任何内容。有人知道一个很好的例子吗?
  • 将从EJB2应用程序中的会话bean调用EJB3服务。这是错误的方法吗? (即会话bean不是客户端)。

1 个答案:

答案 0 :(得分:2)

EJB3规范允许平滑过渡,定义EJB2 / EJB3互操作性的方法,它有时很笨重,你需要在“普通”EJB3应用程序中不需要的工件(@RemoteHome

  
      
  • 是否可以从EJB2.1 ear调用EJB3 ear的服务?
  •   

是的,有可能,请参阅:Referencing EJB3 beans in EJB2.1Introduction to using EJB2.1 client adaptors 和示例项目“ejb21_client_adaptors”

  
      
  • 如果上述答案是肯定的,是否可以管理交易?即只有EJB2.1应用程序提交任何事务。
  •   

是的,请记住使用@TransactionAttribute(TransactionAttributeType.MANDATORY)

注释您的EJB3方法
  
      
  • 将从EJB2应用程序中的会话bean调用EJB3服务。这是错误的方法吗? (即会话bean不是客户端)。
  •   

我认为这里没有问题,会话bean可以调用其他bean的服务。