>  기사  >  데이터 베이스  >  원격 애플리케이션에서 \"MySQLNonTransientConnectionException: 연결이 닫힌 후 작업이 허용되지 않음\"을 수정하는 방법은 무엇입니까?

원격 애플리케이션에서 \"MySQLNonTransientConnectionException: 연결이 닫힌 후 작업이 허용되지 않음\"을 수정하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-30 13:11:02584검색

How to Fix

MySQL 임시 연결 예외

문제:

애플리케이션을 원격으로 배포할 때 "com.mysql" 예외가 발생합니다. .jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: No Operations allowed after Connection close"가 애플리케이션을 하루 이상 실행한 후 발생합니다.

원인:

오류가 발생했습니다. 닫힌 연결로.

잠재적 해결 방법:

  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. 다음 속성을 사용하여 클래스 경로 루트에 있는 "properties" 파일을 삭제합니다.

    <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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.