2010-07-11 10 views
0

我有一點用碼頭7. JDBCSessionManager出於某種原因,它試圖持久化SessionManager持續的SessionAuthentication當一個問題:碼頭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應該是可序列化的,而只是試圖找出JDBCSessionManager是否在Jetty 7中被破壞。 – Jesper 2010-07-11 15:30:06

+0

我只是迴應您發佈的錯誤消息,其中抱怨「java。 io.NotSerializableException:org.eclipse.jetty.server.session.JDBCSessionManager「。這暗示了序列化涉及到了。 – duffymo 2010-07-11 15:38:05