2010-07-30 9 views
4

Je suis confronté à un problème particulier. Ci-dessous est la trace de la pile de quelle erreur je reçois.Veuillez aider.Erreur lors de l'acquisition de la session Client dans 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

Y at-il d'autres erreurs au cours du déploiement? Avez-vous appelé ServerSession.login()? Créez-vous la ServerSession à l'aide de SessionManager? –

+0

@Gordon salut .. cette erreur ne vient que lorsque je tente d'utiliser la même classe par des chargeurs de classe .. .. comme dans l'application am i utilise à la fois servlet et EJB .. si le code fonctionne tout à fait bien si j'utilise l'un d'eux .. soit servlet ou EJB .. mais lorsque je tente d'utiliser les deux simultaneouly, si obtenir cette erreur .. Je pense que ce peut être la question des chargeurs de classe .. comme servlet a ses propres chargeurs de classe et EJB a son propre .. –

+0

ajouter au commentaire ci-dessus .. J'utilise le gestionnaire de session pour créer une session de serveur .. –

Répondre

1

EclipseLink a la possibilité de vérifier les changements de classloader en cas de redéploiement de l'application. Cela peut provoquer des problèmes lors de l'appel dans SessionManager pour une session particulière à partir d'un conteneur Web et un conteneur EJB.

Vérifiez que vous utilisez l'API getSession (null, sessionName, classLoader, true, false) ou la même méthode avec la signature la plus longue pour désactiver cette vérification classLoader. Si vous souhaitez construire un XMLSessionConfigLoader directement, vous pouvez désactiver le contrôle de classe directement par xmlSessionConfigLoader.setShouldCheckClassLoader (false).

0

Avez-vous essayé d'utiliser le gestionnaire de session à partir d'un objet singleton? De cette façon, vous devriez toujours avoir la même instance de gestionnaire et il ne devrait pas y avoir de problèmes de classloader.