Un bean de sesión con estado se define de la siguiente manera:
Beans de sesión con estado El estado de un objeto consta de los valores de sus variables de instancia. En un bean de sesión con estado, las variables de instancia representan el estado de una sesión cliente-bean única. Debido a que el cliente interactúa ("habla") con su bean, este estado a menudo se denomina estado conversacional.
Un bean de sesión sin estado se define de la siguiente manera:
Beans de sesión sin estado Un bean de sesión sin estado no mantiene un estado conversacional con el cliente. Cuando un cliente invoca los métodos de un bean sin estado, las variables de instancia del bean pueden contener un estado específico para ese cliente, pero solo durante la invocación. Cuando finaliza el método, no se debe conservar el estado específico del cliente. Sin embargo, los clientes pueden cambiar el estado de las variables de instancia en beans sin estado agrupados, y este estado se mantiene hasta la siguiente invocación del bean sin estado agrupado. Excepto durante la invocación del método, todas las instancias de un bean sin estado son equivalentes, lo que permite que el contenedor EJB asigne una instancia a cualquier cliente. Es decir, el estado de un bean de sesión sin estado debe aplicarse en todos los clientes.
La ventaja de utilizar un bean de sesión sin estado sobre un bean de sesión con estado es la siguiente:
Dado que los beans de sesión sin estado pueden admitir varios clientes, pueden ofrecer una mejor escalabilidad para aplicaciones que requieren una gran cantidad de clientes. Normalmente, una aplicación requiere menos beans de sesión sin estado que beans de sesión con estado para admitir el mismo número de clientes.
Entonces, la pregunta que me viene a la mente es ¿cuándo se deben usar beans de sesión con estado? Según mi ingenua comprensión del asunto, uno debería limitarse a utilizar un bean de sesión sin estado como sea posible.
¿Cuáles serían los candidatos en los que se debería usar un bean de sesión con estado? ¿Algún buen ejemplo?