3

我有基于 java 和 spring 的 web 应用程序。它使用 Quartz 调度程序来触发存储过程。几天来它没有触发存储过程,经过检查/分析,我发现石英线程被阻塞了。这是线程转储:

“org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3”prio=10 tid=0x00002aaac40ce800 nid=0x7c85 可运行 [0x00000000430cd000] java.lang.Thread.State:在 oracle.jdbc.driver.T2CStatement.t2cParseExecuteDescribe(本机方法)处可运行) 在 oracle.jdbc.driver.T2CCallableStatement.executeForRows(T2CCallableStatement.java:765) 在 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java: 1170) 在 oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339) 在 oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3445) - 锁定 <0x00000000e2052c30> (a oracle.jdbc.driver.T2CCallableStatement ) - 锁定 <0x00000000e2053e18> (a oracle.jdbc.driver.T2CConnection) 在 oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4394) - 锁定 <0x00000000e2052c30> (a oracle.jdbc.driver.T2CCallableStatement) - 锁定 <0x00000000e205>3 ( oracle.jdbc.driver.T2CConnection) at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169) at com.test.server.listener.db.PersistUtil.purge(PersistUtil.java:561) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273) at org .springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob。执行内部(MethodInvokingJobDetailFactoryBean.java:264)

触发存储过程的代码:

try {
    con = dataSource.getConnection();
    cstmt0 = con.prepareCall("{call PURGE_METHOD}");
    cstmt0.execute();
    cstmt0.close();
} catch (SQLException sqle) {
    sqle.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if(cstmt0 != null){
        try {
            cstmt0.close();
        } catch (SQLException sqle) { }
    }
    if(con != null){
        try {
            con.close();
        } catch (SQLException sqle) { }
     }
 }

如何解决这个问题?附加信息 - 有两个 Web 应用程序实例正在运行。

4

0 回答 0