package com.zk.clientapi.one.sync;
import java.io.IOException;
import org.apache.zookeeper.CreateMode;
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.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
/**
* 同步创建节点
*
* @version 2016年6月24日上午8:48:30
* @author wuliu
*/
public class CreateNodeSyncAuth implements Watcher {
private static ZooKeeper zookeeper;
private static boolean somethingDone = false;
public static void main(String[] args) throws IOException, InterruptedException {
zookeeper = new ZooKeeper("127.0.0.1:2181",5000,new CreateNodeSyncAuth());
// System.out.println(zookeeper.getState());
Thread.sleep(Integer.MAX_VALUE);
}
private void createNodeWithAuth(){
try {
/**访问权限start1*/
// ACL aclIp = new ACL(Perms.READ,new Id("ip","127.0.0.1"));
// ACL aclDigest = new ACL(Perms.READ|Perms.WRITE,new Id("digest",DigestAuthenticationProvider.generateDigest("jike:123456")));
// ArrayList<ACL> acls = new ArrayList<ACL>();
// acls.add(aclDigest);
// acls.add(aclIp);
// String path = zookeeper.create("/node_1", "123456".getBytes(), acls, CreateMode.PERSISTENT);
/**访问权限end1*/
/** 访问权限start2*/
// zookeeper.addAuthInfo("digest", "jike:123456".getBytes());
// String path = zookeeper.create("/node_4", "123456".getBytes(), Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);
/** 访问权限end2*/
zookeeper.addAuthInfo("digest", "jike:123456".getBytes());
String path = zookeeper.create("/node_4", "123456".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("return path:"+path);
somethingDone = true;
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void process(WatchedEvent event) {
System.out.println("事件状态:" + event.getState() +",事件类型:" + event.getType() +",事件涉及路径:" + event.getPath());
if (event.getState() == KeeperState.SyncConnected){
if (!somethingDone && event.getType()==EventType.None && null==event.getPath()){
createNodeWithAuth();
}
}
}
}
import java.io.IOException;
import org.apache.zookeeper.CreateMode;
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.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
/**
* 同步创建节点
*
* @version 2016年6月24日上午8:48:30
* @author wuliu
*/
public class CreateNodeSyncAuth implements Watcher {
private static ZooKeeper zookeeper;
private static boolean somethingDone = false;
public static void main(String[] args) throws IOException, InterruptedException {
zookeeper = new ZooKeeper("127.0.0.1:2181",5000,new CreateNodeSyncAuth());
// System.out.println(zookeeper.getState());
Thread.sleep(Integer.MAX_VALUE);
}
private void createNodeWithAuth(){
try {
/**访问权限start1*/
// ACL aclIp = new ACL(Perms.READ,new Id("ip","127.0.0.1"));
// ACL aclDigest = new ACL(Perms.READ|Perms.WRITE,new Id("digest",DigestAuthenticationProvider.generateDigest("jike:123456")));
// ArrayList<ACL> acls = new ArrayList<ACL>();
// acls.add(aclDigest);
// acls.add(aclIp);
// String path = zookeeper.create("/node_1", "123456".getBytes(), acls, CreateMode.PERSISTENT);
/**访问权限end1*/
/** 访问权限start2*/
// zookeeper.addAuthInfo("digest", "jike:123456".getBytes());
// String path = zookeeper.create("/node_4", "123456".getBytes(), Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);
/** 访问权限end2*/
zookeeper.addAuthInfo("digest", "jike:123456".getBytes());
String path = zookeeper.create("/node_4", "123456".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("return path:"+path);
somethingDone = true;
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void process(WatchedEvent event) {
System.out.println("事件状态:" + event.getState() +",事件类型:" + event.getType() +",事件涉及路径:" + event.getPath());
if (event.getState() == KeeperState.SyncConnected){
if (!somethingDone && event.getType()==EventType.None && null==event.getPath()){
createNodeWithAuth();
}
}
}
}