** IDEA创建Zookeeper客户端**
解决单机Zookeeper的错误,不是Zookeeper集群问题,但是集群问题也可以参考 。网上看到的教程基本上都是服务器端口号,防火墙的问题,但是个人测试之后发现没有解决问题,于是自己尝试一下方法,最后解决了问题,希望能够帮助到大家。
错误描述:
无法连接Zookeeper服务器,错误提示如下:
2020-11-11 22:29:11,260 WARN [org.apache.zookeeper.ClientCnxn] - Session 0x0 for server /127.0.0.1:2181, unexpected error, closing socket connection and attempting reconnect
java.lang.NoSuchMethodError: org.slf4j.helpers.Util.safeGetSystemProperty(Ljava/lang/String;)Ljava/lang/String;
at org.slf4j.impl.VersionUtil.getJavaMajorVersion(VersionUtil.java:11)
at org.slf4j.impl.Log4jMDCAdapter.<clinit>(Log4jMDCAdapter.java:37)
at org.slf4j.impl.StaticMDCBinder.getMDCA(StaticMDCBinder.java:59)
at org.slf4j.MDC.<clinit>(MDC.java:73)
at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1080)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1139)
Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /TestNode
at org.apache.zookeeper.KeeperException.create(KeeperException.java:102)
at org.apache.zookeeper.KeeperException.create(KeeperException.java:54)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:2021)
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:2049)
at com.ahu.zookeeper.HelloZK.main(HelloZK.java:71)
解决方法:
1.首先检测Zookeeper服务器的Zookeeper服务是否开启,防火墙是否关闭以及端口是否开放。
Zookeeper服务开启:进入到Zookeeper的bin目录下,执行./zkServer.sh start
执行客户端./zkCli.sh
防火墙关闭,不同的linux系统关闭方式不同,具体请自行百度。
端口使用telnet ip 端口号进行测试。
2.如果上述检查均无问题,在进行查看自己创建的项目是否是maven工程(IDEA创建)。如果是进入pom.xml文件查看dependency。我的依赖jar包如下:(因为我的Zookeeper是3.5.8,所以导入的Zookeeper版本号也是3.5.8。这个版本号请大家自行查看自己的版本号)
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.8</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>log4j.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
而IDEA中的External Librariesde jar包如下
这几个jar包大家可以从Zookeeper安装目录下的lib文件夹中拷贝。具体操作不在赘述。
总结:
上述的maven依赖解决之后,在运行项目就可以了。然后去Zookeeper中检测创建的节点等信息。
以上是个人自行探索出来的,希望可以帮助到大家。