9

Spring と Hibernate を使用して Struts2 に基づく Web アプリケーションを開発しているときに、問題に遭遇しました。

サイトを数回 (たとえば 2 ~ 4 回) 更新すると、Hibernate はToo many connectionsに関する例外を表示しています。C3P0 接続プールを実装しようとしましたが、いくつか問題があります


hibernate.cfg.xml構成:

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/axelle</property>
<property name="hibernate.connection.username">axelle</property>
<property name="hibernate.connection.password">dbpassword</property>
<property name="hibernate.current_session_context_class">thread</property>    

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

applicationContext.xml

<bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
      p:location="classpath:jdbc.properties"/>

<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"
      p:driverClassName="${jdbc.driverClassName}"
      p:url="${jdbc.url}"
      p:username="${jdbc.username}"
      p:password="${jdbc.password}"
      p:connectionProperties="${jdbc.connectionProperties}"/>

<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation">
        <value>classpath:hibernate.cfg.xml</value>
    </property>
</bean>

<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref local="sessionFactory"/>
    </property>
</bean>

ログ出力は次のとおりです。

org.hibernate.exception.JDBCConnectionException: Cannot open connection

と:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"

これは、PROCESSLIST MySQL ウィンドウの外観です: http://img844.imageshack.us/img844/3959/be69273cc2.png


接続のmax_sizeを 20 に設定しましたが、ファイルから C3P0 構成を読み取っていないようです。画面から、接続数が 20 を超えていることがわかります。または、何か間違ったことをしている可能性があります。しかしここで?私は本当に何人かの助けが必要です、私はこれに感謝します、そして前もって感謝します.

4

2 に答える 2

1

C3P0PooledDataSourceは、指定された<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" ...DriverClassName <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ... 、url、ユーザー名、およびパスワードを使用して、ラップされたデータベース接続を作成します。

于 2014-04-10T13:05:24.707 に答える