2010-07-30 63 views
4

我正面臨一個特殊問題。以下是我得到的錯誤的堆棧跟蹤。請幫助。在TopLink中獲取客戶端會話時出錯

Exception [TOPLINK-7001] (Oracle TopLink - 11g Release 1 (11.1.1.1.0) (Build 090527)): oracle.toplink.exceptions.ValidationException 
Exception Description: You must login to the ServerSession before acquiring ClientSessions. 
at oracle.toplink.exceptions.ValidationException.loginBeforeAllocatingClientSessions(ValidationException.java:1155) 
at oracle.toplink.threetier.ServerSession.acquireClientSession(ServerSession.java:313) 
at oracle.toplink.threetier.ServerSession.acquireClientSession(ServerSession.java:303) 
at com.ofss.elcm.domain.Session.fetchClientSession(Session.java:113) 
at com.ofss.elcm.domain.Session.acquireUnitOfWork(Session.java:132) 
+0

部署期間是否存在其他錯誤?你有沒有調用ServerSession.login()?你是否使用SessionManager創建ServerSession? – 2010-07-30 18:54:49

+0

@戈登嗨..只有當我嘗試通過不同的類加載器使用相同的類時,纔會出現此錯誤..在應用程序中,我同時使用了servlet和EJB ..因此,如果使用其中的一種,代碼工作絕對正常..無論是servlet或EJB ..但是當我嘗試同時使用,如果得到這個錯誤..我覺得這可能是類加載器的問題..作爲servlet有它自己的類加載器和EJB有它自己.. – 2010-08-02 09:28:45

+0

添加到上面的評論..我使用會話管理器來創建服務器會話.. – 2010-08-02 09:29:15

回答

1

在應用程序重新部署的情況下,EclipseLink可以檢查類加載器的更改。從Web容器和EJB容器調用特定會話的SessionManager時,這可能會導致問題。

確保您使用API​​ getSession(null,sessionName,classLoader,true,false)或具有較長簽名的相同方法禁用此類加載器檢查。如果您希望直接構造XMLSessionConfigLoader,則可以通過xmlSessionConfigLoader.setShouldCheckClassLoader(false)直接禁用類加載器檢查。

0

您是否嘗試過使用單例對象的sessionmanager?這樣,你應該總是得到相同的管理器實例,並且不應該有類加載器問題。