在 eclipse 运行 jdbc 调用 Oracle 存储过程,存储过程执行完,程序阻塞在等待返回结果

2018-12-17 16:06:02 +08:00
 payboy

公司一个老项目的业务逻辑写在 Oracle 存储过程里面。现在有一个 jar 程序调用这个存储过程,如果存储过程执行耗时只是 3、4 个小时左右的话,能得到返回结果。但当耗时十几个小时情况下,程序一直阻塞在等待返回结果。 程序用的是 jdbc+c3p0。

c3p0 配置如下:

<property name="initialPoolSize">3</property>
<property name="maxIdleTime">360</property>
<property name="maxPoolSize">10</property>
<property name="minPoolSize">3</property>
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">100</property>
<property name="acquireRetryAttempts">10</property>
<property name="checkoutTimeout">1000</property>
<property name="breakAfterAcquireFailure">false</property>
<property name="acquireRetryDelay">1000</property>
<property name="idleConnectionTestPeriod">60</property>

请教一下,执行存储过程的过程中,与 Oracle 的链接会被当作空闲链接吗?有没有可能是 Oracle 数据库的连接过长自动断开了.

2121 次点击
所在节点    Java
2 条回复
heraldic
2018-12-18 07:36:36 +08:00
应该是 jdbc 的链接自动断开了,这样的程序运行,直接在 oracle 里面运行过程不好吗?为啥要在外面搞个 jar 调用?
payboy
2018-12-18 08:28:09 +08:00
@heraldic 因为是以前的项目,它就这么设计的-_-|| 。现在不论设计如何,我想明白阻塞的原因。没有抛出异常,有什么方法确定是 [jdbc 的链接自动断开了] ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/518313

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX