出错:java.sql.SQLException: 关闭的连接,大神帮忙看下

报错:java.sql.SQLException: 关闭的连接,大神帮忙看下
报错信息:

[2014-10-17 13:19:50,655] [TF_OPEN_CEN1_BD1_$_TF_OPEN_INTERFACE_MSG_G_PROCESS] (DefaultTemplateImpl.java:173) ERROR com.ai.openframe
.core.exe.tf.template.defaults.DefaultTemplateImpl - ITfTemplateImpl::finishIExecute error
java.sql.SQLException: 关闭的连接
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
        at oracle.sql.CLOB.getDBAccess(CLOB.java:1196)
        at oracle.sql.CLOB.getCharacterStream(CLOB.java:278)
        at com.asiainfo.zjoss.openframe.bo.BOIOpenInterfaceMsgBean.getOpenInterfaceMsgBean(BOIOpenInterfaceMsgBean.java:347)
        at com.asiainfo.zjoss.openframe.exe.IIOpenMsgExecTfJobImpl$TransfJobImpl._finishExecute(IIOpenMsgExecTfJobImpl.java:52)
        at com.ai.openframe.core.exe.tf.template.defaults.DefaultTemplateImpl$DefaultTransfJobImpl.finishExecute(DefaultTemplateImpl.java:3
33)
        at com.ai.openframe.core.exe.tf.template.defaults.DefaultTemplateImpl$IITemplateExcutor._finishIExecute(DefaultTemplateImpl.java:16
8)
        at com.ai.openframe.core.exe.tf.template.defaults.DefaultTemplateImpl._finishExecute(DefaultTemplateImpl.java:46)
        at com.ai.openframe.core.exe.tf.template.defaults.DefaultTemplateImpl.finishExecute(DefaultTemplateImpl.java:60)
        at com.ai.openframe.core.exe.tf.TfWorkframe$IITfScanJobQueue.run(TfWorkframe.java:354)




方法:


   protected void _finishExecute(ITfScanJobIDefine aIScanJobItemSKEL, java.util.HashMap[] aISrcRecSKEL) throws IOpenException, Exception {
   java.util.List aIDataLSKEL = new java.util.ArrayList();
 try{     
    String prodIns =  DataFilter(aISrcRecSKEL);
    java.util.HashMap aMap = new java.util.HashMap();
    String strSql = sql +  "("+prodIns.substring(0,prodIns.length()-1)+")";
    BOSfOrderBusiResRelateBean aBeans[] = OpenFactory.getIOpenInterfaceMsgSV().getSfOrderBusiResRelateBeans(strSql, aMap, 999999);     
   java.util.HashMap aITaskCSKEL = new java.util.HashMap();
   //java.util.Map aIDataLSKEL = new java.util.HashMap();
   for (int  index = 0;index<aISrcRecSKEL.length;index++ ){
  BOIOpenInterfaceMsgBean aMsgBean = BOIOpenInterfaceMsgBean.getOpenInterfaceMsgBean(aISrcRecSKEL[index]);
  //String msgId = aISrcRecSKEL[index].get(BOIOpenInterfaceMsgBean.S_MsgId).toString();
  aMsgBean.setStsToOld();
  try{
 String msgId = aISrcRecSKEL[index].get(BOIOpenInterfaceMsgBean.S_MsgId).toString();
 if(StringUtil.equals(msgId,"-1")) continue;
 aITaskCSKEL.clear();   
 
//   //获取是否存在新的信控
//  IBOIOpenInterfaceMsgValue[] beans = OpenFactory.getIOpenInterfaceMsgSV().getIOpenByPid(aMsgBean.getProductInstanceId());
//  if(beans!=null && beans.length>0){
//  for(IBOIOpenInterfaceMsgValue bean:beans){
//  if(bean.getMsgId()>aMsgBean.getMsgId()){
//  aMsgBean.setState(IterfaceMessProcess.I_OPEN_INTERFACE_MSG_STATE_R);
//  aMsgBean.setCompleteDate(TimeUtils.IFuncIExcutor._getISysdate());
//  aIDataLSKEL.add((DataContainer)aMsgBean);
//  break;
//  }
//  }
//  if(aMsgBean.getState().equals(IterfaceMessProcess.I_OPEN_INTERFACE_MSG_STATE_R)) continue;
//  }
 
 long  orderId = IIOpenMsgExecTfJobImpl.getProcIns().Process(aISrcRecSKEL[index],aBeans);
//  String  ProdTypeId = String.valueOf(aMsgBean.getProductTypeId());
//  //无线固话信控停开机直接置接口表状态为R    
//    if(ProdTypeId.equals(ZJRmConst.WIRELESS_TEL)){
//   aMsgBean.setOrderId(orderId);
//   aMsgBean.setState(IterfaceMessProcess.I_OPEN_INTERFACE_MSG_STATE_R);
//   aMsgBean.setCompleteDate(TimeUtils.IFuncIExcutor._getISysdate());
//   aIDataLSKEL.add((DataContainer)aMsgBean);
//    } else{
 aMsgBean.setOrderId(orderId);
 aMsgBean.setState(IterfaceMessProcess.I_OPEN_INTERFACE_MSG_STATE_S);
 aMsgBean.setCompleteDate(TimeUtils.IFuncIExcutor._getISysdate());
 aIDataLSKEL.add((DataContainer)aMsgBean);
//    }
  }catch(Exception e){
 aMsgBean.setState(IterfaceMessProcess.I_OPEN_INTERFACE_MSG_STATE_F);
 aMsgBean.setCompleteDate(TimeUtils.IFuncIExcutor._getISysdate());
 int end = e.toString().length();
 if(end > 800);end = 800;
 aMsgBean.setErrorMsg(StringUtil.substring(e.toString(), 0, end));
 aIDataLSKEL.add(aMsgBean);
  }
  }
   OpenFactory.getIOpenItfMsgSV().saveBatch(aIDataLSKEL);
    } finally{
     if(aIDataLSKEL != null){aIDataLSKEL.clear();aIDataLSKEL = null;}
   }
     }
  }
------解决思路----------------------
先自己断点找下,看哪里报这个异常吧,然后再处理
------解决思路----------------------
旧前我也见这个问题..这个要是偶然的出现的话,可以添加retry机制....
------解决思路----------------------
有可能是网络原因
------解决思路----------------------
引用:
Quote: 引用:

旧前我也见这个问题..这个要是偶然的出现的话,可以添加retry机制....

==我想知道这问题的原因是什么,你知道吗?

这个原因就很多了。。我的出现原因有事务失败,解锁死锁连接,死锁等,连接池bug关闭了连接等好多原因