- 一.问题描述:
- (1)代码如图所示:
- (2)使用IDEA连接zookeeper客户端,报KeeperException$ConnectionLossException异常
- 二·报错原因:
- (1)创建zookeeper对象时,设置的连接会话超时太短
- (2)zookeeper里面已经存在你将要创建的节点名称
- 三·解决办法:
- (1)对创建zookeeper对象时,设置的“sessionTimeOut=2000”进行延长,本人要“sessionTimeOut=200000”,才能执行成功,读者可以根据自己实际情况而定。
- (2)将zookeeper中那个同名节点删除掉,再去执行连接zookeeper的方法
- (3)若不想删除同名节点,则需要在create方法参数中,使用节点类型为“顺序节点”类型
- 四·测试结果:成功
public class zkClient {
//注意:逗号前后不能有空格
//连接的 “主机IP+端口号”,多台服务器之间使用逗号隔开
private String connectString = "192.168.120.128:2181,192.168.120.130:2181,192.168.120.131:2181";
//设置超时时长
private int sessionTimeout = 2000;
private ZooKeeper zooKeeper;
@Before
// @Test
public void init() throws IOException {
zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
}
});
}
@Test
public void create() throws InterruptedException, KeeperException, IOException {
// this.init();
String node = zooKeeper.create("/lmf", "张三".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}
}
(2)使用IDEA连接zookeeper客户端,报KeeperException$ConnectionLossException异常
二·报错原因:
注意:以下原因只是本人出现的问题,也许还有其他情况!
(1)创建zookeeper对象时,设置的连接会话超时太短 (2)zookeeper里面已经存在你将要创建的节点名称 三·解决办法: (1)对创建zookeeper对象时,设置的“sessionTimeOut=2000”进行延长,本人要“sessionTimeOut=200000”,才能执行成功,读者可以根据自己实际情况而定。//设置超时时长
private int sessionTimeout = 200000;
(2)将zookeeper中那个同名节点删除掉,再去执行连接zookeeper的方法
(3)若不想删除同名节点,则需要在create方法参数中,使用节点类型为“顺序节点”类型
String node = zooKeeper.create("/lmf", "张三".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
四·测试结果:成功



