2016-04-25 61 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 –

相關問題