2012-01-13 4 views
0

Так что я хочу использовать ViewScoped, и когда я установил способ сохранения состояния для клиента, страница будет бросать NotSerializableException, и страница перейдет на страницу с ошибкой. Когда я переключаюсь на сохранение состояния сервера, исключение все равно бросается, но страница будет загружаться.MyFaces @ViewScoped throws NotSerializableException даже с настройкой сервера

Я прочитал много вопросов и ответов, и у меня сложилось впечатление, что комбинация экономии состояния ViewScoped/сервера устраняет необходимость иметь все, что обозначено как Serializable. Кто-нибудь видит эту проблему?

RichFaces 4.1/MyFaces 2.1.5

+0

Это, кстати, характерно для MyFaces. Моджарра не показывает этого поведения. Я не очень внимательно слежу за MyFaces, поэтому я понятия не имею, почему ребятам из MyFaces явно требуется, чтобы beobe-объекты были сериализованы. Но что не так с их сериализацией? Вы бы в Mojarra столкнулись с одной и той же проблемой в любом случае всякий раз, когда сервер перезапускает/перераспределяет, сохраняя одни и те же сеансы, чтобы пользователи сеанса могли просто продолжать свои действия, связанные с сеансом/просмотром. – BalusC

+0

Im проводка в много устаревших сервисов и EJB-код и не имеют возможности отмечать все по цепочке как сериализуемые – user1147953

ответ

0

Я думаю, что установка этого сервлета параметр контекста будет решить вопрос:

<context-param> 
    <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name> 
    <param-value>false</param-value> 
</context-param> 

Это предотвратит MyFaces от сериализации состояния до его сохранения в сессии. Это причина по умолчанию. Я думаю, это для экономии памяти.

+0

Спасибо. Добавив, что в web.xml исправлена ​​проблема – user1147953

0

Если вы используете CDI, вы можете использовать MyDaces CODI. Он исправляет эту проблему, и вы можете использовать beView @ViewScoped как компонент CDI.