我们正在开发带有Weblogic应用服务器(12.1.1.0)的软件;我们有一个域和两个应用程序。我们刚刚从开发数据库移动到预生产数据库(类似于生产),噢,我们有一个重大问题去...
DBA说数据库运行相同的版本 - 甲骨文公司11(我不记得确切的版本)。我们唯一的区别是dvlp数据库使用SID进行连接,另外两个使用服务名称。Weblogic应用服务器中的主要SQLException(与XA相关)服务器
现在,在我们的域中,我们有两个数据源X和Y.它们都连接到同一个数据库。我们在两者上都使用XA驱动程序。我们的应用程序都使用具有两个PU(持久性单元)的相同'persistence.xml'(和实体),每个使用不同的数据源(X和Y)。
问题是这样的:
- 一个MDB开始处理请求。
- 它使用两个PU与EntityManagers和Y数据源与DataSource接口,用于获取连接(我们有一些JDBC代码)。
- 它从另一个应用程序调用一个bean。
- 另一个bean尝试使用其中一个PU(连接到X数据源的一个)。
抛出SQLException:
XA error: XAResource.XAER_NOTA start() failed on resource 'x_my_domain': XAER_NOTA : The XID is not valid
我们搜查了错误在线,我们发现,我们应该在数据源配置更改为
XASetTransactionTimeout=true
XATransactionTimeout=0
但这没有奏效。我们也试过(很多)来调整数据源的配置,最终删除其中的一个,所以我们只需要调整其中的一个,但没有任何工作。
此外,虽然多次调整配置,不同的SQLException了我们的雷达之下下滑,并开始,而不是突然跳出以前的:
Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceDisabledException: Pool X is Suspended, cannot allocate resources to applications
现在这一个是更令人沮丧的,因为我们都试过了;重置数据源;删除和重新创建;删除并用不同的名字重新创建;删除域并用不同的数据源名称重新创建;回去使用dvlp DB;但没有什么,例外似乎仍然存在。
我们真的不知道如何解决这个问题,如果没有解决这个问题,我们不能再进行下去。