public List<String> getChildrenNode(String path, boolean watcher) throws KeeperException, InterruptedException { // 返回path節點的子節點列表 return zk.getChildren(path,watcher); } public List<String> getChildrenNode(String path, Watcher watcher) throws KeeperException, InterruptedException { return zk.getChildren(path,watcher); } public List<String> getChildrenNode(String path,boolean watcher, Stat stat) throws KeeperException, InterruptedException { // 返回stat和子節點 return zk.getChildren(path,watcher,stat); } public List<String> getChildrenNode(String path, Watcher watcher, Stat stat) throws KeeperException, InterruptedException { return zk.getChildren(path,watcher,stat); } public void getChildrenNode(String path, boolean watch, AsyncCallback.ChildrenCallback cb, Object ctx){ //以異步的方式返回子節點,不返回path節點的狀態信息"stat" zk.getChildren(path,watch,cb,ctx); } public void getChildrenNode(String path, Watcher watch,AsyncCallback.ChildrenCallback cb, Object ctx){ zk.getChildren(path,watch,cb,ctx); } public void getChildrenNode(String path, boolean watcher, AsyncCallback.Children2Callback cb, Object ctx) throws KeeperException, InterruptedException { // 以異步的方式返回子節點,返回path指定節點的狀態信息"stat" zk.getChildren(path,watcher,cb,ctx); } public void getChildrenNode(String path, Watcher watcher, AsyncCallback.Children2Callback cb, Object ctx) throws KeeperException, InterruptedException { zk.getChildren(path,watcher,cb,ctx); }
package com.demo; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; import java.util.List; import java.util.concurrent.CountDownLatch; public class ZK_GetChildren_Sync implements Watcher{ private static ZooKeeper zk = null; private static CountDownLatch connectedSemaphore = new CountDownLatch(1); @Override public void process(WatchedEvent event) { // TODO Auto-generated method stub System.out.println("event.getType() " + event.getType()); if(event.getType()== Event.EventType.NodeChildrenChanged){ List<String> childrenList = null; try { childrenList = zk.getChildren(event.getPath(), true); System.out.println("添加節點後="+childrenList.toString()); connectedSemaphore.countDown(); } catch (KeeperException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) throws InterruptedException, KeeperException, IOException { String path = "/javaclient"; ZK_GetChildren_Sync zks = new ZK_GetChildren_Sync(); zk = new ZooKeeper("localhost:2181",5000,zks); List<String> childrenList = zks.getChildrenNode(path, true);// false: 不使用默認的watcher System.out.println(childrenList.toString()); connectedSemaphore.await(); } public List<String> getChildrenNode(String path, boolean watcher) throws KeeperException, InterruptedException { // 返回path節點的子節點列表 return zk.getChildren(path,watcher); } public List<String> getChildrenNode(String path, Watcher watcher) throws KeeperException, InterruptedException { return zk.getChildren(path,watcher); } public List<String> getChildrenNode(String path,boolean watcher, Stat stat) throws KeeperException, InterruptedException { // 返回stat和子節點 return zk.getChildren(path,watcher,stat); } public List<String> getChildrenNode(String path, Watcher watcher, Stat stat) throws KeeperException, InterruptedException { return zk.getChildren(path,watcher,stat); } public void getChildrenNode(String path, boolean watch, AsyncCallback.ChildrenCallback cb, Object ctx){ //以異步的方式返回子節點,不返回path節點的狀態信息"stat" zk.getChildren(path,watch,cb,ctx); } public void getChildrenNode(String path, Watcher watch,AsyncCallback.ChildrenCallback cb, Object ctx){ zk.getChildren(path,watch,cb,ctx); } public void getChildrenNode(String path, boolean watcher, AsyncCallback.Children2Callback cb, Object ctx) throws KeeperException, InterruptedException { // 以異步的方式返回子節點,返回path指定節點的狀態信息"stat" zk.getChildren(path,watcher,cb,ctx); } public void getChildrenNode(String path, Watcher watcher, AsyncCallback.Children2Callback cb, Object ctx) throws KeeperException, InterruptedException { zk.getChildren(path,watcher,cb,ctx); } public ZooKeeper getZk() { return zk; } public void setZk(ZooKeeper zk) { this.zk = zk; } }
public byte[] getNodeData(String path, boolean watcher, Stat stat) throws KeeperException, InterruptedException { return zk.getData(path,watcher,stat); } public byte[] getNodeData(String path, Watcher watcher, Stat stat) throws KeeperException, InterruptedException { return zk.getData(path,watcher,stat); } public void getNodeData(String path, boolean watch, AsyncCallback.DataCallback cb, Object ctx) { zk.getData(path,watch,cb,ctx); } public void getNodeData(String path, Watcher watcher, AsyncCallback.DataCallback cb, Object ctx) { zk.getData(path,watcher,cb,ctx); }
package com.demo; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; import java.util.concurrent.CountDownLatch; public class ZK_GetData_Sync implements Watcher { private static ZooKeeper zk = null; private static Stat stat = new Stat(); private static CountDownLatch connectedSemaphore = new CountDownLatch(1); @Override public void process(WatchedEvent event) { // 數據節點的數據內容發生變動 if(event.getType()== Event.EventType.NodeDataChanged){ try { byte data[] = zk.getData(event.getPath(), true, stat); System.out.println("修改節點後= " + new String(data)); System.out.println("修改節點後 dataversion= " + stat.getVersion()); connectedSemaphore.countDown(); } catch (KeeperException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) throws IOException, KeeperException, InterruptedException { String path = "/javaclient/node1"; zk = new ZooKeeper("127.0.0.1:2181",5000,new ZK_GetData_Sync()); byte data[] = zk.getData(path,true, stat); System.out.println("before= " + new String(data)); System.out.println("before dataversion=" + stat.getVersion()); connectedSemaphore.await(); } public byte[] getNodeData(String path, boolean watcher, Stat stat) throws KeeperException, InterruptedException { return zk.getData(path,watcher,stat); } public byte[] getNodeData(String path, Watcher watcher, Stat stat) throws KeeperException, InterruptedException { return zk.getData(path,watcher,stat); } public void getNodeData(String path, boolean watch, AsyncCallback.DataCallback cb, Object ctx) { zk.getData(path,watch,cb,ctx); } public void getNodeData(String path, Watcher watcher, AsyncCallback.DataCallback cb, Object ctx) { zk.getData(path,watcher,cb,ctx); } public static ZooKeeper getZk() { return zk; } public static void setZk(ZooKeeper zk) { ZK_GetData_Sync.zk = zk; } }
public Stat setNodeData(final String path, byte data[], int version) throws KeeperException, InterruptedException { return zk.setData(path,data,version); } public void setNodeData(final String path, byte data[], int version, AsyncCallback.StatCallback cb, Object ctx) { zk.setData(path,data,version,cb,ctx); }
package com.demo; import com.alibaba.fastjson.JSON; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; import java.util.concurrent.CountDownLatch; public class ZK_SetData_Sync{ private static ZooKeeper zk = null; private static Stat stat = new Stat(); private static CountDownLatch connectedSemaphore = new CountDownLatch(1); public static void main(String[] args) throws IOException, KeeperException, InterruptedException { String path = "/javaclient/node2"; byte[] dataBytes = "hello11".getBytes(); String context = "上下文內容"; ZK_SetData_Sync zk_setData_sync = new ZK_SetData_Sync(); // 建立鏈接 zk = new ZooKeeper("127.0.0.1:2181",5000,new ZK_GetData_Sync()); // 同步修改數據 // Stat stat = zk_setData_sync.setNodeData(path,dataBytes,2); // System.out.println(JSON.toJSONString(stat)); // 異步修改數據 // zk_setData_sync.setNodeData(path,dataBytes,2,new SetDataAsyncCallback(),context); // Thread.sleep(3*1000); } public Stat setNodeData(final String path, byte data[], int version) throws KeeperException, InterruptedException { return zk.setData(path,data,version); } public void setNodeData(final String path, byte data[], int version, AsyncCallback.StatCallback cb, Object ctx) { zk.setData(path,data,version,cb,ctx); } public static ZooKeeper getZk() { return zk; } public static void setZk(ZooKeeper zk) { ZK_SetData_Sync.zk = zk; } }
回調類java
package com.demo; import com.alibaba.fastjson.JSON; import org.apache.zookeeper.AsyncCallback; import org.apache.zookeeper.data.Stat; public class SetDataAsyncCallback implements AsyncCallback.StatCallback{ @Override public void processResult(int rc, String path, Object ctx, Stat stat) { System.out.println("執行回調方法"); System.out.println("rc: "+rc); System.out.println("path: "+path); System.out.println("ctx "+ ctx); System.out.println("stat "+ JSON.toJSONString(stat)); } }