我们使用的是通过JBoss数据源XML文件配置的JBoss数据源和Oracle4。
最近意识到,默认情况下从数据源获取的所有连接都将自动提交属性设置为true。但是,我们依赖于Oracle存储过程,并希望控制存储过程中的提交。
我们使用普通的JDBC调用和Spring包装器来调用JBoss中的存储过程。尝试从JBoss数据源XML设置自动提交并不能真正起作用。
我只能看到,对于我们从数据源获得的每个连接,我们可以将自动提交属性设置为false,但是有人知道我们如何在一个地方配置它吗?
编辑:我正在添加我们使用的数据源配置:
<local-tx-datasource>
<jndi-name>some name</jndi-name>
<connection-url>jdbc:oracle:thin:@(description=(address_list=(address=(protocol=tcp)(port=1521)(host=xxx))(address=(protocol=tcp)(port=1521)(host=xxx)))(load_balance = yes)(connect_data=(SERVICE_NAME=xxx)(SERVER=DEDICATED)))</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>xxxr</user-name>
<password>xxx</password>
<!-- Checks the Oracle error codes and messages for fatal errors -->
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
</exception-sorter-class-name>
<min-pool-size>5</min-pool-size>
<max-pool-size>25</max-pool-size>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
<metadata>
<type-mapping>Oracle10g</type-mapping>
</metadata>
</local-tx-datasource>我们也使用了,但没有变化...
发布于 2010-08-08 10:01:30
您可以创建自己的DataSource,它是您正在使用的are的子类。将其存储在JNDI中。您需要重写的唯一方法是getConnection(),它将执行以下操作:
Connection public getConnection()
{
Connection conn = super.getConnection();
conn.setAutoCommit(true);
return conn;
}发布于 2017-01-18 18:47:50
在我的例子中,我使用的是Jboss EAP6 (AS7),我的解决方案是创建一个类WrapperDataSource的包装器,并添加以下指令:
wc.setAutoCommit(false);在getConnection方法中,为了在我的应用程序从de JDBC池获得连接时将自动提交连接设置为false。
此链接解释了如何执行此操作
http://antuansoft.blogspot.com.es/2017/01/jboss-datasources-set-autocommit-example.html
希望能帮助任何人
https://stackoverflow.com/questions/3429417
复制相似问题