Разница между @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 в этом самом случае?

Ответы на вопрос(2)

Ваш ответ на вопрос