本帖最后由 lgmsyy 于 2015-02-10 12:13:32 编辑

解决方案 »

  1.   

    Oracle关闭的是实例还是监听,如果实例关闭,dbcp的连接池肯定会报错的,池里面的数据库连接有连接检测机制
      

  2.   

    网上说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> 
      

  3.   

    也没有看到你validate的 sql语句啊validate 功能是否配置正确了?
      

  4.   


    <prop key="hibernate.c3p0.validate">  
                        true  
                    </prop>  这样不对吗?应该怎么配置呢?
      

  5.   

    <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"/>