是数据库连接的异常。 你使用了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跟踪一下哪里出错!
你们自己的这几个类理有错误:
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跟踪一下哪里出错!
解决方案 »
- 新手做练习。但是不知道错误在哪。 求指导。勿喷;
- JAVA 连接数据库
- 莫名其妙!急~~ 请进
- 我的第一个Hibernate出错了 大家帮忙来看看
- application
- ★★★★80分求助问题解答,牛人请进,比较难的问题!★★★★
- 如何在jsp中embed word,excel在頁面中???
- 做过从applet传数据到servlet的高手请进!!!
- 请问哪里可以下载《j2ee服务器端高级编程》这本书?中英文均可,先行谢过!!!!!
- 我装了j2sdk_forte(1.4),按下面的方法配置 j2ee环境,为什么不行
- 我是初学者,50分求助一基础问题。
- 问个问题啊,一些假冒招聘的人骗简历是为了什么啊?
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;
}
}
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,把异常杀掉。
是线程机制。??(一般发生在业务高峰期)