Mysql
 sql >> база данни >  >> RDS >> Mysql

Моето приложение spring+hibernate не затваря jdbc връзки

Проблемът не се крие в сесиите, а в пула от връзки, сесиите се управляваха правилно, но пулът за връзки в слоя JDBC не затваряше връзките.

Това са нещата, които направих, за да ги поправя.

Конфигурация на контекста на JDBC

1.- Променена JDBC фабриката за връзка от старата BasicDataSourceFactory на tomcat на новата DataSourceFactory на tomcat

2.- Настроени настройките на JDBC въз основа на тази статия:http://www.tomcateexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency

Фабрична xml конфигурация на сесия

3.- Изтрих този ред от фабричната конфигурация на сесията:

<prop key="hibernate.max_fetch_depth">1</prop>

Ето как завърши конфигурацията ми:

Конфигурация на контекста на JDBC

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" override="true" reloadable="false" swallowOutput="false">
    <Resource name="jdbc/catWDB" auth="Container" type="javax.sql.DataSource"
              driverClassName="com.mysql.jdbc.Driver"
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              url="@[email protected]"
              username="@[email protected]"
              password="@[email protected]"
              maxActive="200"
              maxIdle="50"
              minIdle="10"
              suspectTimeout="60"
              timeBetweenEvictionRunsMillis="30000"
              minEvictableIdleTimeMillis="60000"
              validationQuery="select 1"
              validationInterval="30000"
              testOnBorrow="true"
              removeAbandoned="true"
              removeAbandonedTimeout="60"
              abandonWhenPercentageFull="10"
              maxWait="10000"
              jdbcInterceptors="ResetAbandonedTimer;StatementFinalizer"
            />
</Context>

Фабрична xml конфигурация на сесия

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref local="dataSource"/>
        </property>
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.max_fetch_depth">3</prop>
            </props>
        </property>
</bean>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се свържа с MySQL база данни в Python?

  2. Може ли AUTO_INCREMENT да се използва безопасно в BEFORE TRIGGER в MySQL

  3. Услугата MySQL57 на локален компютър стартира и след това спря

  4. Фатална грешка:Неуловена грешка:Извикване на недефинирана функция mysql_connect()

  5. Списък с ограничения от MySQL база данни