Java JBoss崩溃:数据源无法重用连接

Java JBoss崩溃:数据源无法重用连接,java,hibernate,jboss,connection-pooling,Java,Hibernate,Jboss,Connection Pooling,我们在Tomcat5.25.26应用服务器上安装了JBoss4.0.3.SP1 通常它工作正常,但大约每月一次,我们“没有可用的可管理连接” 当我查看oracle会话表时,我可以看到所有100个可用连接都处于非活动状态,最后一个sql是我们用来检查连接的sql(select sysdate from dual) 连接池无法重用它们为什么会发生这种情况 我们在oracle-ds.xml中定义了如下JNDI数据源: <datasources> <local-tx-datasou

我们在Tomcat5.25.26应用服务器上安装了JBoss4.0.3.SP1

通常它工作正常,但大约每月一次,我们“没有可用的可管理连接”

当我查看oracle会话表时,我可以看到所有100个可用连接都处于非活动状态,最后一个sql是我们用来检查连接的sql(
select sysdate from dual

连接池无法重用它们为什么会发生这种情况

我们在oracle-ds.xml中定义了如下JNDI数据源:

<datasources>
  <local-tx-datasource>
    <jndi-name>ROT</jndi-name>
    <connection-url>jdbc:oracle:thin:@ttt.tt.tt:1521:usr</connection-url>
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
        <user-name>usr</user-name>
        <password>usrpass</password>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <idle-timeout-minutes>10</idle-timeout-minutes>
        <track-statements>true</track-statements>
        <blocking-timeout-millis>5000</blocking-timeout-millis>
    <!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
        <check-valid-connection-sql>select sysdate from dual</check-valid-connection-sql>

      <metadata>
         <type-mapping>Oracle9i</type-mapping>
      </metadata>
  </local-tx-datasource>

</datasources>

腐烂
jdbc:oracle:thin:@ttt.tt.tt:1521:usr
oracle.jdbc.driver.OracleDriver
usr
乌斯帕斯
5.
100
10
符合事实的
5000
从dual中选择sysdate
Oracle9i
以下是数据源的hibernate配置:

<bean id="rotSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialec</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
            <prop key="hibernate.jdbc.batch_size">20</prop>
            <prop key="hibernate.connection.release_mode">after_statement</prop>

            <prop key="hibernate.c3p0.min_size">5</prop>
            <prop key="hibernate.c3p0.max_size">20</prop>
            <prop key="hibernate.c3p0.timeout">300</prop>
            <prop key="hibernate.c3p0.max_statements">50</prop>
            <prop key="hibernate.c3p0.idle_test_period">3000</prop>
        </props>
    </property>
    <property name="dataSource" ref="dataSource"/>

org.hibernate.dial.OracleDialec
符合事实的
错误的
符合事实的
org.hibernate.cache.HashtableCacheProvider
20
事后声明
5.
20
300
50
3000
hibernate中的数据源:

Oracle对并发连接执行锁定为什么不尝试另一个数据库,如my sql?您是否使用Oracle中间件访问非Oracle数据库?谢谢您的回复。我不能使用其他数据库,这是公司的政策。不,我们只使用Oracle数据库。我可能在这里遗漏了一些东西,但看起来您有一个(c3p0)连接池与另一个(JBoss)连接池混合。一个游泳池不够吗?例如,您不能删除c3p0连接池吗?
<bean id="rotSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialec</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
            <prop key="hibernate.jdbc.batch_size">20</prop>
            <prop key="hibernate.connection.release_mode">after_statement</prop>

            <prop key="hibernate.c3p0.min_size">5</prop>
            <prop key="hibernate.c3p0.max_size">20</prop>
            <prop key="hibernate.c3p0.timeout">300</prop>
            <prop key="hibernate.c3p0.max_statements">50</prop>
            <prop key="hibernate.c3p0.idle_test_period">3000</prop>
        </props>
    </property>
    <property name="dataSource" ref="dataSource"/>