2012-09-04 4 views
0

문제는 다음과 같습니다. 사용자 세션을 직렬화해야하므로 서버를 다시 시작한 후에도 여전히 세션이 존재합니다.FacesContext를 serialize하거나 서버 재시작 후 속성 값을 얻는 방법

JavaEE와 Tomcat 7을 사용하면 implements Serializable에서 문제가 없지만 문제는 FacesContext입니다. 실제로 서버를 다시 시작한 후 FacesContext.getCurrentInstance()null을 반환하므로 메시지 묶음에 액세스 할 수 없으므로 더 이상 내 message.properties을 찾을 수 없습니다.

그렇다면 Tomcat을 다시 시작할 때 FacesContext을 어떻게 유지하나요?

+0

이 질문은 아마도 더 명확 할 것입니다 : http://www.experts-exchange.com/Programming/Languages/Java/J2EE/Frameworks/JSF/Q_24773002.html 그러나 나는 거기에 등록하고 싶지 않습니다. – s4m3

답변

1

문제 설명이 명확하지 않지만 증상에 따라 FacesContext의 현재 인스턴스를 인스턴스 변수로 유지하려고하는 것이 좋습니다. 당신은 전혀하지 말아야한다. 당신은 항상 로컬 메소드 범위에서 현재 인스턴스를 얻어야한다.

예.

private FacesContext context; 

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

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

그러나 당신이 대신 수행해야합니다

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

그렇지 않으면 당신은 세션의 경우에만 빈을 만든 최초의 HTTP 요청의 인스턴스를 잡고 빈을 범위입니다. 정확히이 HTTP 요청은 연관된 응답의 끝 부분에 의해 garbaged되며 이후의 요청에서는 더 이상 유효하지 않습니다. 따라서 FacesContext은 확실히 직렬화되지 않아야합니다.

관련 문제