public class GetChildrenSync implements Watcher{
private static ZooKeeper zooKeeper;
public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
zooKeeper = new ZooKeeper("127.0.0.1:2181",5000,new GetChildrenSync());
System.out.println(zooKeeper.getState().toString());
Thread.sleep(Integer.MAX_VALUE);
}
private void doSomething(ZooKeeper zooKeeper){
try {
List<String> children = zooKeeper.getChildren("/", true);
System.out.println("建立链接时获取指定路径下节点(并对其节点及子节点设置监听),子节点->" + children);
} catch (Exception e) {
}
}
@Override
public void process(WatchedEvent event) {
System.out.println("事件状态:" + event.getState() +",事件类型:" + event.getType() +",事件涉及路径:" + event.getPath());
if (event.getState() == KeeperState.SyncConnected){
if (event.getType()==EventType.None && null==event.getPath()){
doSomething(zooKeeper);
}else{
//节点发送改变
if (event.getType()==EventType.NodeChildrenChanged){
try {
System.out.println("指定节点下节点发生变化重新获取子并设置监听器:" + zooKeeper.getChildren(event.getPath(), true));
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}else{
System.out.println("与服务器断开链接......");
}
}
}
private static ZooKeeper zooKeeper;
public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
zooKeeper = new ZooKeeper("127.0.0.1:2181",5000,new GetChildrenSync());
System.out.println(zooKeeper.getState().toString());
Thread.sleep(Integer.MAX_VALUE);
}
private void doSomething(ZooKeeper zooKeeper){
try {
List<String> children = zooKeeper.getChildren("/", true);
System.out.println("建立链接时获取指定路径下节点(并对其节点及子节点设置监听),子节点->" + children);
} catch (Exception e) {
}
}
@Override
public void process(WatchedEvent event) {
System.out.println("事件状态:" + event.getState() +",事件类型:" + event.getType() +",事件涉及路径:" + event.getPath());
if (event.getState() == KeeperState.SyncConnected){
if (event.getType()==EventType.None && null==event.getPath()){
doSomething(zooKeeper);
}else{
//节点发送改变
if (event.getType()==EventType.NodeChildrenChanged){
try {
System.out.println("指定节点下节点发生变化重新获取子并设置监听器:" + zooKeeper.getChildren(event.getPath(), true));
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}else{
System.out.println("与服务器断开链接......");
}
}
}