Вопрос(ы) по EJB (2.x) кто подскажет?
От: pandamima  
Дата: 04.08.06 16:10
Оценка:
Такой вопрос.

Имеется SFSB (Stateful Session Bean).
Вот берем мы home reference, потом ejb object reference.
Работаем с ним.
Дальше мы его имеем возможность (теоретически и практически) заserialize'ить.
И засунуть в файл или поле базы (к примеру).

Это можно сделать либо взяв Handle с помощью getHandle() (сам то EJBObject нельзя, ибо он по сути своей stub), чтобы в последствии восстановить через getEJBObject() от Handle; либо по простому с помощью HandleDelegate.

Представим себе что мы это сделали. Засунули в файл или базу. Закончили application. Прошел час. Два. Три. День. Два. Три. Короче времени прошло.

Вопрос #1.

Все это время application server не будет убивать SFSB? То есть бин постоянно будет ждать хозяина? Считается ли засерилизрованный референс как активный на бин? Вот что заявлено на сайте:
The state is retained for the duration of the client-bean session. If the client removes the bean or terminates, the session ends and the state disappears. This transient nature of the state is not a problem, however, because when the conversation between the client and the bean ends there is no need to retain the state.
Вот мне не особо понятно что это значит на моем простом примере.

Вопрос #2

Если таки будет ждать, то вопрос как долго? До перезагрузки application server? А если надо чтобы все выжило и после перезагрузки, что делать?

Вопрос #3

Если таки будет ждать, то какая есть возможность ограничить его жизнь например какой-нибудь инструкций сервера? А то ведь иначе прийдется "мочить" самому их — клиент то может больше времени не возвращаться, а может и вообще не возвращаться — значит есть много шансов (при большом количестве клиентов) конкретно засрать application server ожидающими.

Вопрос #4

Или сериализация в файл или куда то еще не будет считается активным референсом на бина? То есть в таком случае единственный вариант сериализнуть лишь в HttpSession?

Вопрос #5

Предположим такое все работает. Но как будет в случае если один клиент (servlet) сериализнул в файл или поле базы, а другой клиент (swing application) десериализнул и собрался работать с этим EJBObject. Такое прокатит?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.