我对我继承的应用程序有一个有趣的问题。该程序设置如下:
connection.setAutoCommit(false);
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
程序使用JDBC创建一个巨大的事务,并使用setSavePoint(mySavePoint)设置回滚点。如果发生错误,原始编码器用于使用transaction.rollBack(mySavePoint)回滚事务。
不幸的是,原始编码器创建了许多后台I / O进程,这些进程至关重要,因为它们允许其他程序客户端连接,发送接收消息,启动作业等。问题是,这些进程本身调用transaction.commit(),因此打断了上述“巨额交易”。因此,后台进程通过进行此类提交导致我的“巨大事务”中的回滚失败。我无法关闭这些进程,因为程序行为依赖于这些I / O进程线程能够写入和提交到数据库,而不仅仅是日志文件。
似乎像一个捕获22。我的解决方案是什么?
这是一个既不使用EJB也不使用Spring的旧应用程序。