问题标签 [jta]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
862 浏览

java - Java Spring 数据库应用程序不会退出对 org.enhydra.jdbc.pool.PoolKeeper 的引用,为什么仍然处于活动状态?

大家好,我有一个简单的 Spring 应用程序,它不会结束,因为仍然有对 org.enhydra.jdbc.pool.PoolKeeper 的引用。我在下面列出了所有我认为相关的参考资料,看起来还可以吗?以前有没有人经历过这种情况?

我运行 jstack 来查看哪些非守护线程在运行,并找到以下内容。

现在我很困惑为什么会发生这种情况我包括我的 JPA 配置的相关部分

谢谢保罗

0 投票
3 回答
9054 浏览

jpa - 带 JDBC 的 EJB 3

是否可以将 EJB 3 与 JDBC 一起使用。我在某处读到,这是允许的。

但是,我听说 EJB 3 实现默认使用 JTA。这对 JDBC 意味着什么?只是为了交易支持吗?这意味着在使用 JDBC 代码时使用 JTA 进行事务处理?这意味着即使本地事务也被实现为全局事务?

这是否意味着将 JDBC 与 EJB 3 一起使用不是一个好主意?许多人将我指向 JPA,但它是一个 ORM。我想使用 SQL。

有什么建议么?

0 投票
4 回答
13128 浏览

java - Spring / JTA / JPA 单元测试:回滚不起作用

我正在尝试使用 Spring 测试实体 EJB3。

EJB 本身不使用 Spring,我想尽量减少生产 JPA 配置的重复(例如,不重复persistence.xml)。

我的单元测试似乎可以工作,但即使我的单元测试应该是事务性的,数据也会在各种测试方法之间持续存在......

这是我的实体:

我的单元测试:

和我的 appContext.xml :

当我运行我的测试时,test2 失败了,因为它在我期望只有一个的地方找到了 2 个实体(因为第一个应该已经回滚了......)

我尝试了很多不同的配置,这似乎是我能得到的最全面的配置......我没有其他想法。你 ?

0 投票
1 回答
1376 浏览

transactions - CMT 的 JTA 事务分界究竟在哪里得到尊重?

我试图完全理解 JTA 与 CMT 的划分。我遇到的行为是,在 EJB 上仅尊重该方法的第一个 @TransactionAttribute,而对具有不同 @TransactionAttribute 注释的同一 bean 的后续方法调用则没有。

例子:

我看到的行为是 Bar.save() 抛出 TransactionRequiredException。所以这告诉我在 save() 上设置的 REQUIRED 注释不会创建事务。REQUIRES_NEW 也不起作用。如果我将 save() 移动到另一个 EJB,它会按预期工作。

这是否意味着只有第一个 TransactionAttribute 注释被尊重,而不管后续方法调用是否具有不同的注释值?这是一个错误还是预期的行为?我似乎找不到任何具体解释这一点的文档。我很感激对此的任何见解。

我的堆栈:EJB 3.0、Toplink Essentials、GF V2UR2

0 投票
3 回答
5839 浏览

jakarta-ee - J2EE - JPA - EJB3 - MDB 方法中的事务

我在 JBoss 5.1.0 部署了资源本地数据源 (Oracle9i):

持久性单元:

在 MDB 中,当调用 onMessage 方法时,我试图持久化一个 bean 并通过 namedQuery 获取该类型的最新 5 个 bean:

我的问题是没有任何错误痕迹,但我的 Oracle 数据库中仍然没有任何持久对象。在大量消息调用last5.size()返回 0 后。日志非常干净。

我发现对 MDB 的唯一限制是我必须在方法上使用 REQUIRED 或 NOT_SUPPORTED 事务属性。我的 onMessage 没有注释,因此它使用 REQUIRED 作为默认值。另外我在 MDB 类上没有任何注释,所以 bean 应该使用容器管理的事务。

我做错了什么?

0 投票
1 回答
3066 浏览

jakarta-ee - 对于 EJB 2.1,是否需要在 ejb-jar.xml 中声明对资源的引用?

我正在使用带有很多 MDB 的 Weblogic 9.2。这些 MDB 访问 JDBC 数据源,并分别使用本地和外部 XAConnectionFactory 写入本地和外部管理的 JMS 目标。每个 MDB 划定一个容器管理的 JTA 事务,该事务应该分布在所有这些资源中。

下面是从我的 ejb-jar.xml 中摘录的一个 MDB,它从名为“MyDestination”的本地队列消费并生成到名为“MyOtherDestination”的 IBM Websphere MQ 队列。这些逻辑名称链接到我的 weblogic-ejb-jar.xml 文件中的物理对象。

是否需要使用 <resource-ref> 和 <message-destination-ref> 标签将 ConnectionFactory 和 Queue 公开给 MDB?如果是这样,它是 Weblogic 要求的还是 J2EE 规范要求的?出于什么目的?例如,是否需要支持 XA 事务性?

我已经意识到使用暴露给 MDB 命名上下文的名称将管理对象与我的 MDB 分离的好处。这是指定这些标签时唯一添加的值吗?换句话说,仅使用 InitialContext 和对象的完全限定名称从我的 MDB 中引用这些对象是否可以接受?

0 投票
2 回答
8844 浏览

hibernate - 如何获取 Hibernate 配置属性?

我在 jpa 中使用 hibernate,它配置了 persistence.xml 是否可以从 web 应用程序获取 hibernate 连接属性?

谢谢。

0 投票
2 回答
47061 浏览

java - Spring JTA 配置 - 如何设置 TransactionManager?

我们在 Spring config 中将 Spring 事务配置为:

我认为这意味着 Spring 将自动发现底层 JTA 实现。因此,当我们启动 JBoss 时,我们会在 Spring 搜索时看到这些消息:

然后最终看到:

问题是 - 我们如何编辑我们的<tx:jta-transaction-manager/>标签以显式配置java:/Transaction ManagerJTA 实现,从而避免日志中的所有这些堆栈跟踪?(我不希望只更改 Log4J 日志记录级别)


更新:我<tx:jta-transaction-manager/>用下面的配置替换,它似乎工作..我猜这没关系?

0 投票
2 回答
1257 浏览

unit-testing - JTA:如何测试 JMS 和 JDBC 故障?

我们目前正在测试 JTA 故障行为,在一个使用 JMS 接收消息、持久化它们并使用另一个类发送结果的系统上。

整个事情是使用 Spring 捆绑在一起的。当前的单元测试使用 HSQLDB、Apache ActiveMQ 和 Bitronix 进行事务管理。这方面的成功是有限的,主要是因为 HSQLDB 没有实现 XA 事务。

那么问题来了:如何在事务单元测试中最好地模拟数据库故障?有什么方法可以让标准 JDBC 驱动程序(比如 Oracle)在测试过程中失败?

注意按电源按钮不是可重复的测试:)

0 投票
2 回答
4534 浏览

hibernate - WAS 6.1、JPA 与 JTA、Hibernate、Spring:数据检索问题

我正在运行一个包含以下组件的应用程序:

  • 甲骨文 9i
  • 带有 WS 和 EJB3 功能包的 WAS 6.1.0.23
  • 使用 Hibernate 3.3.2.GA 作为提供者的 JPA(使用 Hibernate-EntityManager 3.4.0)
  • WAS 的 Spring 事务管理器:UowTransactionManager (spring 2.5.6)
  • 具有流管理持久性(2.0.8)的Spring webflow,即实体管理器被序列化到http会话中,并在每个请求时恢复。

在从 web 控制器到服务层的每个请求中(使用 Spring 的 @Transactional 注释),我注意到对于 Hibernate 在事务内的服务调用期间执行的每个 SQL 查询,从 jndi DataSource 请求一个新的 DataSource 连接Hibernate 的 ConnectionProvider,直到 DataSource 用完空闲连接并最终挂起。

以下是部分配置:

  1. 春天:

    /li>
  2. 持久性.xml

    /li>
  3. 服务

    /li>
  4. /li>

请注意,事务是只读的,这对于流持久性是正常的:只有最后一个转换(commit=true)调用非只读事务方法。打开 readOnly 标志会自动将 Hibernate 刷新模式转换为 MANUAL。

在进行一些调试时,我注意到以下内容:

  • 在服务的拦截链中正确调用了UOW事务管理器,提示事务处于活动状态
  • Hibernate 通过在注入 EMF 的原始 DataSource 上调用 DataSource.getConnection() 来请求连接;获取连接的策略来自 Hibernate 的 InjectedDataSourceConnectionProvider,并且此类引用 WAS 数据源(不是知道活动事务的代理等)。

我想问题出在第二点,但我在配置中找不到错误。有人可以帮忙吗?

谢谢你的帮助。