リモート アプリケーションで「MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」を修正する方法?

Linda Hamilton
リリース: 2024-10-30 13:11:02
オリジナル
579 人が閲覧しました

How to Fix

MySQL 非一時的な接続例外

問題:

アプリケーションをリモートでデプロイするときに例外「com.mysql」が発生する.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」というエラーが、アプリケーションを 1 日以上実行した後に発生します。

原因:

エラーが発生しました

考えられる解決策:

  1. 接続プーリング:

    Hibernate の構築-接続プーリングには制限があります。 C3P0 などのサードパーティの接続プーリング ソリューションの使用を検討してください。

    <code class="xml"><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    <property name="c3p0.min_size">5</property>
    <property name="c3p0.max_size">20</property>
    <property name="c3p0.max_statements">50</property>
    <property name="c3p0.maxIdleTime">3600</property></code>
    ログイン後にコピー
  2. 使用前に接続をテストします:

    「c3p0.

    <code class="properties">c3p0.testConnectionOnCheckout=true</code>
    ログイン後にコピー

    これにより、使用前に各接続がテストされ、障害のある接続を特定して閉じるのに役立ちます。

更新された hibernate.cfg.xml 構成:

<code class="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/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="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.max_statements">50</property>

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.maxIdleTimeExcessConnections">3600</property>
<property name="c3p0.idleConnectionTestPeriod">3600</property>
<property name="c3p0.maxIdleTime">3600</property></code>
ログイン後にコピー

注: 構成の変更は、運用環境にデプロイする前に必ず開発環境またはステージング環境でテストしてください。 .

以上がリモート アプリケーションで「MySQLNonTransientConnectionException: 接続が閉じられた後は操作は許可されません」を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!