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