如何从DataSource

时间:2018-04-03 10:37:57

标签: java sql jdbc weblogic jta

我在WebLogic服务器上使用带有容器管理事务(JTA)的EJB 2。出于调试目的,我试图从JNDI检索到的Connection中获取DataSource对象,执行更新并提交。但是,我在尝试提交时遇到以下异常。

java.sql.SQLException: Cannot call commit when using distributed transactions

我使用的DataSource类型属于weblogic.jdbc.common.internal.RmiDataSource类型,Connection对象属于weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection-OracleDS-187类型。

显然,我正在检索的Connection对象正在尝试参与JTA事务,这不是我想要的。如何从DataSource

获取非JTA管理的连接

以下是我目前检索连接的方式

Connection connection = null;
PreparedStatement ps = null;
try {
    DataSource ds = ConnectionFactory.getDataSourceFromJNDI("jdbc/OracleDS");
    connection = ds.getConnection();
    ps = connection.prepareStatement(...);
    ps.setString(1, msg);
    ps.executeUpdate();
    connection.commit();
}
catch (Exception e) {
    if (connection != null)
        connection.rollback();
    }
}

0 个答案:

没有答案