EJB a beaucoup de bagages. Une partie de ce bagage vient du fait qu'il était destiné au mauvais public. L'autre partie était que les deux premières versions étaient complètement nulles.
Si vous regardez les versions originales d'EJB, la conception était qu'un développeur d'EJB pourrait créer une solution packagée qui pourrait être utilisée dans n'importe quel conteneur compatible EJB. Pour un magasin maison, ce niveau d'abstraction n'était pas nécessaire. C'était une solution parfaite pour créer un marché florissant pour les fournisseurs de composants EJB tiers. Cependant, les vendeurs de conteneurs étaient trop zélés dans leur marketing et faisaient des tonnes en vendant leur produit comme une solution viable pour le développement de tous les jours. Ce serait l'équivalent de la construction de tout votre code d'application en tant que composants COM +.
Pour plus d'informations sur la spécification J2EE d'origine, la plupart des fournisseurs impliqués disposaient de serveurs CORBA et souhaitaient tirer parti de ces produits à l'avenir. La spécification EJB a été construite sur le protocole IIOP (en fait Java RMI qui était une couche mince sur IIOP). CORBA avait déjà été rejeté en raison de sa complexité, et EJB n'était que CORBA déguisé, ce qui entraîna de nombreux problèmes avec CORBA. En fait, les abstractions d'EJB ont rendu plus difficile le travail avec une implémentation CORBA pure.
Une fois que le caoutchouc a frappé le trottoir, les gens ont réalisé que les performances avec EJB étaient atroces. Chaque appel étant un appel à distance et la difficulté même de démarrer l'application correctement pour commencer, les gens ont rapidement cherché des alternatives. Hibernate et Spring fonctionnant dans un conteneur JSP sont devenus la solution.
L'EJB 3 a "adopté" cette approche. Mais c'est toujours un compromis générique qui n'apporte pas beaucoup d'avantages. Il n'y a toujours pas de marché de composants EJB tiers, il est donc inutile d'utiliser un conteneur EJB pour créer votre solution.
Longue histoire courte. Alors que EJB 3 est une grande amélioration par rapport aux deux premières itérations, il ne fournit toujours pas assez d' avantages pour compense largement le coût.