gpt4 book ai didi

java - 为什么EJB服务器和客户端在同一事务中看到对方的数据库更改?

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:53 25 4
gpt4 key购买 nike

我已经在 Weblogic 服务器中部署了一个 EJB。从另一个远程客户端,我使用 JNDI 查找 EJB 并调用在分布式事务中插入一些记录的方法。然后,当它返回到远程客户端时,我尝试执行以下 Activity 之一,但失败并显示以下结果:

A) 尝试使用 EJB 发回的 key 检索远程客户端中 EJB 插入的对象,但找不到记录。

B) 尝试在远程客户端(使用 Eclipselink JPA)中插入不同的记录(对 EJB 插入的记录没有任何约束),并抛出异常“ORA-02049:超时:分布式事务等待锁定”

我不在 EJB 端进行任何提交,并让所有内容都由容器处理。我的事务属性在 EJB 服务器方法和客户端方法中设置为 REQUIRED。

在EJB和远程客户端上都使用XA数据库连接。为什么他们都看不到对方的变化?

任何人都可以阐明这个问题吗?我不知道这是怎么回事?

最佳答案

我已经解决了这个问题。问题在于 EJB 使用的连接不是 XA。之前我假设我们现有的应用程序正在使用 XA 连接。因此,我必须在 EJB 上放置拦截器注释才能使用 XA 连接,如下所示:

@Interceptors({JtaXaDataSourceRegistryInterceptor.class})

当使用远程 EJB 和事务时,需要在客户端和 EJB 所在的服务器中都有 XA 连接,以参与数据库 Activity 的两阶段提交。

关于java - 为什么EJB服务器和客户端在同一事务中看到对方的数据库更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21226508/

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