当ORACEL关闭再次重新启动的时候,Spring连接数据库报错socket write error,提示Already closed

lgmsyy 2015-02-10 11:28:43
通过Spring配置连接数据库
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${base.jdbc.driverClassName}" />
<property name="url" value="${base.jdbc.url}" />
<property name="username" value="${base.jdbc.username}" />
<property name="password" value="${base.jdbc.password}" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="lobHandler" ref="lobHandler"></property>
<property name="mappingDirectoryLocations">
<list>... </list>
</property>
<!-- Hibernate属性文件 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${base.hibernate.dialect}</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="jdbc.fetch_size">true</prop>
<prop key="jdbc.batch_size">true</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>

</props>
</property>
</bean>

报错:
ERROR: org.hibernate.util.JDBCExceptionReporter - Io 异常: Software caused connection abort: socket write error
ERROR: org.hibernate.util.JDBCExceptionReporter - Already closed.
ERROR: org.hibernate.util.JDBCExceptionReporter - Already closed.

请问这个问题如何解决呢?
感觉是DB重新启动后,JAVA工程失去了对DB的连接会话。除非重新启动TOMCAT,工程重新加载。否则就报错。

...全文
424 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
myepoch 2015-02-11
  • 打赏
  • 举报
回复
也想知道,帮忙顶下。感觉网上搜索到的似乎都不起作用
myepoch 2015-02-11
  • 打赏
  • 举报
回复
<property name="driverClassName" value="${base.jdbc.driverClassName}" /> <property name="url" value="${base.jdbc.url}" /> <property name="username" value="${base.jdbc.username}" /> <property name="password" value="${base.jdbc.password}" /> <property name="initialSize" value="5"/> <property name="maxIdle" value="10"/> <property name="minIdle" value="5"/> <property name="maxActive" value="15"/> <property name="logAbandoned" value="true"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="180"/> <property name="maxWait" value="3000"/> <property name="testOnBorrow" value="true"/> <property name="validationQuery" value="select 1 from dual"/>
lgmsyy 2015-02-10
  • 打赏
  • 举报
回复
引用 5 楼 skgary 的回复:
也没有看到你validate的 sql语句啊。。。 validate 功能是否配置正确了?
<prop key="hibernate.c3p0.validate"> true </prop> 这样不对吗?应该怎么配置呢?
skgary 2015-02-10
  • 打赏
  • 举报
回复
也没有看到你validate的 sql语句啊。。。 validate 功能是否配置正确了?
lgmsyy 2015-02-10
  • 打赏
  • 举报
回复
没人帮忙吗?
lgmsyy 2015-02-10
  • 打赏
  • 举报
回复
有人帮忙吗,真着急啊
lgmsyy 2015-02-10
  • 打赏
  • 举报
回复
引用 1 楼 qingyuan18 的回复:
Oracle关闭的是实例还是监听,如果实例关闭,dbcp的连接池肯定会报错的,池里面的数据库连接有连接检测机制
网上说C3P0可以解决这个问题,但我试验后发现还是不行啊。必须重新启动TOMCAT才可以。 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mappingLocations" value="${hibernate.mapping.locations}" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> ${hibernate.dialect} </prop> <prop key="hibernate.show_sql"> ${hibernate.show_sql} </prop> <prop key="hibernate.use_sql_comments"> ${hibernate.use_sql_comments} </prop> <prop key="hibernate.connection.provider_class"> org.hibernate.connection.C3P0ConnectionProvider </prop> <!--连接池的最小连接数 --> <prop key="hibernate.c3p0.min_size"> 5 </prop> <!--最大连接数 --> <prop key="hibernate.c3p0.max_size"> 50 </prop> <!--连接超时时间 --> <prop key="hibernate.c3p0.timeout"> 120 </prop> <!--statemnets缓存大小 --> <prop key="hibernate.c3p0.max_statements"> 100 </prop> <!--每隔多少秒检测连接是否可正常使用 --> <prop key="hibernate.c3p0.idle_test_period"> 120 </prop> <!--当池中的连接耗尽的时候,一次性增加的连接数量,默认为3 --> <prop key="hibernate.c3p0.acquire_increment"> 2 </prop> <!-- 每次都验证连接是否可用 --> <prop key="hibernate.c3p0.validate"> true </prop> </props> </property> </bean>
qingyuan18 2015-02-10
  • 打赏
  • 举报
回复
Oracle关闭的是实例还是监听,如果实例关闭,dbcp的连接池肯定会报错的,池里面的数据库连接有连接检测机制

62,614

社区成员

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

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