NamingException:jta.UserTransaction

2024-03-28

我有一个直接使用 Java Transaction API 资源的 hibernate 应用程序。我正在尝试使用 UserTransaction 来完成一些基本的数据库事务

UserTransaction 接口定义了允许 应用程序显式管理事务边界

在 hibernate.cfg.xml 文件中,我具有以下属性:

<session-factory>
    <property name="show_sql">true</property>
    <property name="connection.datasource">java:comp/env/myDataSource</property>
    <property name="jta.UserTransaction">java:comp/UserTransaction</property>
    <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>

在应用程序的 web.xml 中,UserTransaction 设置在<resource-env-ref>

<resource-env-ref>
    <description>Object factory for MyBean instances.</description>
    <resource-env-ref-name>UserTransaction</resource-env-ref-name>
    <resource-env-ref-type>javax.transaction.UserTransaction</resource-env-ref-type>
</resource-env-ref>

在代码中,我尝试使用以下命令查找 UserTransactionInitialContext by its JNDI name

public UserTransaction getTransactionContext()
    throws Exception
    {
        if (this.ut == null) {
            ut = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
        }
    return ut;
    }   

但是返回以下异常:

03:27:37,530 ERROR [someServlet:555] Error in someMethod
javax.naming.NamingException: Cannot create resource instance
    at org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceEnvFactory.java:117)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)

该应用程序从正常运行的 Weblogic 服务器移植到 Apache Tomcat;话虽这么说-我需要定义吗用户交易 in my context.xml为了getTransactionContext()找到它?如果不是,我怎样才能在我的代码中正确返回 UserTransaction ?


将应用程序从成熟的 Java EE 应用程序服务器移植到 Tomcat(Web 应用程序服务器)需要一些额外的步骤。

所有 Java EE 服务器都带有 JTA 事务管理器,它们的事务引擎管理事务绑定和事务解析,就像UserTransactionJNDI 上下文。

您可以使用Bitronix https://github.com/bitronix/btm or Atomikos https://www.atomikos.com/,并且需要在 Tomcat context.xml 中设置 UserTransaction 和 TransactionSyncronizationRegistry。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NamingException:jta.UserTransaction 的相关文章

  • 改变 H2 中的序列

    我在生产中使用 Postgres 数据库 在测试中使用 H2 我想为现有表创建一个新序列 所以在 Liquibase 中我写了这个
  • 如何使 Java 中的自定义泛型类型链表排序?

    我正在用 java 编写自己的泛型链表 而不是使用 java 集合链表 链表的add方法由以下代码组成 public void add T item int position Node
  • Apache Poi 无法读取工作表名称

    我们在通过 Apache Poi 读取 Excel 工作表时遇到了一个奇怪的错误 我们使用的是5 0版本 该代码以前可以工作 但现在已停止在我们所有的生产环境中工作 它在本地测试时仍然有效 因此事实证明这很难调试 问题是我们返回了空工作表名
  • 通过selenium在firefox中打开私有模式

    实际上我想通过selenium打开firefox浏览器的隐身 私密模式 但每次我尝试时都是以正常模式打开firefox 经过一番谷歌搜索后 我得到了这段代码 我用它通过 selenium 在 Firefox 中打开私有模式 但它不起作用 F
  • Java 方法存根

    这就是我必须做的 为下面的 main 调用的方法定义存根 每个存根应打印 FIXME Finish methodName 后跟换行符 并应返回 1 输出示例 FIXME Finish getUserNum FIXME Finish getU
  • Java 文档生成器为 Xml 字符串返回 null 文档

    I have tried all possible answers https stackoverflow com questions 33098082 passing xml string as document returning nu
  • 如何计算Java数组的内存大小?

    我知道如何通过添加三个部分来计算Java对象的内存大小 标头 属性 引用 我还知道Java数组也是一个对象 但是当我读到 Understanding the JVM Advanced Features and Best Practices
  • JSF 2.0 动态属性,无需创建新组件

    如何向未定义这些属性的组件添加新属性而不创建自己的属性 我想做这样的事情
  • 如何处理过时的连接?

    我们的应用程序是一个 J2EE 应用程序 在 Websphere 6 1 上通过 Mainframe DB2 后端使用 Struts EJB Hibernate 最近已投入生产 我们收到过时的连接异常当用户第一次或有时登录应用程序时 此异常
  • 为单个 Maven 项目创建两个工件(war)

    我有一个Java Web项目 我们部署在两个不同客户的服务器上 99 的代码是相同的 现在我有两个ApplicationBuilder 它是包含每个客户的定制的类 每当我想要部署新版本时 我都必须手动注释一行 构建 使用 Maven 取消注
  • Dao 和服务接口的需求

    我是Spring Mvc的新手 在很多教程中 我发现有一个像这样的Dao接口 public interface StudentDAO public List
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • Java中使用流的byte[]到byte[]的ArrayList

    我有一个 byte 的 ArrayList 我想知道是否可以使用 Java 8 中的流将其转换为 byte ArrayList 内的所有数组都具有相同的大小 ArrayList
  • 比较 Java 中的两个基元数组?

    我知道 Arrays deepEquals Object Object 但这不适用于原始类型 由于数组和自动装箱的限制 请参阅这个相关帖子 https stackoverflow com questions 517751 java gene
  • 在Java程序中打开Windows虚拟键盘

    我想在按钮中创建一个事件 当我单击按钮时 我想打开 Windows 虚拟键盘 你能帮我看一下代码吗 谢谢您的合作 此致 您可以使用 getRuntime 来执行它 import java io IOException public clas
  • 在idea ide中出现钻石运算符的编译错误

    我在尝试在idea ide中编译一些简单的源代码时收到此错误 java diamond operator is not supported in source 1 6 use source 7 or higher to enable dia
  • 了解 Collection.isEmpty() 和 Collection.size() == 0 之间的区别? [复制]

    这个问题在这里已经有答案了 我读过很多关于两者之间差异的文章isEmpty and size gt 0 用于检查collection是否为空并发现isEmpty 表现超过size 但我无法轻易理解为什么性能isEmpty 即使 isEmpt
  • 为什么 Collections.addAll 应该比 c.addAll 更快

    The Java API 文档说 http java sun com javase 6 docs api java util Collections html addAll java util Collection 20T 以下关于Coll
  • 连接空字符串来进行字符串转换真的那么糟糕吗?

    假设我有两个char变量 稍后我想将它们连接成一个字符串 我就是这样做的 char c1 c2 String s c1 c2 我见过有人说 trick 是 丑陋的 等等 你应该使用String valueOf or Character to
  • 无法解析类或包“h2”

    我为我的网络应用程序开发后端应用程序 在我的项目 SpringBoot Maven 中 我想添加 h2 数据库 根据网上的教程 添加了以下几行应用程序属性 file server port 8088 spring h2 console en

随机推荐