/** * * @author zhangwei_david * @version $Id: ZKDemo.java, v 0.1 2015年5月2日 上午9:10:56 zhangwei_david Exp $ */public class ZKDemo { private static CountDownLatch latch = new CountDownLatch(1); private static ZooKeeper zk = null; private static String path = "/zk-demo"; /** * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { zk = new ZooKeeper("localhost:2181", 5000, new Watcher() { public void process(WatchedEvent event) { if (KeeperState.SyncConnected == event.getState()) { //如果客户端已经建立连接闭锁减一 latch.countDown(); } } }); // 等待zk实例创建完成 latch.await(); // 如果该节点不存在则创建持久化的节点 if (zk.exists(path, true) == null) { zk.create(path, "".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } //创建临时节点 zk.create(path + "/test", "test".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); // 删除节点 zk.delete(path + "/test", 0); // 异步创建临时节点 zk.create(path + "/test", "123".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL, new StringCallback() { public void processResult(int rc, String path, Object ctx, String name) { System.out.println("result code=" + rc + ", path=" + path + " context=" + ctx + ", name=" + name); } }, "Test Context"); TimeUnit.SECONDS.sleep(3); // 更新数据 zk.setData(path + "/test", "testData".getBytes(), -1); zk.create(path + "/test2", "123".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); // 获取节点 Listznodes = zk.getChildren(path, true); // 获取所有节点下的数据 Stat stat = new Stat(); for (String str : znodes) { byte[] data = zk.getData(path + "/" + str, true, stat); System.out.println("获取节点:" + str + " 的数据是:" + new String(data)); } }}