EJB tiene mucho equipaje. Parte de ese equipaje proviene del hecho de que estaba dirigido al público equivocado. La otra parte fue que las dos primeras versiones eran una mierda.
Si observa las versiones originales de EJB, el diseño fue que un desarrollador de EJB podría crear una solución empaquetada que podría usarse dentro de cualquier contenedor compatible con EJB. Para una tienda interna, este nivel de abstracción era innecesario. Fue una solución perfecta para crear un mercado próspero para los proveedores de componentes EJB de terceros. Sin embargo, los vendedores de Contenedores eran demasiado entusiastas en su comercialización y estaban haciendo toneladas vendiendo su producto como una solución viable para el desarrollo diario. Esto sería el equivalente a construir todo el código de su aplicación como componentes COM +.
Para obtener más información sobre la especificación J2EE original, la mayoría de los proveedores involucrados tenían servidores CORBA y querían aprovechar esos productos en el futuro. La especificación EJB se creó sobre el protocolo IIOP (en realidad, Java RMI, que era una capa delgada sobre IIOP). CORBA ya había sido rechazado debido a su complejidad, y EJB era simplemente CORBA disfrazado, por lo que trajo consigo muchos de los problemas que tenía CORBA. En realidad, las abstracciones de EJB hicieron que fuera más difícil trabajar con lo que hubiera sido una implementación CORBA pura.
Una vez que el caucho golpeó el pavimento, la gente se dio cuenta de que el rendimiento con EJB era atroz. Como cada llamada es una llamada remota y la dificultad de incluso poner la aplicación en funcionamiento correctamente, la gente rápidamente buscó alternativas. Hibernate y Spring corriendo en un contenedor JSP se convirtieron en la solución.
EJB 3 "adoptó" este enfoque. Pero sigue siendo un compromiso genérico que no proporciona muchos beneficios. Todavía no hay un mercado de componentes EJB de terceros, por lo que realmente no tiene sentido usar un contenedor EJB para construir su solución.
Larga historia corta. Si bien EJB 3 es una gran mejora con respecto a las dos primeras iteraciones, todavía no proporciona suficientes beneficios para superar los costos.