한동안 세션 클러스터링이 안되는 문제가 발생되었는데
원인은 객체직렬화를 구현하지 않아서 생긴문제로 결론났습니다.
아래를 참고하세요.
세션복제가 가능하려면 모든 서블릿 및 jsp세션 데이터가 Serializable되어야 합니다.
app중에 HTTP 세션 서블릿이나 jsp가 있을 것입니다. 이들이 serializable을 구현해야 합니다.
아래는 예시입니다. 참고하세요.
import java.io.Serializable;
public class MyBean implements Serializable
{
……….
}
그리고 직렬화 대상은 멤버변수만 가능합니다. 변수가 static, transient로 선언된 것들은 제외되므로 주의하세요.
또한 jsp에서 usebean을 사용하면서, scope을 session으로 아래와 같이 설정을 하는 경우에는.
예] <jsp:useBean id="myBean" scope="session" class="MyBean"/>
해당 클래스가 Serializable interface를 제대로 구현되어 있어도 웹로직에서는 세션 정보가 복제되지 않습니다..
session.setAttribute 로 명시적으로 session에 넣어준 것만 복제 됩니다.
따라서, 위와 같이 사용하시는 경우에 usebean이 복제되려면, usebean 사용하는 jsp 마지막에 아래와 같이 한 줄을 추가 해주셔야 합니다.
session.setAttribute("myBean",myBean);
주의!!
http 세션의 putValue 및 removeValue 메쏘드는 더 이상 사용되지 않으며 사용할 경우 세션 복제에 문제가 있을 수 있습니다.
확인해 보시고 위와 깉이 수정하시기 바랍니다.
ps: 디플로이하신 웹app의 WEB-INF/weblogic.xml 에
아래와 같이 설정해 주어야 합니다.
<session-descriptor>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-value>replicated_if_clustered</param-value>
</session-param>
</session-descriptor>
'WEB' 카테고리의 다른 글
웹로직 에러 <BEA-101215> (0) | 2008.01.17 |
---|---|
DAX 에러 (0) | 2007.12.21 |
Ajax를 소개합니다. (0) | 2007.08.14 |
HTML에서 padding (0) | 2007.07.04 |
AJAX 관련 (0) | 2007.05.28 |