0

my Quartz batchjob application is throwing the below error:

org.hibernate.engine.jndi.JndiException: Unable to lookup JNDI name [java:comp/websphere/ExtendedJTATransaction


below is my configuration:

<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.

Below is my dev. environment:
1. WebSphere + SQL Server (XA DataSource) -> The problem above is happening
2. WebSphere + Oracle (XA DataSource) -> The problem above is happening
3. JBoss + SQL Server (XA DataSource) -> My quartz app is working without any error
4. JBoss + Oracle (XA DataSource) -> My quartz app is working without any error

NOTE:
The problem happens only when using WebSphere (There is no problem when using JBoss), Please help!!!


Below is the complete stacktrace:

    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)

Caused by: com.nec.asia.epid.common.dataAccess.exception.DaoException: org.hibernate.engine.jndi.JndiException: Unable to lookup JNDI name [java:comp/websphere/ExtendedJTATransaction] at com.nec.asia.epid.comp.repo.biometric.dataAccess.impl.RepoBiometricFrTempDaoHibernateImpl.load(RepoBiometricFrTempDaoHibernateImpl.java:32) at com.nec.asia.epid.comp.repo.biometric.dataAccess.impl.RepoBiometricFrTempDaoHibernateImpl.load(RepoBiometricFrTempDaoHibernateImpl.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:599) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) at org.springframework.transaction.interceptor.TransactionAspectSupport$1.doInTransaction(TransactionAspectSupport.java:285) at org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:347) at com.ibm.ws.uow.UOWManagerImpl.runUnderCurrentUOW(UOWManagerImpl.java:1341) at com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:634) at org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:290) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:279) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at $Proxy510.load(Unknown Source) at com.nec.asia.epid.comp.repo.biometric.service.impl.RepoBiometricFrTempServiceImpl.load(RepoBiometricFrTempServiceImpl.java:37) ... 42 more Caused by: org.hibernate.engine.jndi.JndiException: Unable to lookup JNDI name [java:comp/websphere/ExtendedJTATransaction] at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:117) at org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:155) at org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter$TransactionAdapter.(WebSphereExtendedJtaPlatform.java:151) at org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getTransaction(WebSphereExtendedJtaPlatform.java:123) at org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform$TransactionManagerAdapter.getStatus(WebSphereExtendedJtaPlatform.java:118) at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:76) at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:118) at org.hibernate.engine.transaction.internal.jta.JtaTransaction.getJoinStatus(JtaTransaction.java:276) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:231) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.pulse(TransactionCoordinatorImpl.java:289) at org.hibernate.internal.SessionImpl.pulseTransactionCoordinator(SessionImpl.java:2162) at org.hibernate.internal.SessionImpl.checkTransactionSynchStatus(SessionImpl.java:2156) at org.hibernate.internal.SessionImpl.createCriteria(SessionImpl.java:1606) at com.nec.asia.epid.comp.repo.biometric.dataAccess.impl.RepoBiometricFrTempDaoHibernateImpl.load(RepoBiometricFrTempDaoHibernateImpl.java:29) ... 62 more Caused by: javax.naming.ConfigurationException: A JNDI operation on a "java:" name cannot be completed because the server runtime is not able to associate the operation's thread with any J2EE application component. This condition can occur when the JNDI client using the "java:" name is not executed on the thread of a server application request. Make sure that a J2EE application does not execute JNDI operations on "java:" names within static code blocks or in threads created by that J2EE application. Such code does not necessarily run on the thread of a server application request and therefore is not supported by JNDI operations on "java:" names. [Root exception is javax.naming.NameNotFoundException: Name comp/websphere not found in context "java:".] at com.ibm.ws.naming.java.javaURLContextImpl.throwConfigurationExceptionWithDefaultJavaNS(javaURLContextImpl.java:428) at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:399) at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:221) at javax.naming.InitialContext.lookup(Unknown Source) at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:114) ... 75 more Caused by: javax.naming.NameNotFoundException: Name comp/websphere not found in context "java:". at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1837) at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1166) at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1095) at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1235) at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:395) ... 78 more

Ricky
  • 1
  • 3
  • Stack Overflow is a site for programming and development questions. This question appears to be off-topic because it is not about programming or development. See [What topics can I ask about here](http://stackoverflow.com/help/on-topic) in the Help Center. Perhaps [Super User](http://superuser.com/) or [Unix & Linux Stack Exchange](http://unix.stackexchange.com/) would be a better place to ask. Also see [Where do I post questions about Dev Ops?](http://meta.stackexchange.com/q/134306) – jww Feb 27 '17 at 06:55
  • You are probably running quartz in unmanaged thread. Check this [post](http://stackoverflow.com/a/17742363/3701228) how to configure quartz with WebSphere workManager. – Gas Feb 27 '17 at 13:18
  • Finally, I got it working. I just remove the below line from hibernate properties:
    >
    – Ricky Mar 03 '17 at 03:35

0 Answers0