Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan Ralat \"com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi selepas sambungan ditutup\" dalam Hibernate?

Bagaimana untuk Membetulkan Ralat \"com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi selepas sambungan ditutup\" dalam Hibernate?

Barbara Streisand
Barbara Streisandasal
2024-10-27 02:28:02453semak imbas

How to Fix the

Mendiagnosis "com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi dibenarkan selepas sambungan ditutup" Ralat

Apabila menggunakan Hibernate dengan sambungan jauh, anda mungkin menghadapi ralat "Tiada operasi dibenarkan selepas sambungan ditutup" disebabkan sambungan terputus. Secara lalai, MySQL mempunyai tetapan tunggu_masa tamat yang boleh menyebabkan sambungan ditutup selepas tempoh tidak aktif. Ini boleh berlaku semasa aplikasi lanjutan berjalan atau jika terdapat ketidakstabilan rangkaian.

Pengumpulan Sambungan dengan C3P0

Untuk menangani isu ini, disyorkan untuk menggunakan perpustakaan pengumpulan sambungan seperti C3P0. Pengumpulan sambungan asli Hibernate adalah terhad dan tidak sesuai untuk persekitaran pengeluaran. Pengumpulan sambungan mewujudkan himpunan sambungan yang diurus dan digunakan semula oleh aplikasi, mengurangkan overhed untuk mewujudkan sambungan baharu untuk setiap pertanyaan.

Mengkonfigurasi C3P0 dengan Hibernate

Inilah fail konfigurasi yang dikemas kini menggunakan 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 -->

Dalam konfigurasi ini, pembekal sambungan C3P0 didayakan dengan tetapan yang sesuai untuk saiz kumpulan, tamat masa dan ujian sambungan.

Lain-lain Punca Berpotensi

Jika pengumpulan sambungan tidak menyelesaikan isu ini, adalah wajar untuk menyiasat punca berpotensi lain, seperti:

  • Tetapan firewall atau rangkaian menyekat sambungan
  • Isu konfigurasi MySQL, seperti kebenaran pengguna yang salah atau pemacu JDBC yang sudah lapuk
  • Kekangan memori atau sumber pada pelayan atau aplikasi

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \"com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi selepas sambungan ditutup\" dalam Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn