2012-01-16 3 views
0

次の設定があります。 JSP /サーブレット=>プレゼンテーション層。 HibernateとOpenJPA =>データアクセス層。13時間の非アクティブの後に「クエリを実行できませんでした」エラーが発生する

データベースに接続するには、構成情報を「persistence.xml」ファイルに追加します。私はorg.hibernate.exception.JDBCConnectionException: could not execute queryエラーを取得しています

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
<property name="hibernate.connection.url" value="jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/test?autoReconnect=true"/> 
<property name="hibernate.connection.username" value="xxx"/> 
<property name="hibernate.connection.password" value="xxx"/> 
<property name="hibernate.generate_statistics" value="true"/> 
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.OSCacheProvider"/> 
<property name="hibernate.cache.use_second_level_cache" value="true"/> 
<property name="hibernate.show_sql" value="true"/> 
<property name="hibernate.format_sql" value="true"/> 
<property name="hibernate.c3p0.min_size" value="5"/> 
<property name="hibernate.c3p0.max_size" value="20"/> 
<property name="hibernate.c3p0.timeout" value="1800"/> 
<property name="hibernate.c3p0.max_statements" value="50"/> 
<property name="hibernate.c3p0.idle_test_period" value="1800"/> 
<property name="c3p0.idleConnectionTestPeriod" value="1810"/> 

:ここで「persistence.xmlの」ファイルのエントリがあります。 13時間以上休止した後。このエラーは一貫して再現されません。私はテストセットアップでエラーを再現することができませんが、このエラーは運用サーバー上で発生しています。

フォーラムには似たようなエントリがありますが、私の質問には答えられません。リンクは以下のとおりです。

Getting org.hibernate.exception.JDBCConnectionException: could not execute query even through JNDI

Keep getting org.hibernate.exception.JDBCConnectionException: could not execute query

は、私はいくつかの設定を欠落しているか、何か間違ったことをやっていますか?

+0

なぜこの質問のためにOpenJPAがタグ付けされていますか? – Rick

+0

実行しているクエリは何ですか?実稼働環境で実行されているときにクエリによって返されるデータの量 – Rick

+0

'@ Rick'アプリケーションにログイン中にこのエラーが発生します。私が実行しているクエリは 'SELECT * from user WHERE userid = x AND password = xxx'です。このクエリは単一レコードだけを返しています。 – Natraj

答えて

0

私にとってはc3p0バージョンの問題でした。最新のc3p0バージョンを使用すると、問題は確認されませんでした。また、例外がスローされたときに発生するために、いくつかの接続リークが使用されます。最終的に処理されたブロックに接続解除コードを追加します。

関連する問題