APIがしばらくアイドル状態になるたびに、データベースへの接続が失われます(時間を正確に定義することはできません。数秒のアイドル時間の後、場合によっては数分後のアイドル時間、場合によっては突堤の再起動直後でも発生する可能性があります)。この問題はさまざまなマシンで再現できるため、mysqlデータベースとは直接関係がないことを確認します。
スローされた例外はここにあります
データベース構成は、休止状態と春に基づいています。
<!-- c3p0 of version 0.9.2.1 (current stable) -->
<!-- spring data: 1.2.0.RELEASE -->
<!-- mysql connector: 5.1.18 -->
<!-- hibernate: 4.1.9.FINAL -->
<bean id="basisDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
<property name="maxIdleTime" value="600" />
<property name="maxConnectionAge" value="86400" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="de.yourdelivery.data.*" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false" />
<property name="showSql" value="true" />
<property name="database" value="MYSQL" />
</bean>
</property
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
データベース接続とドライバーは次のとおりです。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://xxx:3306/xxx?zeroDateTimeBehavior=convertToNull
jdbc.urlを次のように拡張しても機能しません
&autoReconnect=true&autoReconnectForPools=true
私はOpenSessionInViewパターンを使用して、ドーザーマッピング中に必要なすべての関係を遅延ロードします(これはアンチパターンと見なされることはわかっていますが、これまでのところ正常に機能しているため、現在そのパターンを非難していません)
Mysqlwait_timeout
は28800に設定されています
C3POの起動ログは次のようになります
プロパティ]13:34:54,823 INFO MLog:80-log4jロギングを使用するMLogクライアント。13:34:54,883 INFO C3P0Registry:204-c3p0-0.9.1.2を初期化しています[2007年5月21日15:04:56にビルドされました。デバッグ?true; trace:10] 13:34:55,111 INFO XmlWebApplicationContext:1350-タイプ[classcom.mchange.v2.c3p0.ComboPooledDataSource]のBean'deDataSource'は、すべてのBeanPostProcessorsによる処理の対象ではありません(例:auto-の対象ではありません)プロキシ)13:34:55,148 INFO XmlWebApplicationContext:1350-タイプ[classcom.mchange.v2.c3p0.ComboPooledDataSource]のBean'plDataSource'は、すべてのBeanPostProcessorsによる処理の対象ではありません(例:自動プロキシの対象ではありません) 13:34:55,150 INFO XmlWebApplicationContext:1350-タイプ[classde.yourdelivery.data.routing。のBean'dataSource'。*、password =*}、propertyCycle-> 0、testConnectionOnCheckin-> false、testConnectionOnCheckout-> false、unreturnedConnectionTimeout-> 0、usesTraditionalReflectiveProxies-> false] 13:34:56,086 INFO方言:123-HHH000400:方言の使用:org.hibernate.dialect.MySQLDialect 13 :34:56,095 INFO LobCreatorBuilder:120-HHH000424:createClob()メソッドがエラーをスローしたときにコンテキストLOBの作成を無効にする:java.lang.reflect.InvocationTargetException 13:34:56,108 INFO TransactionFactoryInitiator:73-HHH000268:トランザクション戦略:org.hibernate.engine .transaction.internal.jdbc.JdbcTransactionFactory 13:34:56,112 INFO ASTQueryTranslatorFactory:48-HHH000397:ASTQueryTranslatorFactoryの使用13:34:56,149 INFOバージョン:24-Hibernate Validator 4.2.0.Final 13:34:56,916 INFO XmlWebApplicationContext:1350-Bean 'タイプ[classorg.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]のentityManagerFactory'は、すべてのBeanPostProcessorsによる処理の対象にはなりません(例:自動プロキシの対象にはなりません)
では、なぜアプリケーションはアイドル時間中に接続を失うのでしょうか。