如果是使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 zkclient-0.1.jar即可。

zookeeper-3.3.4.jar 为官方提供的javaApi,zkClient-0.1jar为在源生api基础上进行扩展的开源JAVA客户端

创建会话方法:客户端可以通过创建一个zookeeper实例来链接zookeeper服务器。

Zookeeper(Arguments)方法(一共4个构造方法,根据参数不同)

参数说明如下:

connectString:连接服务器列表,已“,”分割。

sessionTimeOut:心跳检测时间周期(毫秒)

watcher:事件处理通知器。

canBereadOnly:标识当前会话是否支持只读。

sessionId和sessionPasswd:提供连接zookeeper的sessionId和密码,通过这两个确定唯一一台客户端,目的是可以提供重复会话

注意:zookeeper客户端和服务器端会话的建立是一个异步的过程,也就是说在程序中,我们程序方法在处理完客户端初始化后,立即返回(程序往下执行代码,这样,大多数情况下我们并没有真正构建好一个可用会话,在会话的声明周期处于"CONNECTING"时才算真正建立完毕,所以我们需要使用多线程中的一个工具类)

要导入的maven依赖

       <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

创建一个测试类,我们在test目录下创建ZkCreateDemo.java

import org.apache.zookeeper.*;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.websocket.Session;
import java.io.IOException; /*
java操作zookeeper对象 */
public class ZkCreateNodeDemo { private static final Logger logger = LoggerFactory.getLogger(ZkCreateNodeDemo.class);
private Session session; String url = "192.168.25.8:2181";
ZooKeeper zk; //初始化
@Before
public void test01() throws IOException {
zk = new ZooKeeper(url, 3000, new Watcher() {
@Override
public void process(WatchedEvent event) {
String path = event.getPath(); //负责监听的路径
Event.KeeperState state = event.getState(); //负责监听的状态
Event.EventType type = event.getType(); //负责监听类型
logger.info("路径为="+path);
logger.info("状态为="+state);
logger.info("监听类型="+type);
}
});
}
//创建节点
@Test
public void createNode() throws Exception{
try {
zk.create("/a1", "yangxinlei".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.create("/b1", "yangxinlei12".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.create("/c1", "yangxinlei123".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}catch (Exception ex){
logger.info("zookeeper创建失败!");
ex.printStackTrace();
}
} //删除节点
@Test
public void deleteNode() throws Exception{
zk.delete("/a1",-1);
} //修改节点
@Test
public void updateNode() throws Exception{
zk.setData("/b1","testUpdate".getBytes(),-1);
} //查询节点
@Test
public void getNode() throws Exception{
byte[] data = zk.getData("/c1", true, null);
System.out.println(new String(data));
}

  

进行单元测试 ,如果不成功,查看一下linux下的防火墙是否关闭,确保自己的linux环境下的防火墙已经关闭,关闭防火墙的命令 service iptables stop

创建节点成功!可以通过两种方式进行查看

(1) 通过ZooInspector,下载地址为

https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

可以看到节点已经被创建出来

或者在linux下开启客户端 只需要输入命令./zkCli.sh 开启客户端,然后再输入ls /进行查看即可

Zookeeper--java操作zookeeper的更多相关文章

  1. Java操作zookeeper

    Java操作zookeeper总共有三种方式: 1.原生的Java API 2.zkclient 3.curator 第一种实现代码: pom.xml <dependency> <g ...

  2. java 操作zookeeper

    java 操作zookeeper(一) 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper ...

  3. zookeeper(三):java操作zookeeper

    引入jar包 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 ...

  4. zookeeper - java操作

    ZKUtils.java package test; import java.io.IOException; import java.util.concurrent.CountDownLatch; i ...

  5. Java 使用ZkClient操作Zookeeper

    目录 ZkClient介绍 导入jar包依赖 简单使用样例 ZkClient介绍 因为Zookeeper API比较复杂,使用并不方便,所以出现了ZkClient,ZkClient对Zookeeper ...

  6. Java代码操作zookeeper

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  7. Zookeeper入门(七)之Java连接Zookeeper

    Java操作Zookeeper很简单,但是前提要把包导对. 关于Zookeeper的Linux环境搭建可以参考我的这篇博客:Linux环境下Zookeeper安装 下面进入正题: 一.导入依赖 < ...

  8. 使用Curator操作ZooKeeper

    Curator是Netflix公司开源的一个ZooKeeper client library,用于简化ZooKeeper客户端编程.它包含如下模块: Framework:Framework是ZooKe ...

  9. ZooKeeper Java Example

    A Simple Watch Client Requirements Program Design The Executor Class The DataMonitor Class Complete ...

随机推荐

  1. nDPI的安装与测试

    目录 简介 nDPI的环境依赖项安装 nDPI 安装 nDPI测试 官方Quick Start nDPI 的 github 简介 nDPI是一个开源的基于 OpenDPI 的 DPI 库,目前由 nt ...

  2. Linux 防止rm -rf 误删Shell脚本

    #!/bin/bash #:set ff=unix #:set nobomb #-*- coding:utf-8 -*- ####################################### ...

  3. Mysql查询正在运行的事务

    查询 正在执行的事务:SELECT * FROM information_schema.INNODB_TRX 根据这个事务的线程ID(trx_mysql_thread_id): 可以使用mysql命令 ...

  4. 求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python

    一行代码算出1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N!   N阶阶乘求和 时间复杂度为O(n) 空间复杂度为O(1) 对于任意正整数N  求1!-N!一行算出和给定求1 ...

  5. 三、Shiro授权开发

    Shiro 支持三种方式的授权: I. 编程式:通过写if/else 授权代码块完成: Subject subject =SecurityUtils.getSubject(); if(subject. ...

  6. iOS背景音乐不自动播放

    iOS 内置浏览器safari不允许自动播放音乐.我们需要通过WeixinJSBridgeReady()函数实现自动触发 document.addEventListener("WeixinJ ...

  7. navicat mysql 存储过程

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. 一.基本数据类型:略 二.变量: 自定义变量:DECLARE   a INT ; SET a=100; 可用以 ...

  8. 关于osi的7层与tcp的4层网络协议的理解

    osi 七层模型 应用层 提供接口 表示层 机器语言的二进制转换 对话层 决定是否传输 传输层 确定可不可靠 排差错 控流 网络层 提供逻辑地址 选路 数据链路层 mac 错误检测 物理层 设备间的比 ...

  9. jquery ajax 滚动加载数据

    jquery php 滚动加载数据(文件包 rollingpage) 效果如下: 页面加载时候($function(){ 自动加载第一页数据 }) 设置: var winH = $(window).h ...

  10. 使用aapt查看apk包名和启动的activity

    执行命令: aapt dump badging F:\知乎.apk