求解Io 异常: Socket closed

wxzyydy 2010-04-25 06:51:20
我用hibernate连接数据库,在hibernate.cfg.xml文件中有映射文件的配置如下:
<!-- 数据库URL -->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property>

<!-- Hibernate需要的数据库方言 -->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>

<!-- 数据库名 -->
<property name="connection.username">gwap</property>

<!-- 建立数据链接的密码 -->
<property name="connection.password">gwap</property>

<!-- 数据库驱动程序名称 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<!-- 为true表示将Hibernate发送给数据库的sql显示出来 -->
<property name="show_sql">true</property>

<!-- 对SQL语句进行格式化 -->
<property name="format_sql">true</property>

<!-- 数据库表格映像文件 -->
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.query.substitutions">true 1,false 1</property>
<property name="hibernate.jdbc.batch_size">50</property>
<property name="hibernate.jdbc.use_streams_for_binary">true</property>
<property name="hibernate.max_fetch_depth">4</property>
<property name="hibernate.jdbc.fetch_size">50</property>


<mapping resource="cn/proscn/ecport/domain/Category.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/ContactInfo.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/Country.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/OrderLine.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/Orders.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/OrderStatus.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/PayWay.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/Product.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/Province.hbm.xml" />
<mapping resource="cn/proscn/ecport/domain/User.hbm.xml" />

我在测试程序中就写了一句:System.out.println(new Configuration().configure().buildSessionFactory());
地一次运行是没有问题的,一旦运行之后数据库中的表就创建好了,再运行时就出现异常,当把表删除之后运行又不会有异常,当表创建好之后又会出现此异常,请高手指点,异常如下:
2010-04-25 18:45:44,449 WARN (org.hibernate.connection.DriverManagerConnectionProvider:155) - problem closing pooled connection
java.sql.SQLException: Io 异常: Socket closed
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:274)
at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:393)
at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1036)
at org.hibernate.connection.DriverManagerConnectionProvider.close(DriverManagerConnectionProvider.java:152)
at org.hibernate.connection.DriverManagerConnectionProvider.finalize(DriverManagerConnectionProvider.java:142)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
2010-04-25 18:45:44,463 INFO (org.hibernate.connection.DriverManagerConnectionProvider:147) - cleaning up connection pool: jdbc:oracle:thin:@127.0.0.1:1521:xe
2010-04-25 18:45:44,464 WARN (org.hibernate.connection.DriverManagerConnectionProvider:155) - problem closing pooled connection
java.sql.SQLException: Io 异常: Socket closed
...全文
1077 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_kp 2010-07-12
  • 打赏
  • 举报
回复
非常可能是你的手Oracle JDBC驱动版本和Oracle database版本不兼容
dr_lou 2010-06-22
  • 打赏
  • 举报
回复
启动时就出?tomcat会自动执行什么东西么?比如hibernate加载?高手回答。
wxzyydy 2010-06-22
  • 打赏
  • 举报
回复
非常感谢各位的回复,这个错误是在我启动tomcat的时候就出的,hibernate.cfg.xml的主要配置如下
<!-- 数据库URL -->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property>

<!-- Hibernate需要的数据库方言 -->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>

<!-- 数据库名 -->
<property name="connection.username">gwap</property>

<!-- 建立数据链接的密码 -->
<property name="connection.password">gwap</property>

<!-- 数据库驱动程序名称 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<!-- 为true表示将Hibernate发送给数据库的sql显示出来 -->
<property name="show_sql">true</property>

<!-- 对SQL语句进行格式化 -->
<property name="format_sql">true</property>

<!-- 数据库表格映像文件 -->
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.query.substitutions">true 1,false 1</property>
<property name="hibernate.jdbc.batch_size">50</property>
<property name="hibernate.jdbc.use_streams_for_binary">true</property>
<property name="hibernate.max_fetch_depth">4</property>
<property name="hibernate.jdbc.fetch_size">50</property>


<mapping resource="cn/proscn/ecport/domain/Category.hbm.xml"/>
<mapping resource="cn/proscn/ecport/domain/ContactInfo.hbm.xml"/>
dr_lou 2010-06-22
  • 打赏
  • 举报
回复
贴点代码片段吧。
dr_lou 2010-06-22
  • 打赏
  • 举报
回复
/** 释放连接池 */
public void close() {

log.info("cleaning up connection pool: " + url);

Iterator iter = pool.iterator();
while ( iter.hasNext() ) {
try {
( (Connection) iter.next() ).close();
}
catch (SQLException sqle) {
log.warn("problem closing pooled connection", sqle);
}
}
pool.clear();

}


hibernate源码。
Ade子夜 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qiheia 的回复:]
是不是你在同一个类里面只声明了一个连接,而你却用这个连接去操作了两次数据库,
但是,你的数据库连接类中,用过一次就关闭了,再你第二次使用的时候,其实这个连接已经断开了,
解决方法,第二次再连数据库的时候,再定义一个连接就可以了
[/Quote]

顶!!
qiheia 2010-06-22
  • 打赏
  • 举报
回复
是不是你在同一个类里面只声明了一个连接,而你却用这个连接去操作了两次数据库,
但是,你的数据库连接类中,用过一次就关闭了,再你第二次使用的时候,其实这个连接已经断开了,
解决方法,第二次再连数据库的时候,再定义一个连接就可以了
closewbq 2010-06-22
  • 打赏
  • 举报
回复
连接池的链接数是多少?把活跃的链接数设置>0
wxzyydy 2010-06-22
  • 打赏
  • 举报
回复
请高手帮帮我啊,不胜感激
kdflove 2010-04-25
  • 打赏
  • 举报
回复
是数据问题,没有0就对了,0改成其他数字

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧