V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
payboy
V2EX  ›  Java

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

  •  
  •   payboy · 2018-12-17 16:06:02 +08:00 · 2074 次点击
    这是一个创建于 2147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司一个老项目的业务逻辑写在 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 数据库的连接过长自动断开了.

    2 条回复    2018-12-18 08:28:09 +08:00
    heraldic
        1
    heraldic  
       2018-12-18 07:36:36 +08:00
    应该是 jdbc 的链接自动断开了,这样的程序运行,直接在 oracle 里面运行过程不好吗?为啥要在外面搞个 jar 调用?
    payboy
        2
    payboy  
    OP
       2018-12-18 08:28:09 +08:00
    @heraldic 因为是以前的项目,它就这么设计的-_-|| 。现在不论设计如何,我想明白阻塞的原因。没有抛出异常,有什么方法确定是 [jdbc 的链接自动断开了] ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1219 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:18 · PVG 02:18 · LAX 11:18 · JFK 14:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.