Разница между @Stateless и @Singleton
я следуюэтот урок который также использует 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++;
}
}
Вот пример вывода:
Привет из Facelets
Сообщение: 84804258
Счетчик: 26
Компонент сервера сообщений является: exerc1.MessageServerBean@757b6193
Вот мое наблюдение:
Когда я установил бин как@Stateless
Я всегда получаю один и тот же идентификатор объекта, а счетчик всегда увеличивается.Когда я установил бин как@Stateful
Я получаю новый экземпляр каждый раз, когда обновляю страницу.Когда я установил его@Singleton
Я получаю те же результаты, что и при установке@Stateless
: тот же идентификатор объекта, счетчик увеличивается.Итак, что я на самом деле хотел бы понять: в чем разница между@Stateless
а также@Singleton
EJBs в этом самом случае?