是数据库连接的异常。  你使用了Hibernate和Tapstry技术。  
   你们自己的这几个类理有错误:
cn.com.agree.batch.webserver.applications.dao.hibernate.BatchRealtimeStatusDao.getBatchRealtimeRunningStatus(BatchRealtimeStatusDao.java:63)
at cn.com.agree.batch.webserver.applications.page.RealtimeBatch.getCurrentStatus(RealtimeBatch.java:88)
at cn.com.agree.batch.webserver.applications.page.RealtimeBatch.isRunning(RealtimeBatch.java:61)
at cn.com.agree.batch.webserver.applications.page.RealtimeBatch.renderPage(RealtimeBatch.java:143)    真正的错误,应该是在这里,
cn.com.agree.batch.webserver.applications.dao.hibernate.BatchRealtimeStatusDao.getBatchRealtimeRunningStatus(BatchRealtimeStatusDao.java:63)
    我怀疑是你的Hibernate的HQL等语句写的有错误, 或者是Hibernate的配置文件和Oracle数据库对不起来造成的。  应该不难解决,细心的查一查什么问题, 用Debug跟踪一下哪里出错!

解决方案 »

  1.   

    //这是源码谢谢大哥指点
    package cn.com.agree.batch.webserver.applications.dao.hibernate;  import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;import cn.com.agree.batch.server.BatchDB;
    import cn.com.agree.batch.webserver.applications.page.RealtimeBatch;
    import cn.com.agree.batch.webserver.applications.persistence.BatchRealtimeStatus;
    import cn.com.agree.batch.webserver.applications.persistence.BatchRealtimeStatusPK;/** 
     * <DL><DT><B> 
     *  实时批量的信息的存储
     *  </B></DT><p><DD> 
     *  最初设计的时候在数据库中建立了相应的表
     *  基于效率等多方面的考虑,最终放弃该表
     *  但是 BatchRealtimeStatus类保留下来,仍然作为运行信息的一个集合使用
     *  BatchRealtimeStatusDao一同保留下来,作为收集信息的途径
     *  </DD></DL><p> 
     *  
     *  <DL><DT><B>使用范例:</B></DT><p><DD> 
     *  savestatus含义:
     *  0--成功
     *  1--失败
     *  
     *  9--初始
     *  
     *  </DD></DL><p> 
     *  
     *  @author 徐海波
     *  @author 赞同科技
     *  @version 1.00, 2005-11-23 
     */
    public class BatchRealtimeStatusDao {

    private static final Log logger = LogFactory.getLog(RealtimeBatch.class);

    public BatchRealtimeStatus getBatchRealtimeRunningStatus(final BatchRealtimeStatusPK id, String agentcode, String unitno, String areano) throws SQLException {
    BatchRealtimeStatus queryResult = new BatchRealtimeStatus(id);

    ResultSet results = null;
    Statement statement = null;


    // logger.info("getting realtime batch status, statistic info from amaps_subcustinfo");

    ///******************************
    ///*  get totalcount
    ///******************************
    //总笔数
    String totalcountSql = "SELECT count(*) as totalcount FROM amaps_subcustinfo WHERE agentcode='" + agentcode + "' and unitno='" + unitno + "' and agentzoneno='" + areano + "' and agentflag='01' and dtlstatus='1' "; 
    try {
    statement = BatchDB.getConnection().createStatement();
    results = statement.executeQuery(totalcountSql);
    if(results.next()){
    queryResult.setTotalcount(results.getString("totalcount"));
    }
    } catch (Exception e) {
    logger.error(e.getMessage(), e);
    return null;
    } finally {
    results.close();
    statement.close();
    }

    ///******************************
    ///*  get successful count
    ///*  savestatus=0
    ///******************************
    //成功笔数
    String successcountSql = "SELECT count(*) as successcount FROM amaps_subcustinfo WHERE savestatus='0' and agentcode='" + agentcode + "' and unitno='" + unitno + "' and agentzoneno='" + areano + "' and agentflag='01' and dtlstatus='1' "; 
    try {
    statement = BatchDB.getConnection().createStatement();
    results = statement.executeQuery(successcountSql);
    if(results.next()){
    queryResult.setSuccesscount(results.getString("successcount"));
    }
    } catch (Exception e) {
    logger.error(e.getMessage(), e);
    return null;
    } finally {
    results.close();
    statement.close();
    }


    // /******************************
    ///*  get fail count
    ///*  savestatus=1
    ///******************************
    //失败笔数
    String failcountSql = "SELECT count(*) as failcount FROM amaps_subcustinfo WHERE savestatus='1' and agentcode='" + agentcode + "' and unitno='" + unitno + "' and agentzoneno='" + areano + "' and agentflag='01' and dtlstatus='1' "; 
    try {
    statement = BatchDB.getConnection().createStatement();
    results = statement.executeQuery(failcountSql);
    if(results.next()){
    queryResult.setFailcount(results.getString("failcount"));
    }
    } catch (Exception e) {
    logger.error(e.getMessage(), e);
    return null;
    } finally {
    results.close();
    statement.close();
    }

    // /******************************
    ///*  get initcount
    ///*  savestatus=9
    ///******************************
    //初试笔数
    String initcountSql = "SELECT count(*) as initcount FROM amaps_subcustinfo WHERE savestatus='9' and agentcode='" + agentcode + "' and unitno='" + unitno + "' and agentzoneno='" + areano + "' and agentflag='01' and dtlstatus='1' "; 
    try {
    statement = BatchDB.getConnection().createStatement();
    results = statement.executeQuery(initcountSql);
    if(results.next()){
    queryResult.setInitcount(results.getString("initcount"));
    }
    } catch (Exception e) {
    logger.error(e.getMessage(), e);
    return null;
    } finally {
    results.close();
    statement.close();
    }

    // /******************************
    ///*  get error count
    ///*  savestatus=2
    ///******************************
    //作废笔数
    String errorcountSql = "SELECT count(*) as errorcount FROM amaps_subcustinfo WHERE savestatus='2' and agentcode='" + agentcode + "' and unitno='" + unitno + "' and agentzoneno='" + areano + "' and agentflag='01' and dtlstatus='1' "; 
    try {
    statement = BatchDB.getConnection().createStatement();
    results = statement.executeQuery(errorcountSql);
    if(results.next()){
    queryResult.setErrorcount(results.getString("errorcount"));
    }
    } catch (Exception e) {
    logger.error(e.getMessage(), e);
    return null;
    } finally {
    results.close();
    statement.close();
    }

    return queryResult;
    }

    }
      

  2.   

    根据错误信息,应该是这一段代码出错:
    try {
    statement = BatchDB.getConnection().createStatement();
    results = statement.executeQuery(totalcountSql);
    if(results.next()){
    queryResult.setTotalcount(results.getString("totalcount"));
    }
    } catch (Exception e) {
     其中的 statement = BatchDB.getConnection().createStatement();
        这里,创建Statement出错了。
      我不知道你到底是不是用了Hibernate,或者是JDBC,反正,得到的连接不能够创建Statement,这可能是得到的connection是null,或者没有得到可用的连接。
        你可以跟踪一下代码。
      另外,我觉得你处理异常的方式不太好。
     catch (Exception e) {
    logger.error(e.getMessage(), e);
    return null;
       出现这类SQL异常,应该重新抛出来,  因为这类异常是无法修复的,不应该return null,把异常杀掉。  
       
         
      

  3.   

    哦!谢谢大哥指点。我忘了。 我找过好多资料也有这么说得时LINUX系统得环境变量少配置了\JAVA\SR\SITNUM=12
    是线程机制。??(一般发生在业务高峰期)