2010-07-30 3 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()? Вы создаете ServerSession с помощью SessionManager? –

+0

@Gordon привет .. эта ошибка возникает только тогда, когда я пытаюсь использовать один и тот же класс с помощью разных загрузчиков классов .. как .. в am приложение я использую как сервлет, так и EJB .. поэтому код работает абсолютно нормально, если я использую один из них .. либо сервлет, либо EJB .., но когда я пытаюсь использовать оба одновременно, если вы получите эту ошибку. Я чувствую, что это может быть проблемой загрузчиков классов .. поскольку сервлет имеет свои собственные загрузчики классов, а EJB имеет свои собственные. –

+0

добавив к вышеуказанному комментарию. Я использую диспетчер сеансов для создания сеанса сервера. –

ответ

1

У EclipseLink есть возможность проверить изменения класса загрузчика в случаях перераспределения приложений. Это может вызвать проблемы при вызове в SessionManager для определенного сеанса как из веб-контейнера, так и из контейнера EJB.

Убедитесь, что вы используете API getSession (null, sessionName, classLoader, true, false) или тот же метод с более длинной сигнатурой, чтобы отключить проверку этого классаLoader. Если вы хотите построить XMLSessionConfigLoader напрямую, вы можете отключить проверку загрузчика классов напрямую, используя xmlSessionConfigLoader.setShouldCheckClassLoader (false).

0

Пробовал ли вы использовать SessionManager из одноэлементного объекта? Таким образом, вы всегда должны получать один и тот же экземпляр менеджера, и не должно быть проблем с загрузкой классов.

 Смежные вопросы

  • Нет связанных вопросов^_^