我正试图将Apache管理器与一个被移植的动物园管理员实例一起使用,无论我如何尝试连接,我总是以一个
org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode =未实现的.
错误。我试着把文档弄清楚了,但我什么也没得到。我已经登录到动物园管理员CLI并确保端口号是正确的:
snerd@powerglove:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 31f1093495ba compose_zookeeper "/opt/zookeeper/bin/ 3 weeks ago Up About a minute 0.0.0.0:32770->2181/tcp,
0.0.0.0:32769->2888/tcp, 0.0.0.0:32768->3888/tcp zookeeper下面是我试图使用的代码:
public class App {
public static void main( String[] args ) {
CuratorFramework client = CuratorFrameworkFactory.newClient("0.0.0.0:32770", new RetryUntilElapsed(3000, 1000));
client.start();
try {
client.create().forPath("/larry-smells/foop", "tuna?".getBytes());
} catch (Exception e) {
System.out.println(e.toString());
}
}
}据我从策展人入门页面中可以看出,这应该是可行的。我遗漏了什么?
edit1刚刚发现,我可以从动物园管理员的集合中提取数据:
System.out.println(new String(curatorFramework.getData().forPath("/larry-smells"))); 但是create命令仍然在爆炸。
edit2
错误的堆栈跟踪:
org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode =未实现的/larry-嗅觉/foop at org.apache.zookeeper.KeeperException.create(KeeperException.java:103) at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1297) at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1040) at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.org.apache.curator.connection.StandardConnectionHandlingPolicy.callWithRetry(StandardConnectionHandlingPolicy.java:67) at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:99) at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:1020) at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:501) at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:491) atorg.apache.curator.framework.imps.CreateBuilderImpl$4.forPath(CreateBuilderImpl.java:367) at org.apache.curator.framework.imps.CreateBuilderImpl$4.forPath(CreateBuilderImpl.java:309) at com.mycompany.app.App.main(App.java:35)
发布于 2016-03-02 17:20:59
编辑:很明显,如果你用错了馆长和动物园管理员的组合,这个错误就会发生。来自curator.apache.org:
馆长2.x.x -兼容ZooKeeper 3.4.x和ZooKeeper 3.5.x 策展人3.x.x只与ZooKeeper 3.5.x兼容,并包括对新特性(如动态重新配置等)的支持。
很难用错误代码而不是堆栈跟踪来确定您的问题,但我建议您进行一些改进,以使应用程序更加稳定:
public class App {
public static void main( String[] args ) {
CuratorFramework client = CuratorFrameworkFactory.newClient("0.0.0.0:32770", new RetryUntilElapsed(3000, 1000));
client.start();
try {
//make sure you're connected to zookeeper.
client.blockUntilConnected();
//Make sure the parents are created.
client.create().creatingParentsIfNeeded().forPath("/larry-smells/foop", "tuna?".getBytes());
} catch (Exception e) {
System.out.println(e.toString());
}
}
}发布于 2018-10-09 10:27:23
我也遇到了类似的异常,我使用了下面的依赖项,这些依赖项是兼容的,并帮助我解决异常。
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-x-discovery</artifactId>
<version>4.0.1</version>
</dependency>发布于 2017-08-10 21:41:02
我也有同样的问题。
我试着在练习6上使用inTransaction (),如这里所解释的:http://www.programcreek.com/java-api-examples/index.php?api=org.apache.curator.framework.CuratorFramework,并且似乎有效。
client.inTransaction ().create().forPath("/larry-smells/foop", "tuna?".getBytes()).and ().commit ();https://stackoverflow.com/questions/35734590
复制相似问题