Diferencia entre @Stateless y @Singleton
estoy siguiendoeste tutorial que también utiliza un EJB:
package exercise1;
import java.util.Random;
import javax.ejb.Stateless;
import javax.inject.Named;
@Stateless
public class MessageServerBean {
private int counter = 0;
public String getMessage(){
Random random = new Random();
random.nextInt(9999999);
int myRandomNumber = random.nextInt();
return "" + myRandomNumber;
}
public int getCounter(){
return counter++;
}
}
Aquí hay un ejemplo de salida:
Hola de facelets
El mensaje es: 84804258
El contador es: 26
Message Server Bean es: exercise1.MessageServerBean@757b6193
Aquí está mi observación:
Cuando coloco el bean como@Stateless
Siempre obtengo el mismo ID de objeto y el contador siempre aumenta.Cuando coloco el bean como@Stateful
Obtengo una nueva instancia cada vez que actualizo la página.Cuando lo puse a@Singleton
Obtengo los mismos resultados que cuando lo puse a@Stateless
: mismo ID de objeto, incremento de contador.Entonces, lo que realmente me gustaría entender es: ¿cuál es la diferencia entre@Stateless
y@Singleton
EJBs en este mismo caso?