2014-02-19 1 views
7

У меня есть простой вопрос, но я не могу найти ответ для Java EE 6!Должен ли сеансовый bean-компонент с состоянием Serializable

Должен ли сеансовый bean-компонент с состоянием использовать Serializable или нет?

Я тестировал с и без реализации java.io.Serializable и нет никаких отличий и ошибок.

Моего чувство говорит мне, что сессионный компонент должен реализовывать Serializable, поскольку он может быть сохранен в долгосрочной сессии ...

ответ

4

Нет, это не нужно, поскольку спецификация не требует.

Вы можете загрузить и проверить спецификацию EJB из: https://jcp.org/en/jsr/detail?id=318

+1

Хорошо, но почему? Не будет ли это продолжаться? – Gatschet

+1

Я думаю, вы неправильно понимаете смысл «состояния» здесь. Это просто означает, что bean поддерживает состояние между клиентскими вызовами. Это не значит, что сам компонент будет сериализован на диск как «java.io.Serializable». –

+0

В спецификации есть абзац: «Контейнер выполняет язык программирования Java Сериализация (или ее эквивалент) состояния экземпляра (и состояние его перехватчиков) после того, как он вызывает метод« PrePassivate »в экземпляре и его перехватчиках. », как вы можете видеть, это состояние + перехватчики, которые сериализованы. – Sergio

1

Это зависит от того, как вы собираетесь его использовать:

@Remote: Обозначает удаленный бизнес-интерфейс. Параметры метода передаются по значению, и необходимо сериализовать как часть протокола RMI.

@Local: Обозначает локальный бизнес-интерфейс. Параметры метода передаются по ссылке от клиента к компоненту.