запутался, как обрабатывать NotSerializableException

Я работаю над социальным веб-сайтом и использую JSF 2.2, и у меня есть несколько bean-компонентов с областями просмотра, в которые внедряются службы bean-компонентов.

я иногда получаю знаменитое NotSerializableException в tomcat, и у меня есть несколько вопросов:

1- каковы недостатки отключения сохранения сеанса с помощью пустого менеджера следующим образом:

<Context ... >
    <Manager pathname="" />
</Context>

и когда использовать этот подход?

2- если я собираюсь реализовать интерфейс Serializable, должен ли я сделать области представления (как насчет запросов и сеансовых компонентов?) Реализовать только интерфейс Serializable и, следовательно, пометить введенные службы как переходные?

3. Является ли bean-компоненты единственным слоем, который должен реализовывать Serializable, а сервисы и даосы - нет? и каковы недостатки реализации Serializable для сервисов или daos?

пожалуйста, порекомендуйте.


person Mahmoud Saleh    schedule 17.12.2013    source источник


Ответы (1)


1- каковы недостатки отключения сохранения сеанса с помощью пустого менеджера следующим образом:

<Context ... >
    <Manager pathname="" />
</Context>

Недостатком является то, что вы не получаете сохранение сеанса.

и когда использовать этот подход?

Когда вы не хотите сохранения сеанса.

2- если я собираюсь реализовать интерфейс Serializable, должен ли я сделать области представления (как насчет запросов и сеансовых компонентов?) Реализовать только интерфейс Serializable и, следовательно, пометить введенные службы как переходные?

Вам нужно сделать все, что может быть связано с сеансом, сериализуемым, а его нестатические непереходные члены и так далее рекурсивно до закрытия. NotSerializableExceptions сообщит вам, если вы что-то пропустили.

3- это bean-компоненты - единственный слой, который должен реализовывать Serializable, а сервисы и daos не должны

Верный. Сериализация сервисов не имеет смысла, как и DAO, поэтому они должны быть временными, когда являются членами.

? и каковы недостатки реализации Serializable для сервисов или daos?

См. выше. Для сервисов это в принципе невозможно; для DAO у вас есть серьезная проблема с живучестью. DAO должны быть чрезвычайно временными, а также transient.

person user207421    schedule 18.12.2013
comment
Должен ли я сериализовать сеансовые компоненты и просматривать только компоненты? и не сериализовать bean-компоненты запросов и bean-компоненты приложений? - person Mahmoud Saleh; 24.12.2013