Quartz начал бросать java:comp/websphere/ExtendedJTATransaction после обновления hibernate3 до hibernate4

мое пакетное задание Quartz выдает следующую ошибку:

org.hibernate.engine.jndi.JndiException: невозможно найти имя JNDI [java:comp/websphere/ExtendedJTATransaction


ниже моя конфигурация:

<bean id="sessionFactoryTxt"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

<property name="dataSource"><ref bean="jndiDatasourceTxt" /></property>

<property name="mappingLocations">
    <list>
        <value>classpath:com/nec/asia/epid/config/hibernate/*.hbm.xml</value>
    </list>
</property>
<property name="hibernateProperties">
    <props>                 
        <prop key="hibernate.dialect">${hibernate.dialect}</prop>
        <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
        <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>                                 
        <prop key="hibernate.bytecode.use_reflection_optimizer">${hibernate.bytecode.use_reflection_optimizer}</prop>
        <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
        <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
        <prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop>                 
        <prop key="hibernate.connection.isolation">3</prop> 
        <prop key="hibernate.current_session_context_class">jta</prop> 
        <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>  
        <prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup</prop>                       

        <prop key="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</prop>
        <prop key="hibernate.validator.apply_to_ddl">false</prop>
        <prop key="hibernate.validator.autoregister_listeners">false</prop>         

    </props>
</property>    
<property name="jtaTransactionManager" ref="transactionManager"></property>   

The above error is happening only when I use WebSphere (XA DataSource), there is no problem when using Jboss.

Ниже мой разработчик. среда:
1. WebSphere + SQL Server (XA DataSource) -> возникает проблема, описанная выше
2. WebSphere + Oracle (XA DataSource) -> возникает проблема, описанная выше
3. JBoss + SQL Server (XA DataSource) -> Мое приложение для кварца работает без ошибок
4. JBoss + Oracle (XA DataSource) -> Мое приложение для кварца работает без ошибок

ПРИМЕЧАНИЕ:
Проблема возникает только при использовании WebSphere (при использовании JBoss проблем нет). Пожалуйста, помогите!!!


Ниже представлена ​​полная трассировка стека:

    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:112)
at org.quartz.core.JobRunShell.run(JobRunShell.java:223)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)

Stack Overflow — это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. раздел О каких темах я могу задать здесь в Справочном центре. Возможно, Суперпользователь или Unix & Linux Stack Exchange лучше спросить. См. также раздел Где размещать вопросы о Dev Ops?


person Ricky    schedule 27.02.2017    source источник
comment
Вероятно, вы используете кварц в неуправляемом потоке. Прочтите этот сообщение о том, как настроить кварц с помощью WebSphere workManager.   -  person jww    schedule 27.02.2017
comment
Наконец, у меня все заработало. Я просто удаляю следующую строку из свойств спящего режима: ‹br› › ‹property name=jtaTransactionManager ref=transactionManager›‹/property›   -  person Gas    schedule 27.02.2017
comment
Причина: com.nec.asia.epid.common.dataAccess.exception.DaoException: org.hibernate.engine.jndi.JndiException: невозможно найти имя JNDI [java:comp/websphere/ExtendedJTATransaction] на com.nec.asia. epid.comp.repo.biometric.dataAccess.impl.RepoBiometricFrTempDaoHibernateImpl.load(RepoBiometricFrTempDaoHibernateImpl.java:32) в com.nec.asia.epid.comp.repo.biometric.dataAccess.impl.RepoBiometricFrTempDaoHibernateImpl.load(RepoBiometricFrTempDaoHibernateImpl.java:1nateImpl. ) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) в java.lang.reflect. Method.invoke(Method.java:599) в org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) в org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) в org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) в org.springframework.transaction.interceptor.TransactionAspectSupport$1 .doInTransaction(TransactionAspectSupport.java:285) в org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:347) в com.ibm.ws.uow.UOWManagerImpl.runUnderCurrentUOW(UOWManagerImpl.java:1341) в com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:634) в org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:290) в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction( TransactionAspectSupport.java:279) в org.springframework.transaction.interceptor.TransactionInterceptor.invok e(TransactionInterceptor.java:95) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) в org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) в $Proxy510. load(Unknown Source) at com.nec.asia.epid.comp.repo.biometric.service.impl.RepoBiometricFrTempServiceImpl.load(RepoBiometricFrTempServiceImpl.java:37) ... еще 42 Причина: org.hibernate.engine.jndi. JndiException: невозможно найти имя JNDI [java:comp/websphere/ExtendedJTATransaction] в org.hibernate.engine.jndi.internal. JndiServiceImpl.locate(JndiServiceImpl.java:117) в org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:155) в org.hibernate.engine.transaction.jta.platform .internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:151) в org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getTransaction(WebSphereExtendedJtaPlatform.java:123) в org.hibernate.engine. transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getStatus(WebSphereExtendedJtaPlatform.java:118) в org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:76) в org.hibernate.engine. transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:118) в org.hibernate.engine.transaction.internal.jta.J taTransaction.getJoinStatus(JtaTransaction.java:276) в org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:231) в org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.pulse(TransactionCoordinatorImpl.java: 289) в org.hibernate.internal.SessionImpl.pulseTransactionCoordinator(SessionImpl.java:2162) в org.hibernate.internal.SessionImpl.checkTransactionSynchStatus(SessionImpl.java:2156) в org.hibernate.internal.SessionImpl.createCriteria(SessionImpl.java) :1606) в com.nec.asia.epid.comp.repo.biometric.dataAccess.impl.RepoBiometricFrTempDaoHibernateImpl.load(RepoBiometricFrTempDaoHibernateImpl.java:29) ... еще 62 Причина: javax.naming.ConfigurationException: операция JNDI на имя "java:" не может быть завершено, поскольку среда выполнения сервера не может связать поток операции с каким-либо компонентом приложения J2EE. Это условие может возникнуть, когда клиент JNDI, использующий имя «java:», не выполняется в потоке запроса серверного приложения. Убедитесь, что приложение J2EE не выполняет операции JNDI с именами "java:" в статических блоках кода или в потоках, созданных этим приложением J2EE. Такой код не обязательно выполняется в потоке запроса серверного приложения и, следовательно, не поддерживается операциями JNDI с именами "java:". [Корневое исключение — javax.naming.NameNotFoundException: имя comp/websphere не найдено в контексте "java:". ] по адресу com.ibm.ws.naming.java.javaURLContextImpl.throwConfigurationExceptionWithDefaultJavaNS(javaURLContextImpl.java:428) по адресу com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:399) по адресу com.ibm.ws. naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:221) в javax.naming.InitialContext.lookup(неизвестный источник) в org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:114)... Еще 75 Причина: javax.naming.NameNotFoundException: Имя comp/websphere не найдено в контексте "java:". в com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1837) в com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1166) в com.ibm.ws.naming .ipbase.NameSpace.lookup(NameSpace.java:1095) по адресу com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1235) по адресу com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl .java:395) ... еще 78   -  person Ricky    schedule 03.03.2017