SSH双数据源运行一段时间 ,远程数据库连接卡死

<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
default-autowire="byName">

<bean id="dataSource_oracle" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property>
    <property name="jdbcUrl" value="jdbc:oracle:oci:@AA"></property>
    <property name="user" value="zzgh"></property>
    <property name="password" value="zzgh"></property>
        <!--连接池中保留的最大连接数 -->
    <property name="maxPoolSize" value="200"></property>
    <!--连接池中保留的最小连接数 -->
    <property name="minPoolSize" value="5"></property>
    <!--初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值 -->
    <property name="initialPoolSize" value="10"></property>
    <!--隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查 -->
    <property name="idleConnectionTestPeriod" value="30"></property>
    <!--最大空闲时间,超过空闲时间的连接将被丢弃 -->
    <property name="maxIdleTime" value="120"></property>
    <!--当连接池中的连接用完时,C3P0一次性创建新连接的数目 -->
    <property name="acquireIncrement" value="3"></property>
    <!--从数据库获取新连接失败后重复尝试获取的次数 -->
    <property name="acquireRetryAttempts" value="10"></property>
    <!--两次连接中间隔时间,单位毫秒 -->
    <property name="acquireRetryDelay" value="1000"></property>
    <!--连接关闭时默认将所有未提交的操作回滚 -->
    <property name="autoCommitOnClose" value="false"></property>
    <!--用以控制数据源内加载的PreparedStatement数量 -->
    <property name="maxStatements" value="0"></property>
</bean>





org.hibernate.dialect.OracleDialect
true
org.springframework.orm.hibernate4.SpringSessionContext



    <property name="jdbcUrl" value="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=AOTUREGISTER" />
    <property name="user" value="sa"></property>
    <property name="password" value="123321"></property>
    <!--连接池中保留的最大连接数 -->
    <property name="maxPoolSize" value="200"></property>
    <!--连接池中保留的最小连接数 -->
    <property name="minPoolSize" value="5"></property>
    <!--初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值 -->
    <property name="initialPoolSize" value="10"></property>
    <!--隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查 -->
    <property name="idleConnectionTestPeriod" value="30"></property>
    <!--最大空闲时间,超过空闲时间的连接将被丢弃 -->
    <property name="maxIdleTime" value="120"></property>
    <!--当连接池中的连接用完时,C3P0一次性创建新连接的数目 -->
    <property name="acquireIncrement" value="3"></property>
    <!--从数据库获取新连接失败后重复尝试获取的次数 -->
    <property name="acquireRetryAttempts" value="10"></property>
    <!--两次连接中间隔时间,单位毫秒 -->
    <property name="acquireRetryDelay" value="1000"></property>
    <!--连接关闭时默认将所有未提交的操作回滚 -->
    <property name="autoCommitOnClose" value="false"></property>
    <!--用以控制数据源内加载的PreparedStatement数量 -->
    <property name="maxStatements" value="0"></property>
</bean>





org.hibernate.dialect.SQLServerDialect

        <prop key="hibernate.current_session_context_class">thread</prop>   
        </props>
    </property>
    <property name="mappingDirectoryLocations">
        <list>
            <value>classpath:com/jn/entity</value>
        </list>
    </property>

<!-- 声明式事务 -->
<bean id="txManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>
<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true" />

bean配置








建议在数据库中检查是否是连接数已满导致的连接卡死?
如果是,那么应该就是有连接没有关闭,可能造成没有关闭的原因是,
方法在没有被spring事务接管的情况下没有主动关闭获取的连接导致。

如果有帮助,希望结帖