环境:

VMware + CentOS 7
Zookeeper3.5.5

本地IDEA代码:

package com.veeja;

import org.apache.zookeeper.*;

import java.io.IOException;

/**
 * @Author veeja
 * 2021/2/4 9:49
 */
public class SendContent {
    public static void main(String[] args) {

        try {
            /*
             * 创建Zookeeper对象:
             * 参数1 :Zookeeper ip+端口号
             * 参数2 :访问超时设置
             * 参数3 :通过观察者模式发出访问回复:当连接成功后,编写成功信息
             */
            ZooKeeper zookeeper = new ZooKeeper("192.168.152.128:2181", 100 * 1000, new Watcher() {
                @Override
                public void process(WatchedEvent watchedEvent) {
                    System.out.println("获取连接");
                }
            });

            /**
             * 发送内容 向Zookeeper服务器中
             *      参数1:发送的文件
             *      参数2:发送的内容
             *      参数3:权限
             *      参数4:内容的模式
             */
            String content = zookeeper.create(
                    "/demo/rmi-address",
                    "rmi:localhost:8080/demoService".getBytes(),
                    ZooDefs.Ids.OPEN_ACL_UNSAFE,
                    CreateMode.PERSISTENT_SEQUENTIAL);

            System.out.println("content = " + content);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (KeeperException e) {
            e.printStackTrace();
        }
    }
}

报错信息:

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /demo/rmi-address
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:102)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:54)
	at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1538)
	at com.veeja.SendContent.main(SendContent.java:35)

解决方案:

关闭防火墙。

# 查看防火墙的状态:
baisystemctl status firewalld.service

# 关闭防火墙
systemctl stop firewalld.service

# 永久关闭防火墙
systemctl disable firewalld.service
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐