赞
踩
服务器端代码如下:
package com.lhc.clientmanager;
}
客户端代码如下:
package com.lhc.client;
import java.util.concurrent.CountDownLatch;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
/**
* znode1节点
* @author administrator
*
*/
public class Client1 {
// 用来阻止程序运行
private static CountDownLatch countDown = new CountDownLatch(1);
/* 创建连接相关信息 */
// 连接地址
static String connect = "master:2181,slave1:2181,slave2:2181";
// 连接超时时间
static int TIME_OUT = 2000;
// zk对象
static ZooKeeper zk;
static Watcher watcher = new Watcher() {
public void process(WatchedEvent event) {
System.out.println("接收到zookeeper服务端通知");
System.out.println("此时zk对象信息:" + zk);
try {
// 判断指定父节点是否存在
Stat s = zk.exists("/nodeManager", true);
if (null == s) {
System.out.println("管理客户端节点不存在,先创建一个……");
// 模拟创建节点1
// Ids.OPEN_ACL_UNSAFE即将所有权限授予每个人
// CreateMode.EPHEMERAL节点类型为短暂,即客户端会话结束,节点消失
zk.create("/nodeManager", "nodeManager".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
}
System.out.println("node1开始向服务器端注册");
String path = zk.create("/nodeManager/tempNode1", "node1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
System.out.println("node1向服务器端注册成功!");
} catch (Exception e) {
System.out.println("会话创建完成后创建临时节点时出现异常:" + e.getMessage());
}
}
};
public static void main(String[] args) throws Exception {
System.out.println("客户端1程序开始启动……");
zk = new ZooKeeper(connect, TIME_OUT, watcher);
System.out.println("zk对象创建完成!正在异步创建和zk服务器之间的连接:");
System.out.println("zk对象的信息:" + zk);
countDown.await();
}
}
模仿服务器端监听客户端连接状态,当客户端向管理节点注册时,触发监听,服务器收到监听信息,并告知该客户端已上线
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。