ホームページ  >  記事  >  データベース  >  Hibernate で「com.mysql.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」エラーを修正する方法

Hibernate で「com.mysql.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」エラーを修正する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-27 02:28:02453ブラウズ

How to Fix the

「com.mysql.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」エラーの診断

Hibernate 使用時リモート接続では、接続の切断により「接続が閉じられた後は操作は許可されません」エラーが発生する可能性があります。デフォルトでは、MySQL には wait_timeout 設定があり、一定期間非アクティブな状態が続いた後に接続を閉じることができます。これは、アプリケーションの長時間実行中、またはネットワークが不安定な場合に発生する可能性があります。

C3P0 による接続プーリング

この問題に対処するには、次のような接続プーリング ライブラリを使用することをお勧めします。 C3P0。 Hibernate のネイティブ接続プーリングは制限されており、運用環境には適していません。接続プーリングは、アプリケーションによって管理および再利用される接続のプールを確立し、クエリごとに新しい接続を確立するオーバーヘッドを削減します。

Hibernate を使用した C3P0 の構成

ここにあります。 C3P0 を使用した更新された構成ファイル:

<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/xyz</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property>

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">3600</property> <!-- seconds -->

この構成では、C3P0 接続プロバイダーは、プール サイズ、タイムアウト、接続テストの適切な設定で有効になります。

その他考えられる原因

接続プーリングで問題が解決しない場合は、次のような他の考えられる原因を調査する価値があります。

  • 接続をブロックしているファイアウォールまたはネットワーク設定
  • MySQL 構成の問題 (不適切なユーザー権限や古い JDBC ドライバーなど)
  • サーバーまたはアプリケーションのメモリまたはリソースの制約

以上がHibernate で「com.mysql.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。