zookeeper连接客户端操作数据时报错Socket is not connected

文章目录


一、报错信息

shell 复制代码
DEBUG org.apache.zookeeper.ClientCnxnSocketNIO - Ignoring exception during shutdown input
java.net.SocketException: Socket is not connected
	at sun.nio.ch.Net.translateToSocketException(Net.java:123)
	at sun.nio.ch.Net.translateException(Net.java:157)
	at sun.nio.ch.Net.translateException(Net.java:163)
	at sun.nio.ch.SocketAdaptor.shutdownInput(SocketAdaptor.java:401)
	at org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:200)

二、问题描述

在使用java连接zookeeper客户端时,发现连接是成功的,但是操作数据时报错

连接zookeeper客户端代码

java 复制代码
public class Test {
     //此处是机器ip:端口号。多个ip用,隔开
    private static String connectString = "机器ip:2181";
    int sessionTimeout = 5000;
    @org.junit.Test
    public void test() throws IOException {

        ZooKeeper zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {

            /**
             * 监听事件
             * @param event
             */
            @Override
            public void process(WatchedEvent event) {
                System.out.println("监听事件"+event);

            }
        });
        System.out.println(zooKeeper);
    }
}

打印信息------连接成功

bash 复制代码
State:CONNECTING sessionid:0x0 local:null remoteserver:null lastZxid:0 xid:1 sent:0 recv:0 queuedpkts:0 pendingresp:0 queuedevents:0

操作zookeeper代码

java 复制代码
public class Test1 {

    String connectString = "192.168.75.130:2181,192.168.75.131:2181,192.168.75.132:2181";
    int sessionTimeout = 5000;
    ZooKeeper zooKeeper = null;

    @Before
    public void test() throws IOException {
        zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
            /**
             * 监听事件
             * @param event
             */
            @Override
            public void process(WatchedEvent event) {
                System.out.println("监听事件" + event);
            }
        });
//        System.out.println(zooKeeper);
    }
    /**
     * 创建节点
     */
    @Test
    public void createNode() throws Exception {
        String path = zooKeeper.create("/apptest" // 节点路径
                , "HelloZookeeper".getBytes() // 节点的数据
                , ZooDefs.Ids.OPEN_ACL_UNSAFE // 权限
                , CreateMode.PERSISTENT // 节点类型
        );
        System.out.println(path);
    }
}

打印信息------报错

shell 复制代码
DEBUG org.apache.zookeeper.ClientCnxnSocketNIO - Ignoring exception during shutdown input
java.net.SocketException: Socket is not connected
	at sun.nio.ch.Net.translateToSocketException(Net.java:123)
	at sun.nio.ch.Net.translateException(Net.java:157)
	at sun.nio.ch.Net.translateException(Net.java:163)
	at sun.nio.ch.SocketAdaptor.shutdownInput(SocketAdaptor.java:401)
	at org.apache.zookeeper.ClientCnxnSocketNIO.cleanup(ClientCnxnSocketNIO.java:200)

三、原因分析:

服务器zookeeper版本和pom依赖版本不一致导致的


四、解决方案:

将pom依赖版本服务器zookeeper版本

服务器版本查看3.8.2版本:

bash 复制代码
[root@zookeeper01 lib]# pwd
/opt/zookeeper/lib
[root@zookeeper01 lib]# 
[root@zookeeper01 lib]# ll -r
总用量 12192
-rw-r--r--. 1 root root   23744 8月  31 00:20 zookeeper-prometheus-metrics-3.8.2.jar
-rw-r--r--. 1 root root  256137 8月  31 00:20 zookeeper-jute-3.8.2.jar
-rw-r--r--. 1 root root 1328066 8月  31 00:20 zookeeper-3.8.2.jar
-rw-r--r--. 1 root root   11358 8月  31 00:20 snappy-java-1.1.10.1.jar_LICENSE.txt

更改pom依赖版本为3.8.2

xml 复制代码
    <!--zookeeper依赖-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
相关推荐
倔强的小石头_1 小时前
【C语言指南】函数指针深度解析
java·c语言·算法
Jay Kay2 小时前
TensorFlow内核剖析:分布式TensorFlow架构解析与实战指南
分布式·架构·tensorflow
亿牛云爬虫专家4 小时前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
kangkang-5 小时前
PC端基于SpringBoot架构控制无人机(三):系统架构设计
java·架构·无人机
界面开发小八哥6 小时前
「Java EE开发指南」如何用MyEclipse创建一个WEB项目?(三)
java·ide·java-ee·myeclipse
idolyXyz7 小时前
[java: Cleaner]-一文述之
java
一碗谦谦粉7 小时前
Maven 依赖调解的两大原则
java·maven
netyeaxi8 小时前
Java:使用spring-boot + mybatis如何打印SQL日志?
java·spring·mybatis
收破烂的小熊猫~8 小时前
《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
java·开发语言·设计模式
猴哥源码8 小时前
基于Java+SpringBoot的动物领养平台
java·spring boot