Search code examples
hibernatetomcatspring-bootbitronix

Bitronix configuration with tomcat throw jndi exception


I am new to bitronix and I need xa transaction in my application.

I am trying to configure bitronix with spring but I am getting below exception starting tomcat.

Any help is appreciated.

Caused by: org.hibernate.engine.jndi.JndiException: Unable to lookup JNDI name [javax.transaction.TransactionManager] at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:117) at org.hibernate.engine.transaction.jta.platform.internal.WeblogicJtaPlatform.locateTransactionManager(WeblogicJtaPlatform.java:41) org.hibernate.engine.transaction.jta.platform.internal.AbstractJtaPlatform.canRegisterSynchronization(AbstractJtaPlatform.java:148) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:252) at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.pulse(TransactionCoordinatorImpl.java:289) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1584) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:210) at org.hibernate.jpa.internal.EntityManagerImpl.(EntityManagerImpl.java:91) at org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager(EntityManagerFactoryImpl.java:345) at org.hibernate.jpa.internal.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:313) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:407) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:560) at com.sun.proxy.$Proxy78.createEntityManager(Unknown Source) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:288) at com.sun.proxy.$Proxy83.getDelegate(Unknown Source) at org.springframework.data.jpa.provider.PersistenceProvider.fromEntityManager(PersistenceProvider.java:295) Caused by: javax.naming.NameNotFoundException: Name [javax.transaction.TransactionManager] is not bound in this Context. Unable to find [javax.transaction.TransactionManager]. at org.apache.naming.NamingContext.lookup(NamingContext.java:818) at org.apache.naming.NamingContext.lookup(NamingContext.java:152) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:134) at javax.naming.InitialContext.lookup(InitialContext.java:415) at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate (JndiServiceImpl.java:114)


Solution

  • Looks like from your stack trace you are running your application in tomcat so make sure below points :

    1) you should not have any jta,bitronix related jars in your pom.xml or project specific lib folder because those jar should be in your tomcat lib folder.

    2) Also change server.xml and context.xml as per the document those two files are exists in tomcat's conf folder.

    I am not sure what is your configuration for jndi lookup.You can go through below link which is for setting up bitronix for tomcat.

    https://github.com/bitronix/btm/blob/master/btm-docs/src/main/asciidoc/TomcatWithBtm2x.adoc