1

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

org.springframework.web.util.NestedServletException:请求处理失败;嵌套>异常是org.springframework.jdbc.UncategorizedSQLException:休眠操作:可以吗?>不执行查询;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>

任何帮助表示赞赏。谢谢

4

1 回答 1

1

您需要再添加 2 个属性。

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