java 连接 zookeeper 服务器

maven导包方式,无架构;

工程目录

image-20201017202602186

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

image-20201017202733183

pom.xml

https://mvnrepository.com/ 去这里找 zookeeper 的包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xian</groupId>
    <artifactId>zookeeper</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.5.7</version>
        </dependency>
    </dependencies>

</project>

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<String> 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<String> 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=<NA>
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
posted @ 2020-10-17 21:49  xian19900116  阅读(537)  评论(0)    收藏  举报
顶部 底部