Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Как увидеть разницу между stateless и stateful session-бинами в EJB?

#java #java_ee


По идее, stateless бин не должен сохранять своё состояние (значения своих полей)
после завершения запроса. Например, вызов метода GetSum(13) каждый раз должен возвращать
"13".
import javax.ejb.*;  
import javax.jws.*;

@Stateless  
@WebService(endpointInterface = "ITestWebService")   
public class TestWebService implements ITestWebService  
{  
    private double sum = 0.0;

    @Override 
    public double GetSum( double a )
    {
        this.sum += a;
        return sum;
    }
}

Но повторный вызов возвращает 13, 26, 39, ... Я неправильно понимаю stateless или
можно грешить на сервер приложений?    


Ответы

Ответ 1



Stateless означает, что бин не держит состояние между сессиями. То есть надо "убить" бин чтобы увидеть что он не сохраняет свое внутреннее состояние.

Ответ 2



У Stateful бина есть события @PrePassivate и @PostActivate для сериализации. Т.е. при нехватке ОЗУ этот бин может сохраняться на жесткий диск.

Комментариев нет:

Отправить комментарий