El resultado que obtienes con el EJB-Session Stateless es meramente fortuito debido a tu ambiente de pruebas. Si tuvieras una aplicación con mucha carga, en donde el servidor de aplicaciones crea y destruye instancias de ellos para optimizar el desempeño, entonces verás que no hay garantía que en la segunda invocación de un método del Stateless SB te atienda la misma instancia.
Esto no sucede con el EJB-Session Stateful. La misma entidad te atiende hasta que terminas la sesión. Espero haber explicado correctamente.
Creo que realmente estás invocando al mismo objeto desde un mismo cliente en una misma sesión.
Hola a todos,
Apenas estoy comenzando a leer sobre EJB 3, y me surge la siguiente duda, ¿Qué quiere decir exactamente que los beans Stateless no mantienen el estado y los Stateful sí lo hacen?
Para comenzar creé un bean de prueba, primero le coloqué la anotación @Stateless y luego la anotación Statelful y yo veo el mismo comportamiento.
Este es el session bean:
@Stateless
public class HolaMundoBean implements IHolaMundoLocal {
private int numero = 1;
@Override
public int sumar(Integer numero) {
this.numero += numero;
return this.numero;
}
}
Desde un servlet llamo al método sumar del bean:
out.println("<h1>La suma es: " + holaMundo.sumar(2) + "</h1>");
out.println("<h1>La suma es: " + holaMundo.sumar(3) + "</h1>");
out.println("<h1>La suma es: " + holaMundo.sumar(4) + "</h1>");
Y el resultado es 3, 6, 10. Según lo que yo entiendo, como el bean no mantiene el estado, los resultados deberían ser 3, 4, 5
Si el bean lo coloco como un @Stateful, obtengo el mismo resultado.
¿Qué es lo que estoy haciendo mal o no he entendido?
Gracias desde ya por su tiempo y ayuda.