2010-07-11 4 views
0

내가 가지고있는 SessionAuthentication 지속 할 때 어떤 이유 부두 7에서 JDBCSessionManager이는 SessionManager에를 유지하려고 사용하여 약간의 문제 :부두 JDBCSessionManager 직렬화하지

16:46:02,455 WARN org.eclipse.jetty.util.log - Problem persisting changed session data id=b75j2q0lak5s1o2zuryj05h9y 
java.io.NotSerializableException: org.eclipse.jetty.server.session.JDBCSessionManager 

설정 코드 :

server.setSessionIdManager(getSessionIdManager()); 
final SessionManager jdbcSessionManager = new JDBCSessionManager(); 
jdbcSessionManager.setIdManager(server.getSessionIdManager()); 
context.setSessionHandler(new SessionHandler(jdbcSessionManager)); 

server.setHandler(context); 

private SessionIdManager getSessionIdManager() { 
    JDBCSessionIdManager idMan = new JDBCSessionIdManager(server); 
    idMan.setDriverInfo("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/monty?user=xxxx&password=Xxxx"); 
    idMan.setWorkerName("monty"); 
    return idMan; 
} 

비슷한 경험을 한 경험이 있습니까?

답변

0

JDBC를 세션과 관련하여 직렬화하는 것을 권장하지 않습니다. 내가 선호하는 작업 모드는 가능한 가장 좁은 범위에서 연결, 명령문 및 결과 세트와 같은 모든 및 모든 데이터베이스 자원을 획득, 사용 및 종료하는 것입니다. 연결 풀을 사용하여 데이터베이스 연결 열기 비용을 상환합니다. 그게 니가 가야 할 길이야.

게다가 클래스가 java.io.Serializable을 구현하지 않으면 선택할 수 없습니다. 아마도 디자이너들이 내 감정을 코드로 표현하려했을 것입니다.

javadocs for JDBCSessionManager을 확인했습니다. 리프 클래스 나 수퍼 클래스 중 어느 것도 Serializable을 구현하지 않습니다.

+0

JDBCSessionManager가 Serializable이어야한다고 제안하는 것이 아니라 단순히 JDBCSessionManager가 Jetty 7에서 손상되었는지 여부를 파악하는 것입니다. – Jesper

+0

게시 한 오류 메시지에 단순히 응답하므로 "java. io.NotSerializableException : org.eclipse.jetty.server.session.JDBCSessionManager ". 이것은 직렬화가 수반되었다는 것을 나에게 암시한다. – duffymo