Java Federdatenbankanwendung wird nicht Bezug auf org.enhydra.jdbc.pool.PoolKeeper verlassen noch aktiv ist, warum?

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

Frage

Hallo alle ich eine einfache Feder Anwendung, die, da es wird nicht enden, ist immer noch ein Verweis auf org.enhydra.jdbc.pool.PoolKeeper links. Ich schließe alle Referenzen, die ich sind unten Revelant fühlt sich es ok aussehen und hat dies jemand zuvor erlebt?

Ich lief jstack, um zu sehen, was nicht Daemon-Threads, wo laufen und fand die folgenden.

"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)

Jetzt bin ich verwirrt, warum dies geschieht ich relevante Teile meines JPA Konfiguration enthalten

<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>

Danke Paul

War es hilfreich?

Lösung

Webanwendungen konfigurieren typischerweise einen Spring-Anwendungskontext mit ContextLoaderListener , die den Anwendungskontext schließt, wenn die Web-Anwendung gestoppt wird.

Standalone-Java-Anwendungen haben die close Methode auf dem Anwendungskontext, der die Methoden in dem destroy-method Attribute konfigurierten aufruft, während die Bohnen zu zerstören. Alternativ rufen Sie die

Andere Tipps

Ihre Frühlings-Datei sieht mir richtig auf der Grundlage der enhydra javadoc (die auf Details spärlich). Ich habe eine stopPool() Methode in der API. Vielleicht versuchen Sie, dass in Ihrem destroy-method?

scroll top