【问题标题】:JNDI lookup failureJNDI 查找失败
【发布时间】:2019-03-19 06:57:19
【问题描述】:

如果有人可以帮助我纠正代码中的问题,我将不胜感激。不知道哪里出错了。

目前我的 persistence.xml 包含

  <property name="hibernate.transaction.manager_lookup_class" value="#####.hibernate.JbossTSTransactionManagerLookup"/>

  <property name="hibernate.current_session_context_class" value="jta"/>

随着

 <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

    <property name="persistenceUnitName" value="####"/>

    <property name="jpaDialect" ref="jpaDialect"/>

</bean>

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">

    <property name="transactionManagerName" value="java:comp/env/TransactionManager"/>

</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

上下文初始化失败:org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名称为“transactionManager”的bean时出错[###XMLConfig.xml]:调用init方法失败;嵌套异常是 org.springframework.transaction.TransactionSystemException:JTA TransactionManager 在 JNDI 位置 [java:comp/env/TransactionManager] 不可用;嵌套异常是 org.springframework.jndi.TypeMismatchNamingException:JNDI 位置 [java:comp/env/TransactionManager] 上可用的 [class com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple] 类型的对象不可分配给 [ javax.transaction.TransactionManager]

原因:org.springframework.transaction.TransactionSystemException:JTA TransactionManager 在 JNDI 位置 [java:comp/env/TransactionManager] 不可用;嵌套异常是 org.springframework.jndi.TypeMismatchNamingException:JNDI 位置 [java:comp/env/TransactionManager] 上可用的 [class com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple] 类型的对象不可分配给 [ javax.transaction.TransactionManager]

在 org.springframework.transaction.jta.JtaTransactionManager.lookupTransactionManager(JtaTransactionManager.java:598)

原因:org.springframework.jndi.TypeMismatchNamingException:在 JNDI 位置 [java:comp/env/TransactionManager] 可用的类型为 [class com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple] 的对象不是可分配给 org.springframework.jndi.JndiTemplate.lookup() 中的 [javax.transaction.TransactionManager] 在 org.springframework.transaction.jta.JtaTransactionManager.lookupTransactionManager()

【问题讨论】:

    标签: spring spring-mvc jboss jndi jbossts


    【解决方案1】:

    您的项目的类路径似乎存在一些问题。检查您的项目中是否存在相同依赖项的两个版本。在我的情况下,我在类路径中有多个版本的 jboss-transaction jar,只保留一个版本为我解决了这个问题。检查是否存在导致此问题的传递依赖项,您可以在 maven pom.xml 中排除这些依赖项。

    【讨论】:

    • 在我的情况下没有两个版本,在 pom 中只添加了一个 postgre sql 依赖项,但仍然遇到同样的问题
    猜你喜欢
    • 2013-06-29
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2011-07-24
    • 1970-01-01
    相关资源
    最近更新 更多