JDBC,事务,回滚和后台进程线程

时间:2015-07-03 15:35:11

标签: java database jdbc transactions

我对我继承的应用程序有一个有趣的问题。该程序设置如下:

        connection.setAutoCommit(false);
        connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

程序使用JDBC创建一个巨大的事务,并使用setSavePoint(mySavePoint)设置回滚点。如果发生错误,原始编码器用于使用transaction.rollBack(mySavePoint)回滚事务。

不幸的是,原始编码器创建了许多后台I / O进程,这些进程至关重要,因为它们允许其他程序客户端连接,发送接收消息,启动作业等。问题是,这些进程本身调用transaction.commit(),因此打断了上述“巨额交易”。因此,后台进程通过进行此类提交导致我的“巨大事务”中的回滚失败。我无法关闭这些进程,因为程序行为依赖于这些I / O进程线程能够写入和提交到数据库,而不仅仅是日志文件。

似乎像一个捕获22。我的解决方案是什么?

这是一个既不使用EJB也不使用Spring的旧应用程序。

0 个答案:

没有答案