国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ZooKeeper(3.4.5)

2019-11-14 23:06:45
字體:
來源:轉載
供稿:網友
ZooKeeper(3.4.5) - 原生 API 的簡單示例一、創建會話1. 創建一個基本的ZooKeeper會話實例
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;/** * 創建一個基本的ZooKeeper會話實例 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {        final CountDownLatch connectedSignal = new CountDownLatch(1);                /**         * ZooKeeper客戶端和服務器會話的建立是一個異步的過程         * 構造函數在處理完客戶端的初始化工作后立即返回,在大多數情況下,并沒有真正地建立好會話         * 當會話真正創建完畢后,Zookeeper服務器會向客戶端發送一個事件通知         */        ZooKeeper zk = new ZooKeeper("192.168.1.109:2181", 5000, new Watcher() {                        @Override            public void PRocess(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    connectedSignal.countDown();                }            }        });        System.out.println("State1: " + zk.getState());    // CONNECTING                connectedSignal.await();                System.out.println("State2: " + zk.getState());    // CONNECTED                zk.close();        System.out.println("State3: " + zk.getState());    // CLOSED    }}
2. 創建一個復用sessionId和sessionPasswd的Zookeeper對象示例
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;/** * 創建一個復用sessionId和sessionPasswd的ZooKeeper對象示例 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);                ZooKeeper zk = new ZooKeeper("192.168.1.109:2181", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    connectedSignal.countDown();                }            }        });                connectedSignal.await();        long sessionId = zk.getSessionId();        byte[] passwd = zk.getSessionPasswd();        zk.close();                        final CountDownLatch anotherConnectedSignal = new CountDownLatch(1);        ZooKeeper newZk = new ZooKeeper(                "192.168.1.109:2181",                 5000,                 new Watcher() {                    @Override                    public void process(WatchedEvent event) {                        if (event.getState() == KeeperState.SyncConnected) {                            anotherConnectedSignal.countDown();                        }                    }                },                sessionId,                 passwd);                anotherConnectedSignal.await();        newZk.close();    }}

二、創建節點1. 使用同步API創建一個ZNode節點
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;/** * 使用同步API創建一個ZNode節點 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);               ZooKeeper zk = new ZooKeeper("192.168.1.109:2181", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    connectedSignal.countDown();                }            }        });        connectedSignal.await();                String path = zk.create(                "/zk-huey",                 "hello".getBytes(),                 Ids.OPEN_ACL_UNSAFE,                 CreateMode.PERSISTENT        );        System.out.println(path + " is created.");                zk.close();    }}
2. 使用異步API創建一個ZNode節點
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;/** * 使用異步API創建一個ZNode節點 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);               ZooKeeper zk = new ZooKeeper("192.168.1.109:2181", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    connectedSignal.countDown();                }            }        });        connectedSignal.await();                zk.create(                "/zk-huey",                 "hello".getBytes(),                 Ids.OPEN_ACL_UNSAFE,                 CreateMode.PERSISTENT_SEQUENTIAL,                new AsyncCallback.StringCallback() {                    @Override                    public void processResult(int rc, String path, Object ctx, String name) {                        // 服務器響應嗎                        System.out.println("ResultCode: " + rc);                        // 接口調用時傳入API的數據節點的路徑參數值                        System.out.println("Znode: " + path);                        // 接口調用時傳入API的ctx參數值                        System.out.println("Context: " + (String)ctx);                        // 實際在服務端創建的節點名                        System.out.println("Real Path: " + name);                    }                },                "The Context"        );                zk.close();    }}

三、刪除節點1. 使用同API刪除一個ZNode節點
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;/** * 使用同步API刪除一個ZNode節點 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);               ZooKeeper zk = new ZooKeeper("192.168.1.109:2181", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    connectedSignal.countDown();                }            }        });        connectedSignal.await();                zk.delete("/zk-huey", -1);                zk.close();    }}
2. 使用異步API刪除一個ZNode節點
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.KeeperState;/** * 使用異步API刪除一個ZNode節點 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);               ZooKeeper zk = new ZooKeeper("192.168.1.109:2181", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    connectedSignal.countDown();                }            }        });        connectedSignal.await();                zk.delete(                "/zk-huey",                 -1,                new AsyncCallback.VoidCallback() {                    @Override                    public void processResult(int rc, String path, Object ctx) {                        System.out.println("ResultCode: " + rc);                        System.out.println("Znode: " + path);                        System.out.println("Context: " + (String)ctx);                    }                },                "The Context"        );                zk.close();    }}

四、獲取子節點列表1. 使用同步API獲取子節點列表
package com.huey.dream.demo;import java.util.List;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.data.Stat;/** * 使用同步API獲取子節點列表 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, null);        zk.register(new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    } else if (event.getType() == EventType.NodeChildrenChanged) {                                            try {                            System.out.println("NodeChildrenChanged.");                            List<String> children = zk.getChildren(event.getPath(), true);                            System.out.println("Children: " + children);                        } catch (KeeperException e) {                            e.printStackTrace();                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                    }                }            }        });        connectedSignal.await();                zk.create("/zk-huey", "root".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        zk.create("/zk-huey/node1", "node1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        zk.create("/zk-huey/node2", "node2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);                Stat stat = new Stat();        List<String> children = zk.getChildren("/zk-huey",                 true,    // 注冊默認的Watcher,當子節點類別發送變更的話,向客戶端發送通知                stat    // 用于描述節點狀態信息        );        System.out.println("Stat: " + stat);        System.out.println("Children: " + children);                zk.create("/zk-huey/node3", "node3".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);                Thread.sleep(10 * 1000);        zk.close();    }}

結果輸出:

Stat: 4294967436,4294967436,1425201236879,1425201236879,0,2,0,0,4,2,4294967438Children: [node2, node1]NodeChildrenChanged.State: CONNECTEDChildren: [node2, node3, node1]
2.使用異步API獲取子節點列表
package com.huey.dream.demo;import java.util.List;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.data.Stat;/** * 使用異步API獲取子節點列表 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, null);        zk.register(new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    } else if (event.getType() == EventType.NodeChildrenChanged) {                                            try {                            System.out.println("NodeChildrenChanged.");                            List<String> children = zk.getChildren(event.getPath(), true);                            System.out.println("Children: " + children);                        } catch (KeeperException e) {                            e.printStackTrace();                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                    }                }            }        });        connectedSignal.await();                zk.create("/zk-huey", "root".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        zk.create("/zk-huey/node1", "node1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        zk.create("/zk-huey/node2", "node2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);                zk.getChildren("/zk-huey",                 true,                new AsyncCallback.Children2Callback() {                    @Override                    public void processResult(int rc, String path, Object ctx,                            List<String> children, Stat stat) {                        System.out.println("ResultCode: " + rc);                        System.out.println("ZNode: " + path);                        System.out.println("Context: " + ctx);                        System.out.println("Children: " + children);                        System.out.println("Stat: " + stat);                    }                },                "The Context"        );                zk.create("/zk-huey/node3", "node3".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);                Thread.sleep(10 * 1000);        zk.close();    }}

五、獲取節點數據內容1. 使用同步API獲取節點數據內容
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;/** * 使用同步API獲取節點數據內容 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    }                }            }        });        connectedSignal.await();                zk.create("/zk-huey", "hello".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        byte[] nodeData = zk.getData("/zk-huey", false, null);        System.out.println("NodeData: " + new String(nodeData));                zk.close();    }}
2. 使用異步API獲取節點數據內容
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.data.Stat;/** * 使用異步API獲取節點數據內容 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    }                }            }        });        connectedSignal.await();                zk.create("/zk-huey", "hello".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        zk.getData(                "/zk-huey",                 false,                 new AsyncCallback.DataCallback() {                    @Override                    public void processResult(int rc, String path, Object ctx, byte[] data,                            Stat stat) {                        System.out.println("ResultCode: " + rc);                        System.out.println("ZNode: " + path);                        System.out.println("Context: " + ctx);                        System.out.println("NodeData: " + new String(data));                        System.out.println("Stat: " + stat);                    }                },                "The Context"        );                zk.close();    }}

六、更新數據1. 使用同步API更新節點數據內容
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;/** * 使用同步API更新節點數據內容 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    }                }            }        });        connectedSignal.await();                zk.create("/zk-huey", "hello".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        byte[] nodeData = zk.getData("/zk-huey", false, null);        System.out.println("NodeData: " + nodeData);                zk.setData("/zk-huey", "world".getBytes(), -1);        nodeData = zk.getData("/zk-huey", false, null);        System.out.println("NodeData: " + nodeData);                zk.close();    }}
2. 使用異步API更新節點數據內容
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.data.Stat;/** * 使用異步API更新節點數據內容 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    }                }            }        });        connectedSignal.await();                zk.create("/zk-huey", "hello".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        byte[] nodeData = zk.getData("/zk-huey", false, null);        System.out.println("NodeData: " + nodeData);                zk.setData(                "/zk-huey",                 "world".getBytes(),                 -1,                new AsyncCallback.StatCallback() {                    @Override                    public void processResult(int rc, String path, Object ctx, Stat stat) {                        System.out.println("ResultCode: " + rc);                        System.out.println("ZNode: " + path);                        System.out.println("Context: " + ctx);                        System.out.println("Stat: " + stat);                    }                },                "The Context"        );                zk.close();    }}

七、判斷節點是否存在1. 使用同步API判斷節點是否存在
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.data.Stat;/** * 使用同步API判斷節點是否存在 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    }                }            }        });        connectedSignal.await();                Stat stat = zk.exists("/zk-huey", false);        if (stat == null) {            zk.create("/zk-huey", "hello".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);        } else {            System.out.println("Stat: " + stat);        }                zk.close();    }}
2. 使用異步API判斷節點是否存在
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.AsyncCallback;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.Watcher.Event.EventType;import org.apache.zookeeper.Watcher.Event.KeeperState;import org.apache.zookeeper.data.Stat;/** * 使用異步API判斷節點是否存在 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                final CountDownLatch connectedSignal = new CountDownLatch(1);        final ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                        @Override            public void process(WatchedEvent event) {                if (event.getState() == KeeperState.SyncConnected) {                    if (event.getType() == EventType.None                            && event.getPath() == null) {                        connectedSignal.countDown();                    }                }            }        });        connectedSignal.await();                zk.exists(                "/zk-huey",                 false,                new AsyncCallback.StatCallback() {                    @Override                    public void processResult(int rc, String path, Object ctx, Stat stat) {                        System.out.println("ResultCode: " + rc);                        System.out.println("ZNode: " + path);                        System.out.println("Context: " + ctx);                        System.out.println("Stat: " + stat);                    }                },                "The Context"        );                zk.close();    }}

八、權限控制
package com.huey.dream.demo;import java.util.concurrent.CountDownLatch;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.ZooDefs.Ids;/** * ZooKeeper權限控制 * @author  huey * @version 1.0  * @created 2015-3-1 */public class ZKDemo {        public static void main(String[] args) throws Exception {                /**         * 使用含有權限信息的zookeeper會話創建數據節點         */        final CountDownLatch connectedSignal = new CountDownLatch(1);        ZooKeeper zk = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {            @Override            public void process(WatchedEvent event) {                connectedSignal.countDown();            }        });        connectedSignal.await();        zk.addAuthInfo("digest", "huey:123".getBytes());        zk.create("/zk-huey", "hello".getBytes(), Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);        zk.close();                /**         * 使用無權限信息的zookeeper會話訪問含有權限信息的數據節點         */        try {            final CountDownLatch signal = new CountDownLatch(1);            ZooKeeper zk1 = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                @Override                public void process(WatchedEvent event) {                    signal.countDown();                }            });            signal.await();            zk1.getData("/zk-huey", false, null);            System.out.println("NodeData: " + new String(zk1.getData("/zk-huey", false, null)));            zk1.close();        } catch (Exception e) {            System.out.println("Failed to delete Znode: " + e.getMessage());        }                /**         * 使用錯誤權限信息的zookeeper會話訪問含有權限信息的數據節點         */        try {            final CountDownLatch signal = new CountDownLatch(1);            ZooKeeper zk2 = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                @Override                public void process(WatchedEvent event) {                    signal.countDown();                }            });            signal.await();            zk2.addAuthInfo("digest", "huey:abc".getBytes());            System.out.println("NodeData: " + new String(zk2.getData("/zk-huey", false, null)));            zk2.close();        } catch (Exception e) {            System.out.println("Failed to delete Znode: " + e.getMessage());        }                /**         * 使用正確權限信息的zookeeper會話訪問含有權限信息的數據節點         */        try {            final CountDownLatch signal = new CountDownLatch(1);            ZooKeeper zk3 = new ZooKeeper("192.168.1.109:2182", 5000, new Watcher() {                @Override                public void process(WatchedEvent event) {                    signal.countDown();                }            });            signal.await();            zk3.addAuthInfo("digest", "huey:123".getBytes());            System.out.println("NodeData: " + new String(zk3.getData("/zk-huey", false, null)));            zk3.close();        } catch (Exception e) {            System.out.println("Failed to delete Znode: " + e.getMessage());        }    }}

結果輸出:

Failed to delete Znode: KeeperErrorCode = NoAuth for /zk-hueyFailed to delete Znode: KeeperErrorCode = NoAuth for /zk-hueyNodeData: hello


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳平市| 容城县| 鞍山市| 阜城县| 察隅县| 壶关县| 赤峰市| 宜君县| 盐源县| 仁怀市| 抚松县| 绵竹市| 乐安县| 曲阳县| 阳信县| 门头沟区| 靖边县| 开平市| 东光县| 宿松县| 庆阳市| 丹寨县| 安达市| 广丰县| 射阳县| 通化市| 本溪| 台中市| 敖汉旗| 神木县| 郎溪县| 惠安县| 上林县| 阜宁县| 郸城县| 内丘县| 会宁县| 滦平县| 洱源县| 峡江县| 历史|