Zookeeper中的监听器只执行一次,需要在watcher类中重写process方法,以达到重复注册监听器的效果(这个process()是一个回调函数,在eventThread接受到zk服务器发送来的watcherEvent事件后就会自动回调对应的watcher的process()方法去做相应的处理,然后想要实现重复注册监听只需要再次在这个回调函数中重新去监听该节点即可)
MyWatcher.java
package watch;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
public class MyWatcher implements Watcher{
private ZooKeeper zk=null;
public MyWatcher() {
// TODO Auto-generated constructor stub
}
public MyWatcher(ZooKeeper zk) {
this.zk=zk;
}
public void setZk(ZooKeeper zk) {
this.zk = zk;
}
@Override
public void process(WatchedEvent event) {
String path=event.getPath();
KeeperState state = event.getState();
EventT