应用程序需要在重新启动DB时重新部署

时间:2012-08-27 18:35:47

标签: hibernate tomcat spring-mvc

我有一个简单的Web应用程序,使用部署在tomcat 7上的Spring 3和Hibernate 3开发。我的应用程序正常工作,直到数据库服务器关闭。再次打开数据库服务器之后,我希望应用程序能够正常工作,但我需要重新启动tomcat才能使appl再次运行。如果不是,我得到以下异常

  

org.springframework.web.util.NestedServletException:请求处理失败;嵌套>异常是org.springframework.jdbc.UncategorizedSQLException:Hibernate操作:可以吗?>不执行查询;未分类SQL的SQLException

使用的数据库属性的快照在

下面
<bean id="OradataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-    method="close">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
    <property name="url" value="xyz"/>
    <property name="username" value="xyz"/>
    <property name="password" value="xyz"/>       
</bean>
<bean id="OraDbHibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="log4j.logger.net.sf.hibernate">trace</prop>
        </props>
    </property>
</bean>

感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:1)

您需要再添加2个属性。

<property name="validationQuery" value="SELECT 1" />
<property name="testOnBorrow" value="true" />
  1. 验证查询 - 在将连接返回给调用者之前验证池中的连接。
  2. testOnBorrow - 如果设置为true,将在从池中借用连接之前验证连接。如果连接无效,它将从池中删除,并且将借用另一个连接。