zookeeper遍历和设置acl

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;




import org.apache.hadoop.hbase.util.Bytes;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Id;
import org.apache.zookeeper.data.Stat;












public class ZKGetChild_setACL {




     // 会话超时时间,设置为与系统默认时间一致




     private static final int SESSION_TIMEOUT=30000;




    




     // 创建 ZooKeeper 实例




     ZooKeeper zk;




    




     // 创建 Watcher 实例




     Watcher wh=new Watcher(){




            public void process(org.apache.zookeeper.WatchedEvent event)




            {




                    System.out.println(event.toString());




            }




     };




    




     // 初始化 ZooKeeper 实例




     private void createZKInstance() throws IOException




     {             




            zk=new ZooKeeper("10.xxx.xxx.24:2181",ZKGetChild_setACL.SESSION_TIMEOUT,this.wh);








     }




    




     private void getChild(String path) throws IOException,InterruptedException,KeeperException




     {
     
    Id id = new Id("ip", "10.xxx.xxx.23/27");  
         ACL acl = new ACL(ZooDefs.Perms.ALL, id);  
         List<ACL> acls = new ArrayList<ACL>();  
         acls.add(acl);  
         zk.setACL(path, acls, -1);
         System.out.println("set ACL succ:"+path);




            List<String> child_list=zk.getChildren(path, false);
           for(String child:child_list){
          System.out.println("child:"+child);
          if(path.equals("/")){
          child=path+""+child;
          System.out.println("A:"+child);
          }else{
          child=path+"/"+child;
          System.out.println("B:"+child);
          }
          
          System.out.println(new String(zk.getData(child,false,null)));
          
          //child=path+""+child;
          Stat stat = zk.exists(child, false);
          List<ACL> child_acl=zk.getACL(child, stat);
          for (ACL a : child_acl) {
        //System.out.println(a.getPerms());
        System.out.println(a);
        
        System.out.println("**********");
          }
          
          getChild(child);
           }
     }
     
     
     private void confAcl(String path) throws KeeperException, InterruptedException 




     {
     
    Id id = new Id("world", "anyone"); //放开权限
    Id id2 = new Id("ip", "10.xxx.xxx.24"); //限定ip
    
         ACL acl = new ACL(ZooDefs.Perms.ALL, id); 
         ACL acl2 = new ACL(ZooDefs.Perms.ALL, id2); 
         
         
         List<ACL> acls = new ArrayList<ACL>();  
         acls.add(acl);  
         acls.add(acl2);
        
         zk.setACL(path, acls, -1);
         System.out.println("set ACL succ:"+path);




        
     }




     private void ZKClose() throws  InterruptedException
     {
            zk.close();
     }




     public static void main(String[] args) throws IOException,InterruptedException,KeeperException {




            ZKGetChild_setACL dm=new ZKGetChild_setACL();




            dm.createZKInstance( );




            dm.confAcl("/hbase/master");




            dm.ZKClose();




     }




}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值