sql >> データベース >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:接続が閉じられた後の操作は許可されていません

    @swanliuが指摘したように、これは接続不良が原因です。
    ただし、サーバーのタイミングとクライアントのタイムアウトを調整する前に、まず、より適切な接続プール戦略を使用してみます。

    接続プール

    Hibernate自体は、接続プール戦略が最小限であることを認めています

    私は個人的にC3P0を使用しています 。ただし、DBCPを含む他の選択肢があります 。
    チェックアウト

    以下は、私のアプリケーションで使用されているC3P0の最小構成です。

    <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">1800</property> <!-- seconds --> 
    

    編集:
    構成ファイルを更新しました(リファレンス )、以前にプロジェクト用にコピーして貼り付けたばかりなので、タイムアウトによって問題が解決するのが理想的です。それでも問題が解決しない場合は、高価な解決策があります。 ご覧になると思います:

    クラスパスのルートにある必要があるファイル「c3p0.properties」を作成します(つまり、アプリケーションの特定の部分でそれをオーバーライドする方法はありません)。 (リファレンス

    # c3p0.properties
    c3p0.testConnectionOnCheckout=true
    

    この構成では、各接続が使用される前にテストされます。ただし、サイトのパフォーマンスに影響を与える可能性があります。



    1. OracleDatabaseでカーソルが複数の値を返すカーソルベースのレコードデータ型

    2. 名前に角かっこが含まれているSQLServerの名前を変更するにはどうすればよいですか?

    3. mysqlはどのようにして数百万のレコードをより速く挿入できますか?

    4. 2行の2つの値を切り替えるSQLUPDATEステートメント