2016-04-25 65 views
0

在阅读官方的Java EE文档并且使用OpenEJB后,我想知道不同应用服务器交叉沟通Remote EJB的能力。现在,在我看来,尽管API的标准化,进程间通信并不是标准化的,例如ejbd协议似乎只能被OpenEJB支持。不同的应用程序服务器实现可以共享远程EJB吗?

我特别想知道用于实现基于EJB的RPC的协议。直到现在,我相信这个通信主要通过HTTP完成。从查看WebSphere,JBoss和TomEE的文档,似乎每个应用程序服务器都会自己做汤。

因此,我的问题是:不同的应用程序服务器通常可以通过远程EJB进行通信,并且通常使用什么协议进行通信。为什么像TomEE这样的应用服务器首先提供派生解决方案?

回答

1

是的,这是可能的。 EJB-Spec需要CORBA/IIOP的支持。 从EJB 3.1 Spec(第2.5章):

为了帮助对于包括来自多个供应商的系统 EJB环境的互操作性,EJB规范要求兼容 实现基于 CORBA,支持互操作性协议/ IIOP用于远程调用来自Java EE客户端。 除IIOP外,实现可能支持其他远程调用协议 。

+0

但是,例如TomEE似乎不支持CORBA,CORBA是否得到了广泛的支持,还是只存在于纸上? –

+0

AFAIK TomEE仅支持Java EE Web Profile,它不支持通过CORBA进行远程处理(有关完整和Web配置文件之间的对应关系,请参阅https://jaxenter.com/introducing-the-java-ee-web-profile-103275。 html) – Korgen

+0

请注意,只有在使用java.rmi.Remote(或扩展了java.rmi.Remote的EJB 2.x风格的EJBHome/EJBObject)时才需要EJB 3的互操作性。根据规范,EJB 3“POJO”风格的远程接口显然不需要互操作。还要注意的是,有一个Java EE 8建议可以使这种级别的互操作性成为可选项:https://java.net/projects/javaee-spec/lists/jsr366-experts/archive/2015-12/message/0 –

相关问题