También me gustaría saber por qué se agrupan los EJB apátridas. Pero quiero saber por qué se agrupan en lugar de crearse y destruirse a pedido. El hecho de que las instancias se puedan reutilizar para solicitudes no relacionadas complica significativamente la implementación de beans sin estado (significa que debe ser increíblemente cuidadoso con el uso de campos de instancia), y no veo ningún beneficio significativo para él.
Específicamente, no veo ningún beneficio en el rendimiento. Busqué la implementación de frijoles sin estado en JBoss (6, IIRC), y es solo la instancia del frijol en sí la que se agrupa; la plomería para manejar la invocación del método se recrea desde cero cada vez que se usa. Eso significa que el único ahorro de rendimiento es la creación de un solo objeto, que debería ser una cantidad de tiempo trivial. La única situación en la que puedo ver que no es trivial es si el bean adquiere recursos pesados, y se aferra a ellos entre invocaciones. Sin embargo, en ese caso, el bean realmente se está usando como un conjunto glorificado y mal administrado; ¡la solución correcta sería agrupar el recurso directamente!
Ahora, EJB ha existido por mucho tiempo. Cuando salieron por primera vez, la creación de objetos era costosa, por lo que tenía sentido agruparlos. Pero esos días se han ido. ¿Por qué la agrupación no se eliminó en EJB3?
Si no tiene estado, entonces no hay ningún estado que pueda ser amenazado por concurrencia, entonces no pueden aparecer condiciones de carrera, por lo tanto, son seguros para subprocesos, ¿estoy equivocado? Sí, sé que tienen algún estado, como los recursos inyectados, pero ¡quizás no deberían llamarse apátridas! :) tomo la respuesta como correcta. – edutesoy
@edutesoy Estoy de acuerdo con su explicación. Pero por qué el estado se mantiene entonces. –