【问题标题】:How to call remote EJB from different JVM and Servers?如何从不同的 JVM 和服务器调用远程 EJB?
【发布时间】:2012-11-17 17:53:37
【问题描述】:

好的,我知道所有事物都有一个规范,但是,它需要兼容性吗?

我能否从部署在 Weblogic 上的基于 EJB 3.1 (JEE6) 的架构调用部署在 JBOSS 上的应用程序 EJB 3 (JEE5)?

【问题讨论】:

  • 如果您的意思是“从同时在不同的 Weblogic A/S 上运行的应用程序调用在 JBoss A/S 上运行的 EJB”,那么听起来您可能想将 EJB 包装在一个网络服务。恕我直言...

标签: jakarta-ee ejb


【解决方案1】:

假设您的 EJB 3.0 模块公开了一个远程接口,那么您可以通过该远程接口(使用 RMI/IIOP)从 EJB 3.1 客户端调用它。

关于对您的问题的评论:我不会急于用 Web 服务层包装您的 EJB 3.0 模块。它在图表上看起来不错,但说到底,归结为需求和成本/收益。如果您的 EJB 3.0 模块仅由 EJB 客户端调用,那么标准远程接口就足够了。话虽如此,您应该以这样一种方式定义您的 EJB 接口,以便您将来可以用 Web 服务层包装它,如果您需要

注意:您必须确保您使用的应用程序服务器支持从一个版本调用到另一个版本。例如,IBM WebSphere 将在从 WAS 6.0 调用到 WAS 7.0 时工作。 JBoss 提出了一些挑战(参见下面的 cmets)。

【讨论】:

  • 没那么简单。在不同的 Java EE 服务器之间调用远程 EJB 的支持真的很差。甚至不支持 JBoss 5 和 JBoss 6 之间的调用。官方仅支持 Java SE 到一台远程 Java EE 服务器。
  • @MikeBraun,我们将不胜感激。无论如何,如果有一些因素使您无法进行跨服务器 EJB 调用,那么好吧,继续将其中一个封装为 Web 服务。我的信息是,不应仅仅为了好玩而急于创建 Web 服务包装器。
  • 迈克是对的。跨应用服务器二进制 EJB 通信是 EJB 规范中的主要疏忽。问题是大多数产品都需要他们称之为“客户端库”的东西,但这个客户端库几乎就是整个服务器。这意味着它包括大量的东西,如 EJB、JPA、JMS 等 API 类,然后与源服务器中的类进行分类。同一个 AS 的版本之间更糟糕,因为更多的冲突。我已经尝试了很长时间才能使其正常工作,但最终放弃了。对于 JBoss AS 5 和 6,请参阅 community.jboss.org/thread/162519
  • 有趣。谢谢。好吧,在规模的另一端,从 6.0 调用到 7.0 时,WebSphere 工作得很好。
  • 那时我也学到了一些东西,WebSphere 确实可以工作;)但总的来说,这是一个很受欢迎的事情。有些组合有效,有些则无效。如果不尝试,您永远无法确定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
相关资源
最近更新 更多