2016-04-25 9 views
0

Nach dem Lesen der offiziellen Java-EE-Dokumentation und nachdem ich mit OpenEJB gespielt habe, frage ich mich, ob verschiedene Anwendungsserver Remote EJBs miteinander kommunizieren können. Im Moment scheint mir, dass trotz der Standardisierung der API die Kommunikation zwischen Prozessen nicht standardisiert ist, zum Beispiel mit dem Protokoll ejbd, das anscheinend nur von OpenEJB unterstützt wird.Können verschiedene Anwendungsserver-Implementierungen Remote-EJBs gemeinsam nutzen?

Ich wundere mich besonders über die Protokolle, die für die Implementierung von EJB-basierten RPCs verwendet werden. Bis jetzt glaubte ich, dass diese Kommunikation hauptsächlich über HTTP erfolgte. Wenn man sich die Dokumentationen für WebSphere, JBoss und TomEE anschaut, scheint es, als ob jeder Anwendungsserver seine eigene Suppe kocht.

Meine Frage ist daher: Können verschiedene Anwendungsserver im Allgemeinen über Remote-EJBs kommunizieren und durch welches Protokoll wird dies normalerweise implementiert. Und warum würde ein Anwendungsserver wie TomEE überhaupt eine hergeleitete Lösung bieten?

Antwort

1

Ja, das ist möglich. Das EJB-Spec benötigt die Unterstützung von CORBA/IIOP. Vom EJB 3.1 Spec (Kapitel 2.5):

Interoperabilität für EJB-Umgebungen zu helfen, die Systeme von mehreren Anbietern gehören, erfordert die EJB-Spezifikation konform Implementierungen die Interoperabilität Protokoll basiert auf CORBA/IIOP für Remote-Anrufungen zu unterstützen von Java EE-Clients. Implementierungen können andere Remote-Aufrufprotokolle in zusätzlich zu IIOP unterstützen.

+0

Aber zum Beispiel scheint TomEE CORBA nicht zu unterstützen, ist CORBA wirklich weit verbreitet oder gibt es das nur auf dem Papier? –

+0

AFAIK TomEE unterstützt nur das Java EE-Webprofil, das Remoting über CORBA nicht unterstützt (eine Gegenüberstellung von Voll- und Webprofil finden Sie unter https://jaxenter.com/introducing-the-java-ee-web-profile-103275. html) – Korgen

+0

Beachten Sie, dass Interoperabilität nur für EJB 3 erforderlich ist, wenn java.rmi.Remote (oder EJB 2.x-style EJBHome/EJBObject, die java.rmi.Remote erweitern) verwendet wird. EJB 3 "POJO" -artige Remote-Schnittstellen müssen explizit nicht interoperabel sein gemäß der Spezifikation. Beachten Sie auch, dass es einen Java EE 8-Vorschlag gibt, um auch diese Ebene der Interoperabilität optional zu machen: https://java.net/projects/javaee-spec/lists/jsr366-experts/archive/2015-12/message/0 –