在TopLink中获取客户端会话时出错

时间:2010-07-30 07:31:52

标签: java toplink toplink-essentials

我面临着一个特殊的问题。下面是我得到的错误的堆栈跟踪。请帮忙。

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)

2 个答案:

答案 0 :(得分:1)

EclipseLink可以在应用程序重新部署的情况下检查类加载器更改。当从Web容器和EJB容器调用特定会话的SessionManager时,这可能会导致问题。

确保使用API​​ getSession(null,sessionName,classLoader,true,false)或使用较长签名的相同方法来禁用此classLoader检查。如果您希望直接构造XMLSessionConfigLoader,可以通过xmlSessionConfigLoader.setShouldCheckClassLoader(false)直接禁用类加载器检查。

答案 1 :(得分:0)

您是否尝试过使用单一对象的sessionmanager?这样,你应该总是获得相同的manager-instance,并且应该没有classloader-issues。