Bitronix配置与tomcat抛出jndi异常

时间:2016-12-26 19:25:35

标签: hibernate tomcat spring-boot bitronix

我是bitronix的新手,我的应用程序中需要xa事务。

我正在尝试使用spring配置bitronix,但是我在启动tomcat时遇到异常。

感谢任何帮助。

引起:org.hibernate.engine.jndi.JndiException:无法查找JNDI名称[javax.transaction.TransactionManager]         在org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:117)         在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)         在org.hibernate.jpa.spi.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1584)         在org.hibernate.jpa.spi.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:210)         在org.hibernate.jpa.internal.EntityManagerImpl。(EntityManagerImpl.java:91)         在org.hibernate.jpa.internal.EntityManagerFactoryImpl.internalCreateEntityManager(EntityManagerFactoryImpl.java:345)         在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)         在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:407)         在org.springframework.orm.jpa.AbstractEntityManagerFactoryBean $ ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:560)         在com.sun.proxy。$ Proxy78.createEntityManager(未知来源)         在org.springframework.orm.jpa.SharedEntityManagerCreator $ SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:288)         在com.sun.proxy。$ Proxy83.getDelegate(未知来源)         在org.springframework.data.jpa.provider.PersistenceProvider.fromEntityManager(PersistenceProvider.java:295) 引发者:javax.naming.NameNotFoundException:名称[javax.transaction.TransactionManager]未绑定在此Context中。无法找到[javax.transaction.TransactionManager]。         在org.apache.naming.NamingContext.lookup(NamingContext.java:818)         在org.apache.naming.NamingContext.lookup(NamingContext.java:152)         在org.apache.naming.SelectorContext.lookup(SelectorContext.java:134)         在javax.naming.InitialContext.lookup(InitialContext.java:415)         在org.hibernate.engine.jndi.internal.JndiServiceImpl.locate (JndiServiceImpl.java:114)

1 个答案:

答案 0 :(得分:0)

从您的堆栈跟踪看起来您正在tomcat中运行您的应用程序,因此请确保以下几点:

1)你的pom.xml或项目特定的lib文件夹中不应该有任何jta,bitronix相关的jar文件,因为那些jar应该在你的tomcat lib文件夹中。

2)同时根据文档更改server.xml和context.xml,这两个文件存在于tomcat的conf文件夹中。

我不确定你的jndi lookup的配置是什么。你可以通过下面的链接来设置tomcat的bitronix。

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