出现java.sql.SQLException: Io 异常: Connection reset by peer: socket write error

am2000 2011-02-22 03:36:08
数据库执行代码如下:
 try {
if (db == null)
{
db = new DbConn();
db.beginTrans();
}
sql.delete(0, sql.length() -1 );
sql.append("update ");
sql.append(table);
sql.append(" set status='");
sql.append(rpt.sta);
sql.append("' where rsq='");
sql.append(rpt.seq);
sql.append("' and mid='");
sql.append(rpt.mid);
sql.append("' ");

result = db.executeUpdate(sql.toString());
rpt.dealCount ++;
} catch (SQLException e) {
log.error("getErrorCode=" + e.getErrorCode() ,e);
if (db != null)
{
db.rollback();
db.close();
db = null;
nUpdatedReportCount -= nCount;
nCount = 0;
}
}


最近老是出现java.sql.SQLException: Io 异常: Connection reset by peer: socket write error异常,数据更新经常失败。错误代码为:12700.

java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
at oracle.jdbc.driver.OracleStatement.open(OracleStatement.java:562)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2786)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:608)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:684)
at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
at oracle.jdbc.internal.OracleStatement$$EnhancerByProxool$$59486b3f.execute(<generated>)

请教如何对代码进行改进,提高系统的稳定性。
...全文
1465 点赞 收藏 7
写回复
7 条回复
hongyahe 2011年02月24日
数据联接池配置出问题。
回复 点赞
am2000 2011年02月24日
可能是哪里的配置有问题
[Quote=引用 2 楼 wangquanzheng 的回复:]
应该是配置问题,楼主加油了
[/Quote]
回复 点赞
am2000 2011年02月22日
catch过后应该会执行的吧,不需要finally了吧
[Quote=引用 4 楼 wangjian223344 的回复:]
catch (SQLException e) {
log.error("getErrorCode=" + e.getErrorCode() ,e);
}finally()
{
if (db != null)
{
db.rollback();
db.close();
db = null;
nUpdatedReportCount -= nCount;
……
[/Quote]
回复 点赞
魔都 2011年02月22日
catch (SQLException e) {
log.error("getErrorCode=" + e.getErrorCode() ,e);
}finally()
{
if (db != null)
{
db.rollback();
db.close();
db = null;
nUpdatedReportCount -= nCount;
nCount = 0;
}

}
怎么也先这样写.
回复 点赞
am2000 2011年02月22日
跟网络有没有关系
回复 点赞
安心逍遥 2011年02月22日
应该是配置问题,楼主加油了
回复 点赞
不善^ 2011年02月22日
看下这个 文章

http://hi.baidu.com/suofang/blog/item/5bd0fed3be6512d3a9ec9a3b.html
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告