gpt4 book ai didi

tomcat - 如何使用 Narayana JTA 5.0.3.Final 为在 Tomcat 中运行的 Web 应用程序提供 XA 事务支持?

转载 作者:行者123 更新时间:2023-11-28 23:34:38 25 4
gpt4 key购买 nike

我正在尝试在 Java EE 兼容应用程序服务器之外使用 JTA 1.2,例如在 Apache Tomcat 中,到目前为止我尝试的是遵循 Mr. Jonathan Halliday's wayHow to Configure Server Platform Using Java

但是我遇到了异常

-javax.faces.FacesException: #{utama.satu}: javax.enterprise.context.ContextNotActiveException: ARJUNA016105: Could not lookup the TransactionManager

-Caused by: javax.faces.el.EvaluationException: javax.enterprise.context.ContextNotActiveException: ARJUNA016105: Could not lookup the TransactionManager

-Caused by: javax.enterprise.context.ContextNotActiveException: ARJUNA016105: Could not lookup the TransactionManager

-Caused by: javax.naming.NameNotFoundException: Name [TransactionManager] is not bound in this Context. Unable to find [TransactionManager].

这是我的 META-INF/context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="" reloadable="true">
<Resource auth="Container" factory="org.jboss.weld.resources.ManagerObjectFactory" name="BeanManager" type="javax.enterprise.inject.spi.BeanManager"/>
<Transaction factory="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
<ResourceLink global="jdbc/coba" name="jdbc/coba" type="javax.sql.DataSource" />
</Context>

这是我的 conf/server.xml:

<GlobalNamingResources>
....
<Resource name="jdbc/coba"
auth="Container"
type="javax.sql.DataSource"
factory="org.jboss.jbossts.tomcat.TransactionalResourceFactory"
XADataSourceImpl="com.microsoft.sqlserver.jdbc.SQLServerXADataSource"
xa.setUser="sa"
xa.setPassword="123456"
xa.setURL="jdbc:sqlserver://127.0.0.1:1433;databaseName=hrd;"
/>
....
</GlobalNamingResources>

这是我的 persistence.xml,它显示了我如何重新引用数据源:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="sungguhPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:comp/env/jdbc/coba</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<validation-mode>NONE</validation-mode>
<properties>
<property name="eclipselink.session.customizer" value="id.ac.ums.tomcat.JPAEclipseLinkSessionCustomizer"/>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="eclipselink.id-validation" value="NONE"/>
</properties>
</persistence-unit>
</persistence>

我还按照官方 EclipseLink 文档的描述构建了我的客户 org.eclipse.persistence.config.SessionCustomizer,但我在过去 24 小时内仍然停留在相同的异常上:-(

最佳答案

没有检查您使用的详细信息,但您是否提供了 TransactionSynchronizationRegistry? @TransactionScoped 就是这样实现的

你需要根据你的 impl java:comp/TransactionManager 和/或 java:comp/TransactionSynchronizationRegistry 提供

关于tomcat - 如何使用 Narayana JTA 5.0.3.Final 为在 Tomcat 中运行的 Web 应用程序提供 XA 事务支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com