tomcat 的 Bitronix 配置抛出 jndi 异常
Bitronix configuration with tomcat throw jndi exception
我是 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)
在 org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:252)
在 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)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 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] 未在此上下文中绑定。无法找到 [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)
从您的堆栈跟踪看来,您是 运行 您在 tomcat 中的应用程序,因此请确保以下几点:
1) 你的 pom.xml 或项目特定的 lib 文件夹中不应该有任何 jta、bitronix 相关的 jar,因为这些 jar 应该在你的 tomcat lib 文件夹中。
2) 还要根据文档更改 server.xml 和 context.xml,这两个文件存在于 tomcat 的 conf 文件夹中。
我不确定你的 jndi 配置是什么 lookup.You 可以通过下面的 link 来为 tomcat.
设置 bitronix
https://github.com/bitronix/btm/blob/master/btm-docs/src/main/asciidoc/TomcatWithBtm2x.adoc
我是 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) 在 org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.attemptToRegisterJtaSync(TransactionCoordinatorImpl.java:252) 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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] 未在此上下文中绑定。无法找到 [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)
从您的堆栈跟踪看来,您是 运行 您在 tomcat 中的应用程序,因此请确保以下几点:
1) 你的 pom.xml 或项目特定的 lib 文件夹中不应该有任何 jta、bitronix 相关的 jar,因为这些 jar 应该在你的 tomcat lib 文件夹中。
2) 还要根据文档更改 server.xml 和 context.xml,这两个文件存在于 tomcat 的 conf 文件夹中。
我不确定你的 jndi 配置是什么 lookup.You 可以通过下面的 link 来为 tomcat.
设置 bitronixhttps://github.com/bitronix/btm/blob/master/btm-docs/src/main/asciidoc/TomcatWithBtm2x.adoc