maven导包方式,无架构;
工程目录

将 zookeeper-3.6.2-bin.tar.gz 中解压缩,复制 conf/logfj.properties 文件到工程 resource 文件夹里,用来打印

pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.xian
zookeeper
1.0-SNAPSHOT
org.apache.zookeeper
zookeeper
3.5.7
MyWatcher.java
package com.xian;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import java.nio.file.Watchable;
/**
* Author: sxg
* Date: 2020-10-17 18:26
* Description: 描述
*/
public class MyWatcher implements Watcher {
@Override
public void process(WatchedEvent watchedEvent) {
System.out.println("MyWatcher.process==============" + watchedEvent);
}
}
DataWatcher.java
package com.xian;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
/**
* Author: sxg
* Date: 2020-10-17 19:55
* Description: 描述
*/
public class DataWatcher implements Watcher {
@Override
public void process(WatchedEvent watchedEvent) {
System.out.println("DataWatcher.process==============" + watchedEvent);
}
}
HelloZookeeper.java
package com.xian;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
import java.io.IOException;
import java.util.List;
/**
* Author: sxg
* Date: 2020-10-17 18:23
* Description: 描述
*/
public class HelloZookeeper {
public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
String server_host_port = "localhost:2181"; // 用 localhost可以连接
//String server_host_port = "127.0.0.1:2181"; // 用本机 ip 也可以连接
//String server_host_port = "192.168.1.100:2181"; // 这里连虚拟机的 ip 就连不上
int sessionTimeout = 3000;
MyWatcher myWatcher = new MyWatcher();
ZooKeeper zkClient = new ZooKeeper(server_host_port, sessionTimeout, myWatcher);
// 获取客户端的状态
//Thread.sleep(4000);
//System.out.println(zkClient.getState()); //CONNECTING 睡眠 4秒后,这里的值 也不变
// 获取节点的内容,即它的子节点
//List children = zkClient.getChildren("/", true); // 默认使用Zookeeper() 构造器中的 watch
//System.out.println("节点的内容:" + children); // 你好
// 创建节点
//zkClient.create("/hello", "你好".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// 获取节点的值
//byte[] data = zkClient.getData("/hello", true, null); // 这里是不能用根节点 /
//System.out.println("节点的值:" + new String(data)); // [yyy, hello, zookeeper]
// 获取节点的状态
//Stat stat = new Stat();
//byte[] data1 = zkClient.getData("/hello", true, stat);
//System.out.println("节点的状态值:"+stat); // 24,24,1602935648628,1602935648628,0,0,0,0,6,0,24
// 设置单独的监听器,获取节点的值和状态
//Stat stat2 = new Stat();
//byte[] data2 = zkClient.getData("/hello", new DataWatcher(), stat2); // 这里使用的还是Zookeeper() 构造器中的 watch
//System.out.println("ctime:" + stat2.getCtime()); // 1602935648628
//System.out.println("当前节点的变化号:" + stat2.getVersion()); // 0
//System.out.println("data length:" + stat2.getDataLength()); // 6
// 修改节点的数据
//Stat stat = new Stat();
//byte[] data = zkClient.getData("/hello", null, stat);
//zkClient.setData("/hello", "aaa".getBytes(), stat.getVersion());
//byte[] data1 = zkClient.getData("/hello", null, null);
//System.out.println("/hello的值:"+new String(data1)); // aaa
//zkClient.setData("/hello", "bbb".getBytes(), -1); // -1表示不检测版本
//byte[] data1 = zkClient.getData("/hello", null, null);
//System.out.println("/hello的值:"+new String(data1)); // bbb
// 删除节点
//zkClient.delete("/hello", -1);
//List children = zkClient.getChildren("/", true);
//System.out.println("根节点的内容:" + children); // [yyy, zookeeper]
// 判断节点是否存在
Stat stat = zkClient.exists("/hello", false);
System.out.println("是否存在节点 /hello:" + stat); // null // null表示不存在
Stat stat1 = zkClient.exists("/yyy", false);
System.out.println("是否存在节点 /yyy:" + stat1); // 18,18,1602935291756,1602935291756,0,0,0,0,3,0,18 // 返回状态就表示节点存在
zkClient.close(); // 最后需要关闭客户端;
}
}
打印
"C:\Program Files\Java\jdk1.8.0_51\bin\java.exe" -javaagent:D:\ideaIU-2019.1.2.win\lib\idea_rt.jar=45332:D:\ideaIU-2019.1.2.win\bin -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_51\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\rt.jar;G:\workspace_idea\exercise\zookeeper\target\classes;G:\repository_maven\org\apache\zookeeper\zookeeper\3.5.7\zookeeper-3.5.7.jar;G:\repository_maven\org\apache\zookeeper\zookeeper-jute\3.5.7\zookeeper-jute-3.5.7.jar;G:\repository_maven\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;G:\repository_maven\io\netty\netty-handler\4.1.45.Final\netty-handler-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-common\4.1.45.Final\netty-common-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-buffer\4.1.45.Final\netty-buffer-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport\4.1.45.Final\netty-transport-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-resolver\4.1.45.Final\netty-resolver-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-codec\4.1.45.Final\netty-codec-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-epoll\4.1.45.Final\netty-transport-native-epoll-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-unix-common\4.1.45.Final\netty-transport-native-unix-common-4.1.45.Final.jar;G:\repository_maven\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;G:\repository_maven\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;G:\repository_maven\log4j\log4j\1.2.17\log4j-1.2.17.jar" com.xian.HelloZookeeper
2020-10-17 20:30:22,910 [myid:] - INFO [main:Environment@109] - Client environment:zookeeper.version=3.5.7-f0fdd52973d373ffd9c86b81d99842dc2c7f660e, built on 02/10/2020 11:30 GMT
2020-10-17 20:30:22,913 [myid:] - INFO [main:Environment@109] - Client environment:host.name=LAPTOP-G9IGVP9O.mshome.net
2020-10-17 20:30:22,913 [myid:] - INFO [main:Environment@109] - Client environment:java.version=1.8.0_51
2020-10-17 20:30:22,913 [myid:] - INFO [main:Environment@109] - Client environment:java.vendor=Oracle Corporation
2020-10-17 20:30:22,914 [myid:] - INFO [main:Environment@109] - Client environment:java.home=C:\Program Files\Java\jdk1.8.0_51\jre
2020-10-17 20:30:22,914 [myid:] - INFO [main:Environment@109] - Client environment:java.class.path=C:\Program Files\Java\jdk1.8.0_51\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\rt.jar;G:\workspace_idea\exercise\zookeeper\target\classes;G:\repository_maven\org\apache\zookeeper\zookeeper\3.5.7\zookeeper-3.5.7.jar;G:\repository_maven\org\apache\zookeeper\zookeeper-jute\3.5.7\zookeeper-jute-3.5.7.jar;G:\repository_maven\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;G:\repository_maven\io\netty\netty-handler\4.1.45.Final\netty-handler-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-common\4.1.45.Final\netty-common-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-buffer\4.1.45.Final\netty-buffer-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport\4.1.45.Final\netty-transport-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-resolver\4.1.45.Final\netty-resolver-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-codec\4.1.45.Final\netty-codec-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-epoll\4.1.45.Final\netty-transport-native-epoll-4.1.45.Final.jar;G:\repository_maven\io\netty\netty-transport-native-unix-common\4.1.45.Final\netty-transport-native-unix-common-4.1.45.Final.jar;G:\repository_maven\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;G:\repository_maven\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;G:\repository_maven\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\ideaIU-2019.1.2.win\lib\idea_rt.jar
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:java.library.path=C:\Program Files\Java\jdk1.8.0_51\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jdk1.8.0_51\bin;D:\scala-2.11.7\bin;D:\maven\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Java\jdk1.8.0_51\jre\bin;E:\sdk_androidstudio\platform-tools;E:\AndroidStudioConfigFolder;E:\AndroidStudioConfigFolder\.gradle;E:\gradle\bin;C:\ProgramData\chocolatey\bin;E:\VisualSVN Server\bin;E:\VisualSVN Server\bin;E:\nodejs\;E:\Python\Python38;E:\Python\Python38\Scripts;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\admin\AppData\Local\Programs\Python\Launcher\;C:\Users\admin\AppData\Local\Microsoft\WindowsApps;D:\PyCharm Community Edition 2020.1.2\bin;E:\Fiddler;C:\Users\admin\AppData\Roaming\npm;;.
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:java.io.tmpdir=C:\Users\admin\AppData\Local\Temp\
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:java.compiler=
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:os.name=Windows 8.1
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:os.arch=amd64
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:os.version=6.3
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:user.name=admin
2020-10-17 20:30:22,915 [myid:] - INFO [main:Environment@109] - Client environment:user.home=C:\Users\admin
2020-10-17 20:30:22,916 [myid:] - INFO [main:Environment@109] - Client environment:user.dir=G:\workspace_idea\exercise
2020-10-17 20:30:22,916 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.free=233MB
2020-10-17 20:30:22,917 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.max=3614MB
2020-10-17 20:30:22,917 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.total=245MB
2020-10-17 20:30:22,921 [myid:] - INFO [main:ZooKeeper@868] - Initiating client connection, connectString=localhost:2181 sessionTimeout=3000 watcher=com.xian.MyWatcher@7a4f0f29
2020-10-17 20:30:22,928 [myid:] - INFO [main:X509Util@79] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2020-10-17 20:30:23,014 [myid:] - INFO [main:ClientCnxnSocket@237] - jute.maxbuffer value is 4194304 Bytes
2020-10-17 20:30:23,025 [myid:] - INFO [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=
2020-10-17 20:30:23,040 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2020-10-17 20:30:23,042 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /127.0.0.1:45337, server: localhost/127.0.0.1:2181
2020-10-17 20:30:23,103 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x100198cb7240018, negotiated timeout = 4000
MyWatcher.process==============WatchedEvent state:SyncConnected type:None path:null
是否存在节点 /hello:null
是否存在节点 /yyy:18,18,1602935291756,1602935291756,0,0,0,0,3,0,18
MyWatcher.process==============WatchedEvent state:Closed type:None path:null
2020-10-17 20:30:23,238 [myid:] - INFO [main:ZooKeeper@1422] - Session: 0x100198cb7240018 closed
2020-10-17 20:30:23,238 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100198cb7240018
Process finished with exit code 0
本文档通过Java实现连接Zookeeper服务器,演示了如何创建Zookeeper客户端、设置监听器、检查节点存在性等基本操作。示例代码展示了如何使用Zookeeper的API进行交互,并附带了运行日志。
2846

被折叠的 条评论
为什么被折叠?



