[
https://issues.apache.org/jira/browse/ZOOKEEPER-1394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15622033#comment-15622033
]
wu wen commented on ZOOKEEPER-1394:
-----------------------------------
You can try to use the {{@PreDestroy}} annotation to close the zkclient.
for example
{code:java}
@PreDestroy
public void destroy() {
ZooKeeper.close();
}
{code}
> ClassNotFoundException on shutdown of client
> --------------------------------------------
>
> Key: ZOOKEEPER-1394
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1394
> Project: ZooKeeper
> Issue Type: Bug
> Components: java client
> Affects Versions: 3.4.2
> Environment: OS X 10.7 java version "1.6.0_29"
> Reporter: Herman Meerlo
> Assignee: wu wen
> Priority: Minor
> Attachments: ZOOKEEPER-1394.patch
>
>
> When close() is called on the ZooKeeper instance from a ContextListener
> (contextDestroyed) there is no way to synchronize with the fact that the
> EventThread and SendThread have actually finished their work. The problem
> lies in the SendThread which makes a call to ZooTrace when it exits, but that
> class has not been loaded yet. Because the ContextListener could not
> synchronize with the death of the threads the classloader has already
> disappeared, resulting in a ClassNotFoundException.
> My personal opinion is that the close() method should probably wait until the
> event and send thread have actually died.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)