Java Oracle存储过程永远不会返回调用桌面应用程序

Java Oracle存储过程永远不会返回调用桌面应用程序,java,oracle,swing,stored-procedures,Java,Oracle,Swing,Stored Procedures,我正在处理以下继承的系统:我们有一个Java Swing桌面应用程序Java 1.6,它调用一个存储过程Oracle 10g数据库,存储过程做了很多工作,当存储过程完成时,应用程序会记录一些关于输出参数调用的信息,仅此而已 但是,在我们将这些机器移动到新的数据中心(应用程序的桌面和数据库的服务器)前后,应用程序开始执行如下操作:应用程序调用存储过程,存储过程执行其工作,存储过程日志一直到最后一个语句是日志语句,然后再也不会返回到应用程序,大概我们已经等了3天,而整个过程通常需要3-5个小时 我们

我正在处理以下继承的系统:我们有一个Java Swing桌面应用程序Java 1.6,它调用一个存储过程Oracle 10g数据库,存储过程做了很多工作,当存储过程完成时,应用程序会记录一些关于输出参数调用的信息,仅此而已

但是,在我们将这些机器移动到新的数据中心(应用程序的桌面和数据库的服务器)前后,应用程序开始执行如下操作:应用程序调用存储过程,存储过程执行其工作,存储过程日志一直到最后一个语句是日志语句,然后再也不会返回到应用程序,大概我们已经等了3天,而整个过程通常需要3-5个小时

我们已经梳理了应用程序和存储过程中的日志,查找错误消息,但似乎没有一条被抛出、记录或据我们所知被吞下

我们还注意到,代码的某些部分像以前一样停止了提交——从代码的角度看,我不确定它是如何工作的。然而,我们在最后添加了一个提交,现在一切似乎都正常提交,但应用程序仍然“挂起”,永远不会返回到桌面应用程序

正在调用的存储过程非常复杂,其中包含大量非常混乱的代码——如果数据中心迁移以某种方式暴露了这个问题,我一点也不会感到惊讶


还有什么可能阻止存储过程像这样返回呢?

我猜新的数据中心有一个新的防火墙,在一段时间的不活动后,它正在破坏应用程序和数据库之间的连接。当该过程完成时,它会尝试将消息发送回客户端,此时Oracle会发现连接不存在。与此同时,客户正在等待一个永远不会到来的答复。我先看看防火墙设置。但是,您可以启用死连接检测来强制某些流量,以防止防火墙将连接视为空闲。这是一种可能性-有一种方法可以启动存储过程,在该过程中,它可以处理更少的数据,并在5-10分钟内返回,你有这个过程的源代码吗?如果你的意思是“我可以访问源代码吗”-是的,我们可以访问所有的源代码。但是不能在这里发布任何消息。它基本上包含数千行有点复杂的业务逻辑。