EJB hat viel Gepäck. Ein Teil dieses Gepäcks stammt aus der Tatsache, dass es auf das falsche Publikum abzielte. Der andere Teil war, dass die ersten beiden Versionen völliger Mist waren.
Wenn Sie sich die ursprünglichen EJB-Versionen ansehen, bestand das Konzept darin, dass ein EJB-Entwickler eine Paketlösung erstellen konnte, die in jedem EJB-kompatiblen Container verwendet werden konnte. Für einen Inhouse-Shop war diese Abstraktionsebene nicht erforderlich. Es war die perfekte Lösung, um einen florierenden Markt für EJB-Komponentenanbieter von Drittanbietern zu schaffen. Die Containerverkäufer waren jedoch in ihrer Vermarktung übereifrig und brachten Tonnen dazu, ihr Produkt als tragfähige Lösung für die tägliche Entwicklung zu verkaufen. Dies entspricht dem Erstellen des gesamten Anwendungscodes als COM + -Komponente.
Für mehr Hintergrundinformationen zur ursprünglichen J2EE-Spezifikation hatten die meisten beteiligten Anbieter CORBA-Server und wollten diese Produkte künftig nutzen. Die EJB-Spezifikation wurde über das IIOP-Protokoll erstellt (tatsächlich Java RMI, das eine dünne Schicht über IIOP war). CORBA war bereits aufgrund seiner Komplexität abgelehnt worden, und EJB war nur ein verschleierter CORBA, weshalb CORBA viele der Probleme mit sich brachte. Tatsächlich erschwerten die Abstraktionen von EJB die Arbeit, als es eine reine CORBA-Implementierung gewesen wäre.
Als der Gummi auf dem Bürgersteig landete, wurde den Leuten klar, dass die Leistung mit EJB grausam war. Da jeder Anruf ein Fernanruf war und es zunächst schwierig war, die Anwendung überhaupt zum Laufen zu bringen, suchten die Leute schnell nach Alternativen. Hibernate und Spring, die in einem JSP-Container ausgeführt werden, wurden zur Lösung.
EJB 3 "übernahm" diesen Ansatz. Aber es ist immer noch ein allgemeiner Kompromiss, der nicht viel bringt. Es gibt immer noch keinen EJB-Komponentenmarkt von Drittanbietern. Es macht also keinen Sinn, einen EJB-Container zum Erstellen Ihrer Lösung zu verwenden.
Um es kurz zu machen. Während EJB 3 eine enorme Verbesserung gegenüber den ersten beiden Iterationen darstellt, bietet es immer noch nicht genügend Vorteile, um die Kosten aufzuwiegen.