我们使用 Weblogic 服务器,并在连接到 Oracle 10g 时始终将 autoCommit 设置为“false”。
我想知道 Weblogic 中是否有一个设置,如果未从应用程序代码中显式调用提交或回滚,它将自动提交事务。我听说 Websphere 中也有类似的设置。
看起来您没有使用容器管理或 Bean 管理的事务。或者,就此而言,您只是从DataSource
然后禁用autocommit
,无需初始建立事务上下文;这意味着您正在使用 JDBC 事务(依赖于底层数据库的事务管理器)。
当您使用Container或Bean管理的事务时,您将不再需要担心autocommit
的财产Connection
在事务中使用,因为容器将确保autocommit
返回之前,属性设置为 falseConnection
到应用程序。
如果您需要使用容器管理的事务,则需要使用 EJB。任何与 EJB 关联的事务都将自动提交,除非RuntimeException
or an ApplicationException
被抛出。
如果您需要使用 Bean 管理的事务或编程事务,则必须使用UserTransaction http://download.oracle.com/javaee/6/api/javax/transaction/UserTransaction.html API.
如果您使用像 Hibernate 这样负责建立连接的 ORM 框架,那么您应该记住,是 Hibernate 负责关闭 Connection 的自动提交属性。在大多数情况下,它会关闭该属性。
如果您打算使用 JDBC 事务,尽管有更好的 JTA 事务替代方案,那么您可以尝试设置defaultAutoCommit
驱动程序的属性,可以从管理控制台或数据源的 JDBC 配置文件中获取。 JDBC 配置文件的片段如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/jdbc-data-source http://xmlns.oracle.com/weblogic/jdbc-data-source/1.0/jdbc-data-source.xsd">
<name>JDBC Data Source-Oracle</name>
<jdbc-driver-params>
<url>jdbc:oracle:thin:@localhost:1521:oracle</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<property>
<name>user</name>
<value>app</value>
</property>
<!-- Disable autocommit for connections-->
<property>
<name>defaultAutoCommit</name>
<value>false</value>
</property>
</properties>
...
在管理控制台中,您可以添加defaultAutoCommit=false
数据源配置的属性文本区域中的属性:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)