您的位置:首页 > 其它

Zookeeper实例原生API--使用错误权限信息的ZooKeeper会话访问含权限信息的数据节点

2017-06-11 22:31 796 查看
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
/**
*
* @ClassName: AuthSample_Get2
* @Description: TODO(使用错误权限信息的ZooKeeper会话访问含权限信息的数据节点)
* @author RongShu
* @date 2017年6月11日 下午8:42:39
*
*/
public class AuthSample_Get2 {
final static String PATH = "/zk-book-auth_test";
public static void main(String[] args) throws Exception {
ZooKeeper zookeeper1 = new ZooKeeper("localhost:2181",5000,null);
zookeeper1.addAuthInfo("digest", "foo:true".getBytes());
zookeeper1.create( PATH, "init".getBytes(), Ids.CREATOR_ALL_ACL, CreateMode.EPHEMERAL );
ZooKeeper zookeeper2 = new ZooKeeper("localhost:2181",50000,null);
zookeeper2.addAuthInfo("digest", "foo:true".getBytes());
System.out.println(zookeeper2.getData( PATH, false, null ));
ZooKeeper zookeeper3 = new ZooKeeper("localhost:2181",50000,null);
zookeeper3.addAuthInfo("digest", "foo:false".getBytes());
zookeeper3.getData( PATH, false, null );
}
}

输出
[B@7e0b37bc
Exception in thread "main" org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /zk-book-auth_test
at org.apache.zookeeper.KeeperException.create(KeeperException.java:113)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1212)
at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1241)
at book.chapter05.$5_3_7.AuthSample_Get2.main(AuthSample_Get2.java:24)


注意:

第一次我们使用能正确的权限信息,成功的获取到了数据节点的数据内容,第二次接口调用中,由于使用了错误的权限信息,发生异常,可见Zookeeper的权限控制也能够为我们识别错误的权限信息。

参考

1.《从Paxos到Zookeeper:分布式一致性原理与实践》

2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Zookeeper