|
|
|
Вопрос(ы) по EJB (2.x) кто подскажет?
|
|||
|---|---|---|---|
|
#18+
Такой вопрос. Имеется 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 . Такое прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2006, 18:31 |
|
||
|
Вопрос(ы) по EJB (2.x) кто подскажет?
|
|||
|---|---|---|---|
|
#18+
>Вопрос #1. Handle это просто ссылка на компонент. Она ничего не гарантирует. Представь себе такое: есть у тебя друг, который живёт в Москве. Ты в блокноте записал его адрес. Гарантирует ли запись в блокноте что друг будет жить всё время там? Конечно нет.... То же самое и handle. >Вопрос #2. Будет ждать до таймауте. А при перезагурзке - само собой... Если надо, чтобы выжило, то используй Entity bean-ы. Либо разрабатывай что-то подобное на сеансовых компонентах >Вопрос #3 В дескрипторе развёртывания можно указать значение таумаута. >Вопрос #4 вопрос не понят, читай выше пример с другом. HTTPSession, кстати, из другой оперы, не мешай с компонентами. >Вопрос #5 Если десериализовал то того как сработал таймаут, то ради Бога, можно и будет и найти компонент по хэндлу. Вообще, кажется в документации есть диаграмма состояний сеансового компонента с поддержкой сеанса, как всё происходит с точки зрения клиента. Поищи, из неё всё ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2006, 20:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33901947&tid=2148482]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 484ms |

| 0 / 0 |
