zookeeper初次学习遇到的坑

1、使用ZkClient调用zookeeper创建节点的时候,代码如下:

public class CreateNode {

	public static void main(String[] args) {
		ZkClient zc = new ZkClient("127.0.0.1:2181", 10000, 10000, new SerializableSerializer());
		System.out.println("conneted ok!");

		User u = new User();
		u.setId(1);
		u.setName("test");
		String path = zc.create("/test3", u, CreateMode.PERSISTENT);
		System.out.println("created path:" + path);
	}

}

使用的 new SerializableSerializer() ,但是创建的时候,依然报错:

Exception in thread "main" org.I0Itec.zkclient.exception.ZkMarshallingError: java.io.NotSerializableException: com.zookeeper.testzkclient.User
	at org.I0Itec.zkclient.serialize.SerializableSerializer.serialize(SerializableSerializer.java:50)
	at org.I0Itec.zkclient.ZkClient.serialize(ZkClient.java:1063)
	at org.I0Itec.zkclient.ZkClient.create(ZkClient.java:525)
	at org.I0Itec.zkclient.ZkClient.create(ZkClient.java:498)
	at com.zookeeper.testzkclient.CreateNode.main(CreateNode.java:16)
Caused by: java.io.NotSerializableException: com.zookeeper.testzkclient.User
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
	at org.I0Itec.zkclient.serialize.SerializableSerializer.serialize(SerializableSerializer.java:46)
	... 4 more

 

这是因为User 类没有实现序列化接口Serializable。

 

2、使用ZkClient调用zookeeper获取对应节点下的数据,代码如下:

public class GetData {

	public static void main(String[] args) {
		ZkClient zc = new ZkClient("127.0.0.1:2181", 10000, 10000, new SerializableSerializer());
		System.out.println("conneted ok!");

		Stat stat = new Stat();
		User u = zc.readData("/test3", stat);
		System.out.println(u.toString());
		System.out.println(stat);

	}

}

 

报错如下:

Exception in thread "main" org.I0Itec.zkclient.exception.ZkNoNodeException: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /test3
	at org.I0Itec.zkclient.exception.ZkException.create(ZkException.java:47)
	at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.java:1000)
	at org.I0Itec.zkclient.ZkClient.readData(ZkClient.java:1099)
	at org.I0Itec.zkclient.ZkClient.readData(ZkClient.java:1094)
	at com.zookeeper.testzkclient.GetData.main(GetData.java:14)
Caused by: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /test3
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:111)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1184)
	at org.I0Itec.zkclient.ZkConnection.readData(ZkConnection.java:124)
	at org.I0Itec.zkclient.ZkClient$12.call(ZkClient.java:1103)
	at org.I0Itec.zkclient.ZkClient$12.call(ZkClient.java:1099)
	at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.java:990)
	... 3 more

这是因为这个节点并不存在,所以直接报错了。

 

暂时是这两个,还在学习中,有了再补上。

你可能感兴趣的:(zookeeper学习,归档)