`我已经面对这个问题很长时间了。我尝试过解决方案但没有运气。 我正在将java版本从jdk8迁移到jdk17。
堆栈跟踪: org.springframework.beans.factory.BeanCreationException:创建 ServletContext 资源中定义的名为“transactionManager”的 bean 时出错 [/WEB-INF/spring-config/transactionContext.xml]:JTA UserTransaction 在 JNDI 位置 [java:comp/ 不可用用户交易] .. 导致:org.springframework.transaction.TransactionSystemException:JTA UserTransaction 在 JNDI 位置 [java:comp/UserTransaction] 不可用 ... 55 更多 引起原因:javax.naming.NamingException:解析引用时出现意外异常 org.springframework.transaction.jta.JtaTransactionManager.lookupUserTransaction(JtaTransactionManager.java:574) ... 59 更多
这是部署问题。
我分别使用以下版本和配置。 JAVA:JDK 17 春季:18.0.6 Hibernate jpa 版本:6.4.4.Final 雅加达:10 雄猫:10.1
交易.xml
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager"/>
<property name="transactionSynchronizationRegistryName"
value="java:comp/TransactionSynchronizationRegistry" />
<property name="userTransactionName" value="java:comp/UserTransaction" />
<bean\>
<tx:annotation-driven transaction-manager="transactionManager" />
上下文.xml
<Resource accessToUnderlyingConnectionAllowed="true" allowLocalTransactions="true" auth="Container" className="org.enhydra.jdbc.pool.StandardXAPoolDataSource" driverClassName="org.postgresql.Driver" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive="100" maxIdle="20" maxWait="10000" minIdle="5" name="jdbc/meerkatDataSource" password="projectSpecificPassword" type="javax.sql.DataSource" url="projectSpecificURL" username="projectSpecificUsername" validationQuery="select 1 from Dual"/>
持久性.xml
<property name = "hibernate.jndi.class" value="javax.naming.InitialContext" />
<property name="hibernate.jndi.url" value="javax.naming.Context.PROVIDER_URL"/>
<property name="jta.UserTransaction" value="java:comp/UserTransaction"/>
<property name ="hibernate.transaction.coordinator.class" value="jta" />
<property name ="hibernate.transaction.jta.platform_resolver" value="org.hibernate.engine.transaction.jta.platform.spi.JtaPlatformResolver" />
<property name = "hibernate.transaction.jta.platform" value ="org.hibernate.engine.transaction.jta.platform.internal.JOTMJtaPlatform"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
任何建议或指导都会有帮助。`
:::更新:::
经过长时间的检查,终于解决了上述问题。请仔细按照以下步骤操作。