Java Spring 데이터베이스 응용 프로그램은 org.enhydra.jdbc.pool.poolkeeper에 대한 참조를 종료하지 않습니다.

StackOverflow https://stackoverflow.com/questions/1445503

문제

안녕하세요 모두 org.enhydra.jdbc.pool.poolkeeper에 대한 참조가 남아 있기 때문에 끝나지 않을 간단한 스프링 응용 프로그램이 있습니다. 나는 아래에 계시하다고 느끼는 모든 참고 문헌을 포함하여 괜찮아 보이고 전에 경험 한 사람이 있습니까?

나는 jstack을 달렸다.

"Thread-1" prio=10 tid=0x00007f89b03d8000 nid=0x755 in Object.wait() [0x00007f89bc243000]    java.lang.Thread.State: TIMED_WAITING (on object monitor)  at java.lang.Object.wait(Native Method)
    - waiting on <0x00007f89ec57de00> (a org.enhydra.jdbc.pool.PoolKeeper)  at org.enhydra.jdbc.pool.PoolKeeper.run(PoolKeeper.java:55)
    - locked <0x00007f89ec57de00> (a org.enhydra.jdbc.pool.PoolKeeper)  at java.lang.Thread.run(Thread.java:619)

이제 왜 이런 일이 일어나고 있는지 혼란스러워 JPA 구성의 관련 부분이 포함되어 있습니다.

<bean id="innerDataSource" class="org.enhydra.jdbc.standard.StandardXADataSource"
    destroy-method="shutdown">
    <property name="transactionManager" ref="jotm" />
    <property name="driverName" value="${jdbc.driverClassName}"/>
    <property name="url" value ="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>
<bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"
    destroy-method="shutdown">
    <property name="dataSource" ref="innerDataSource"/>
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="maxSize" value="100" />
    <!-- test your jdbc connection before using it -->
    <property name="checkLevelObject" value="${jdbc.checkLevelObject}"/>
    <property name="jdbcTestStmt" value="${jdbc.jdbcTestStmt}"/>
</bean>

감사합니다 폴

도움이 되었습니까?

해결책

웹 응용 프로그램은 일반적으로 사용을 사용하여 스프링 응용 프로그램 컨텍스트를 구성합니다 ContextLoaderListener, 웹 응용 프로그램이 중지 될 때 응용 프로그램 컨텍스트를 닫습니다.

독립형 Java 응용 프로그램은 전화해야합니다 close 애플리케이션 컨텍스트에 대한 메소드에서 구성된 메소드를 호출합니다. destroy-method 콩을 파괴하는 동안 속성. 또는 전화로 전화하십시오 registerShutdownHook 메소드 JVM 종료시 응용 프로그램 컨텍스트를 닫는 종료 후크를 등록하는 방법.

다른 팁

Spring 파일은 Enhydra Javadoc (세부 사항에서 드문 경우)을 기반으로 나에게 정확 해 보입니다. 나는 a를 보았다 stopPool() API의 방법. 아마도 당신의 시도를 시도하십시오 destroy-method?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top