Serialize FacesContext или Как получить свойства-значения после перезагрузки сервера

Проблема в следующем: мне нужно сериализовать пользовательский сеанс, поэтому он все еще будет присутствовать после перезапуска сервера.

Использование JavaEE и Tomcat 7 прекрасно работает с implements Serializable, но проблема заключается в том, что FacesContext. Действительно, после перезапуска сервера FacesContext.getCurrentInstance() возвращает null, и поэтому я не могу получить доступ к пакету сообщений (и поэтому мой message.properties больше не может быть найден).

Итак, как мне сохранить FacesContext при перезапуске Tomcat?


person s4m3    schedule 04.09.2012    source источник
comment
Этот вопрос может быть более ясен: experts-exchange .com/Programming/Languages/Java/J2EE/Frameworks/ но я не хочу там регистрироваться   -  person s4m3    schedule 06.09.2012


Ответы (1)


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

Итак, вы должны никогда не делать, например.

private FacesContext context;

public Bean() {
    context = FacesContext.getCurrentInstance();
}

public void someMethod() {
    context...doSomething();
}

но вместо этого вы должны сделать:

public void someMethod() {
    FacesContext.getCurrentInstance()...doSomething();
}

В противном случае вы находитесь в случае, когда bean-компонент с областью сеанса содержит только экземпляр самого первого HTTP-запроса, который создал bean-компонент. Именно этот HTTP-запрос удаляется в конце соответствующего ответа и больше недействителен в любых последующих запросах. Таким образом, FacesContext определенно не должен быть сериализуемым.

person BalusC    schedule 01.10.2012