3.6.4 多节点权限操作示例
根据3.3节权限机制介绍,下面是一个操作节点的演示demo,请留意各自节点的权限范围,程序说明如下:
1)ParkServerDemo:启动parkserver(它的IP端口已经在配置文件的PARK部分的SERVERS指定。
2)ParkSet:往parkserver里创建了d1n1、d2n2、d3n3、d4n4共4个节点,分别对应只读、读写,所有,所有+强行删除权限。
3)ParkGet:依次对d1n1、d2n2、d3n3、d4n4进行读、写、删除、删除domain操作,观察结果输出,如果没有权限操作,parkserver会输出信息,并且操作返回的结果对象为空。
启动命令和顺序:
- Javac –classpath fourinone.jar; *.java
- Java –classpath fourinone.jar; ParkServerDemo
- Java –classpath fourinone.jar; ParkSet
- Java –classpath fourinone.jar; ParkGet
下面是demo源码:
- // ParkServerDemo
- import com.fourinone.BeanContext;
- public class ParkServerDemo{
- public static void main(String[] args){
- BeanContext.startPark();
- }
- }
- // ParkSet
- import com.fourinone.BeanContext;
- import com.fourinone.ParkLocal;
- import com.fourinone.ObjectBean;
- import com.fourinone.AuthPolicy;
- public class ParkSet{
- public static void main(String[] args){
- //获取parkserver用户接口
- ParkLocal pl = BeanContext.getPark();
- //在domain d1下创建节点node n1,指定权限为只读
- ObjectBean d1n1 = pl.create("d1","n1","v1",AuthPolicy.OP_READ);
- if(d1n1!=null)
- System.out.println("d1n1 with AuthPolicy.OP_READ create success!");
- //在domain d2下创建节点node n2,指定权限为读写
- ObjectBean d2n2 = pl.create("d2","n2","v2",AuthPolicy.OP_READ_WRITE);
- if(d2n2!=null)
- System.out.println("d2n2 with AuthPolicy.OP_READ_WRITE create success!");
- //在domain d3下创建节点node n3,指定权限为所有
- ObjectBean d3n3 = pl.create("d3","n3","v3",AuthPolicy.OP_ALL);
- if(d3n3!=null)
- System.out.println("d3n3 with AuthPolicy.OP_ALL create success!");
- //在domain d4下创建节点node n4,指定权限为所有,并且创建完成强行设置为其他进程可删除
- ObjectBean d4n4 = pl.create("d4","n4","v4",AuthPolicy.OP_ALL);
- if(d4n4!=null)
- System.out.println("d4n4 with AuthPolicy.OP_ALL create success!");
- boolean r = pl.setDeletable("d4");
- if(r)
- System.out.println("set d4 deletable!");
- }
- }
- // ParkGet
- import com.fourinone.BeanContext;
- import com.fourinone.ParkLocal;
- import com.fourinone.ObjectBean;
- import java.util.List;
- public class ParkGet{
- public static void main(String[] args){
- //获取parkserver用户接口
- ParkLocal pl = BeanContext.getPark();
- //获取节点d1n1,节点权限为AuthPolicy.OP_READ
- ObjectBean d1n1 = pl.get("d1","n1");//获取节点
- System.out.println("get d1n1:"+(String)d1n1.toObject());
- d1n1 = pl.update("d1","n1","v1-update");//更新节点
- if(d1n1!=null)
- System.out.println("update node d1n1 success!");
- else
- System.out.println("update node d1n1 failure!");
- List<ObjectBean> d1 = pl.delete("d1");//删除domain
- if(d1!=null)
- System.out.println("delete domain d1 success!");
- else
- System.out.println("delete domain d1 failure!");
- d1n1 = pl.delete("d1","n1");//删除节点
- if(d1n1!=null)
- System.out.println("delete node d1n1 success!");
- else
- System.out.println("delete node d1n1 failure!");
- //获取节点d2n2,节点权限为AuthPolicy.OP_READ_WRITE
- ObjectBean d2n2 = pl.get("d2","n2");
- System.out.println("get d2n2:"+(String)d2n2.toObject());
- d2n2 = pl.update("d2","n2","v2-update");
- if(d2n2!=null)
- System.out.println("update node d2n2 success!");
- else
- System.out.println("update node d2n2 failure!");
- List<ObjectBean> d2 = pl.delete("d2");
- if(d2!=null)
- System.out.println("delete domain d2 success!");
- else
- System.out.println("delete domain d2 failure!");
- d2n2 = pl.delete("d2","n2");
- if(d2n2!=null)
- System.out.println("delete node d2n2 success!");
- else
- System.out.println("delete node d2n2 failure!");
- //获取节点d3n3, 节点权限为AuthPolicy.OP_ALL
- ObjectBean d3n3 = pl.get("d3","n3");
- System.out.println("get d3n3:"+(String)d3n3.toObject());
- d3n3 = pl.update("d3","n3","v3-update");
- if(d3n3!=null)
- System.out.println("update node d3n3 success!");
- else
- System.out.println("update node d3n3 failure!");
- List<ObjectBean> d3 = pl.delete("d3");
- if(d3!=null)
- System.out.println("delete domain d3 success!");
- else
- System.out.println("delete domain d3 failure!");
- d3n3 = pl.delete("d3","n3");
- if(d3n3!=null)
- System.out.println("delete node d3n3 success!");
- else
- System.out.println("delete node d3n3 failure!");
- //获取节点d4n4,节点权限为AuthPolicy.OP_ALL
- ObjectBean d4n4 = pl.get("d4","n4");
- System.out.println("get d4n4:"+(String)d4n4.toObject());
- d4n4 = pl.update("d4","n4","v4-update");
- if(d4n4!=null)
- System.out.println("update node d4n4 success!");
- else
- System.out.println("update node d4n4 failure!");
- //由于创建进程已经强行指定该domain可删除setDeletable(d4),因此这里可以删除掉
- List<ObjectBean> d4 = pl.delete("d4");
- if(d4!=null)
- System.out.println("delete domain d4 success!");
- else
- System.out.println("delete domain d4 failure!");
- d4n4 = pl.delete("d4","n4");//这里删除节点会失败,因为上面已经删除了该domian下所有节点
- if(d4n4!=null)
- System.out.println("delete node d4n4 success!");
- else
- System.out.println("delete node d4n4 failure!");
- }
- }