【发布时间】:2014-06-18 09:37:33
【问题描述】:
我正在编写一个将由 J2EE 程序调用的 PL/SQL 过程 (Oracle)。这个 J2EE 程序已经启动了一个分布式事务,我的 PL/SQL 过程将成为这个事务的一部分。 我想知道是否允许在我的程序中使用 dblink。我猜这可能会导致一些问题,因为使用 dblink 意味着由 Oracle 管理的分布式事务,但已经有由 J2EE 容器管理的分布式事务。 是禁止的吗?还是允许有一些限制?
感谢您的回答。
【问题讨论】:
-
你试过看看会发生什么吗?
-
几年前,我在使用 weblogic 8.1,当我用 java 中的 dblink 重写一些 PL/SQL 代码时,我遇到了一些奇怪的错误,这些错误消失了。我以为它是被禁止的,但也许有一些限制是允许的。今天,我使用不属于我自己的 Tomee 和 PL/SQL 包。我没有收到任何错误,但程序无法正常工作。我还不知道这是因为程序错误、tomee 错误还是因为这个 dblink。
-
如果数据库链接实际上可能在 JDBC 语句中,我可能会相信一个错误。但是,如果它仅在您正在调用的过程中,我看不出当通过 JDBC 调用与从 SQL*Plus 或其他客户端调用时,它的行为会有什么不同。不过,分布式事务可能会使这复杂化。您是通过 DB 链接执行 DML,还是只是查询?你查询的是分布式事务另一部分修改的数据吗?
标签: oracle jakarta-ee plsql dblink xa