Проект состоит из EJB 2.0 и EJB 3.0 Фасоль. Я преобразовал сеанс сеанса с EJB 2.0 в EJB 3.0, и когда я запускаю проект, он инициализирует сессионный компонент несколько раз. Сессионный компонент вызывает другие сеансовые компоненты, которые, в свою очередь, вызывают разные методы этого сеансового компонента. До тех пор, пока это был сеанс EJB 2.0, был инициализирован только один экземпляр, но теперь инициализируются несколько экземпляров.Несколько экземпляров Session Bean и метод @PostConstruct под названием
UtilitiesController Session Bean инициирует поток, который вызывает Разное Класс (Вспомогательный класс POJO), который в свою очередь вызывает ProductScheme Session Bean, который вызывает ServerGlobalValues (Вспомогательный класс POJO) и он вызывает UtilitiesController Session Bean
Ниже приведены журналы:
setSessionContext Вызывается!
setSessionContext Called!
Метод @PostConstruct называется!
Запуск инициализации
< 2013-06-07 15: 03: 53,535 - ServerSession (316201757) - EclipseLink, версия: Затмение Постоянство Услуги - 2.1.3.v20110304-r9073>
< 2013-06 -07 15: 03: 53.535 - ServerSession (316201757) - Сервер: 10.3.5.0>
setSessionContext Called!
setSessionContext Called!
Метод @PostConstruct называется!
Запуск инициализации
< 2013-06-07 15: 03: 53.691 - ServerSession (316201757) - The DatabaseSession имеет внешний контроллер транзакций, определенный нечто иное, чем ServerPlatform. EclipseLink позволит переопределить внешний контроллер транзакций, но мы рекомендуем рассмотреть альтернативу подкласса org.eclipse.persistence.platform.server.ServerPlatformBase и переопределить getExternalTransactionControllerClass().>
< 2013-06-07 15:03: 53.691 - ServerSession (316201757) - EclipseLink, версия: Eclipse Persistence Services - 2.1.3.v20110304-r9073>
< 2013-06-07 15: 03: 53.691 - ServerSession (316201757) - Server: 10.3. 5.0>
setSessionContext Called!
setSessionContext Called!
Метод @PostConstruct называется!
Запуск инициализации
< 2013-06-07 15: 03: 53.722 - ServerSession (316201757) - The DatabaseSession имеет внешний контроллер транзакций, определенный нечто иное, чем ServerPlatform.EclipseLink позволит переопределить внешний контроллер транзакций, но мы рекомендуем рассмотреть альтернативу подкласса org.eclipse.persistence.platform.server.ServerPlatformBase и переопределить getExternalTransactionControllerClass().>
< 2013-06-07 15:03: 53.722 - ServerSession (316201757) - EclipseLink, версия: Eclipse Persistence Services - 2.1.3.v20110304-r9073>
< 2013-06-07 15: 03: 53.722 - ServerSession (316201757) - Сервер: 10.3. 5.0>
setSessionContext Called!
setSessionContext Called!
Метод @PostConstruct называется!
Запуск инициализации
< 2013-06-07 15: 03: 53.847 - ServerSession (316201757) - The DatabaseSession имеет внешний контроллер транзакций, определенный нечто иное, чем ServerPlatform. EclipseLink позволит переопределить внешний контроллер транзакций, но мы рекомендуем рассмотреть альтернативу подкласса org.eclipse.persistence.platform.server.ServerPlatformBase и переопределить getExternalTransactionControllerClass().>
< 2013-06-07 15:03: 53.847 - ServerSession (316201757) - EclipseLink, версия: Eclipse Persistence Services - 2.1.3.v20110304-r9073>
< 2013-06-07 15: 03: 53.847 - ServerSession (316201757) - Server: 10.3. 5.0>
setSessionContext Called!
setSessionContext Called!
Метод @PostConstruct называется!
Запуск инициализации
< 2013-06-07 15: 03: 53.879 - ServerSession (316201757) - The DatabaseSession имеет внешний контроллер транзакций, определенный нечто иное, чем ServerPlatform. EclipseLink позволит переопределить внешний контроллер транзакций, но мы рекомендуем рассмотреть альтернативу подкласса org.eclipse.persistence.platform.server.ServerPlatformBase и переопределить getExternalTransactionControllerClass().>
< 2013-06-07 15:03: 53.879 - ServerSession (316201757) - EclipseLink, версия: Eclipse Persistence Services - 2.1.3.v20110304-r9073>
< 2013-06-07 15: 03: 53.879 - ServerSession (316201757) - Server: 10.3. 5.0>
javax.ejb.EJBTransactionRolledbackException: EJB Exception:; вложенное исключение: Exception [EclipseLink-8030] (Eclipse, Постоянство Услуги - 2.1.3.v20110304-r9073): org.eclipse.persistence.exceptions.JPQLException
Как видно из бревен, что setSessionContext называется дважды для каждого создания экземпляра и метода @PostConstruct также вызывается перед инициализацией.
Может кто-нибудь указать, что может быть причиной такого поведения. Отсутствует ли какая-либо конфигурация?
Как выглядит ваш код сеанса? Каковы трассировки стека для двух вызовов setSessionContext (используя Thread.dumpStack())? –