dubbo+springboot+zookeeper 测试过程中遇到的bug

第一次使用 dubbo+springboot+zookeeper 的测试过程

测试过程中遇到的bug

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/curator/framework/recipes/cache/TreeCacheListener
	...
Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.recipes.cache.TreeCacheListener
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 39 more

添加依赖

compile group: 'org.apache.curator', name: 'curator-recipes', version: '4.2.0'
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'consumer': Injection of @org.apache.dubbo.config.annotation.Reference dependencies is failed; nested exception is java.lang.IllegalStateException: Failed to check the status of the service com.yuyi.dubbo.DemoService. No provider available for the service com.yuyi.dubbo.DemoService:1.0.0 from the url zookeeper://192.168.226.128:2181/org.apache.dubbo.registry.RegistryService?application=dubbo-demo-consumer&default.timeout=5000&dubbo=2.0.2&interface=com.yuyi.dubbo.DemoService&methods=sayHello&pid=194892&qos.enable=false&register.ip=172.23.191.111&release=2.7.0&revision=1.0.0&side=consumer&timestamp=1571196818089&version=1.0.0 to the consumer 172.23.191.111 use dubbo version 2.7.0
	...
Caused by: java.lang.IllegalStateException: Failed to check the status of the service com.yuyi.dubbo.DemoService. No provider available for the service com.yuyi.dubbo.DemoService:1.0.0 from the url zookeeper://192.168.226.128:2181/org.apache.dubbo.registry.RegistryService?application=dubbo-demo-consumer&default.timeout=5000&dubbo=2.0.2&interface=com.yuyi.dubbo.DemoService&methods=sayHello&pid=194892&qos.enable=false&register.ip=172.23.191.111&release=2.7.0&revision=1.0.0&side=consumer&timestamp=1571196818089&version=1.0.0 to the consumer 172.23.191.111 use dubbo version 2.7.0
	at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:393) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:301) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:225) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceBeanInvocationHandler.init(ReferenceAnnotationBeanPostProcessor.java:162) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceBeanInvocationHandler.access$100(ReferenceAnnotationBeanPostProcessor.java:146) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildInvocationHandler(ReferenceAnnotationBeanPostProcessor.java:140) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.buildProxy(ReferenceAnnotationBeanPostProcessor.java:122) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:116) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor.doGetInjectedBean(ReferenceAnnotationBeanPostProcessor.java:49) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationInjectedBeanPostProcessor.getInjectedObject(AnnotationInjectedBeanPostProcessor.java:340) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationInjectedBeanPostProcessor$AnnotatedFieldElement.inject(AnnotationInjectedBeanPostProcessor.java:520) ~[dubbo-2.7.0.jar:2.7.0]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.apache.dubbo.config.spring.beans.factory.annotation.AnnotationInjectedBeanPostProcessor.postProcessPropertyValues(AnnotationInjectedBeanPostProcessor.java:128) ~[dubbo-2.7.0.jar:2.7.0]
	... 17 common frames omitted

消费端找不到服务提供者注册的服务信息,但是我的 ProviderStart 确实正常启动,并且zk地址没有问题,所以应该是 ProviderStart 注册有问题。
最后发现是因为在 ProviderStart 类上没有添加 @EnableDubbo注解,通过 @EnableDubbo 可以在指定的包名下,或者指定的类中扫描 Dubbo 的服务提供者(以 @Service 标注)以及 Dubbo 的服务消费者(以 Reference 标注)。

java.lang.IllegalStateException: Failed to register dubbo://172.23.191.111:20880/com.yuyi.dubbo.DemoService?anyhost=true&application=dubbo-demo-provider&bean.name=ServiceBean:com.yuyi.dubbo.DemoService:1.0.0&default.timeout=1000&dubbo=2.0.2&generic=false&interface=com.yuyi.dubbo.DemoService&methods=sayHello&pid=195596&release=2.7.0&revision=1.0.0&side=provider&timestamp=1571282741109&version=1.0.0 to registry 192.168.226.128:2181, cause: Failed to register dubbo://172.23.191.111:20880/com.yuyi.dubbo.DemoService?anyhost=true&application=dubbo-demo-provider&bean.name=ServiceBean:com.yuyi.dubbo.DemoService:1.0.0&default.timeout=1000&dubbo=2.0.2&generic=false&interface=com.yuyi.dubbo.DemoService&methods=sayHello&pid=195596&release=2.7.0&revision=1.0.0&side=provider&timestamp=1571282741109&version=1.0.0 to zookeeper zookeeper://192.168.226.128:2181/org.apache.dubbo.registry.RegistryService?application=dubbo-demo-provider&dubbo=2.0.2&interface=org.apache.dubbo.registry.RegistryService&pid=195596&qos.enable=false&release=2.7.0&timestamp=1571282741104, cause: KeeperErrorCode = Unimplemented for /dubbo/com.yuyi.dubbo.DemoService/providers/dubbo%3A%2F%2F172.23.191.111%3A20880%2Fcom.yuyi.dubbo.DemoService%3Fanyhost%3Dtrue%26application%3Ddubbo-demo-provider%26bean.name%3DServiceBean%3Acom.yuyi.dubbo.DemoService%3A1.0.0%26default.timeout%3D1000%26dubbo%3D2.0.2%26generic%3Dfalse%26interface%3Dcom.yuyi.dubbo.DemoService%26methods%3DsayHello%26pid%3D195596%26release%3D2.7.0%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1571282741109%26version%3D1.0.0
	at org.apache.dubbo.registry.support.FailbackRegistry.register(FailbackRegistry.java:243) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.registry.integration.RegistryProtocol.register(RegistryProtocol.java:157) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:191) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:61) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:106) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:55) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-2.7.0.jar:2.7.0]
	...
Caused by: org.apache.dubbo.rpc.RpcException: Failed to register dubbo://172.23.191.111:20880/com.yuyi.dubbo.DemoService?anyhost=true&application=dubbo-demo-provider&bean.name=ServiceBean:com.yuyi.dubbo.DemoService:1.0.0&default.timeout=1000&dubbo=2.0.2&generic=false&interface=com.yuyi.dubbo.DemoService&methods=sayHello&pid=195596&release=2.7.0&revision=1.0.0&side=provider&timestamp=1571282741109&version=1.0.0 to zookeeper zookeeper://192.168.226.128:2181/org.apache.dubbo.registry.RegistryService?application=dubbo-demo-provider&dubbo=2.0.2&interface=org.apache.dubbo.registry.RegistryService&pid=195596&qos.enable=false&release=2.7.0&timestamp=1571282741104, cause: KeeperErrorCode = Unimplemented for /dubbo/com.yuyi.dubbo.DemoService/providers/dubbo%3A%2F%2F172.23.191.111%3A20880%2Fcom.yuyi.dubbo.DemoService%3Fanyhost%3Dtrue%26application%3Ddubbo-demo-provider%26bean.name%3DServiceBean%3Acom.yuyi.dubbo.DemoService%3A1.0.0%26default.timeout%3D1000%26dubbo%3D2.0.2%26generic%3Dfalse%26interface%3Dcom.yuyi.dubbo.DemoService%26methods%3DsayHello%26pid%3D195596%26release%3D2.7.0%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1571282741109%26version%3D1.0.0
	at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doRegister(ZookeeperRegistry.java:116) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.registry.support.FailbackRegistry.register(FailbackRegistry.java:230) ~[dubbo-2.7.0.jar:2.7.0]
	... 28 common frames omitted
Caused by: java.lang.IllegalStateException: KeeperErrorCode = Unimplemented for /dubbo/com.yuyi.dubbo.DemoService/providers/dubbo%3A%2F%2F172.23.191.111%3A20880%2Fcom.yuyi.dubbo.DemoService%3Fanyhost%3Dtrue%26application%3Ddubbo-demo-provider%26bean.name%3DServiceBean%3Acom.yuyi.dubbo.DemoService%3A1.0.0%26default.timeout%3D1000%26dubbo%3D2.0.2%26generic%3Dfalse%26interface%3Dcom.yuyi.dubbo.DemoService%26methods%3DsayHello%26pid%3D195596%26release%3D2.7.0%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1571282741109%26version%3D1.0.0
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createEphemeral(CuratorZookeeperClient.java:93) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.create(AbstractZookeeperClient.java:65) ~[dubbo-2.7.0.jar:2.7.0]
	at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doRegister(ZookeeperRegistry.java:114) ~[dubbo-2.7.0.jar:2.7.0]
	... 29 common frames omitted
Caused by: org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /dubbo/com.yuyi.dubbo.DemoService/providers/dubbo%3A%2F%2F172.23.191.111%3A20880%2Fcom.yuyi.dubbo.DemoService%3Fanyhost%3Dtrue%26application%3Ddubbo-demo-provider%26bean.name%3DServiceBean%3Acom.yuyi.dubbo.DemoService%3A1.0.0%26default.timeout%3D1000%26dubbo%3D2.0.2%26generic%3Dfalse%26interface%3Dcom.yuyi.dubbo.DemoService%26methods%3DsayHello%26pid%3D195596%26release%3D2.7.0%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1571282741109%26version%3D1.0.0
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:106) ~[zookeeper-3.5.4-beta.jar:3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327]
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:54) ~[zookeeper-3.5.4-beta.jar:3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327]
	at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1549) ~[zookeeper-3.5.4-beta.jar:3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327]
	at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1180) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1156) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.curator.connection.StandardConnectionHandlingPolicy.callWithRetry(StandardConnectionHandlingPolicy.java:64) ~[curator-client-4.2.0.jar:na]
	at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:100) ~[curator-client-4.2.0.jar:na]
	at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:1153) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:607) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:597) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:575) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:51) ~[curator-framework-4.2.0.jar:4.2.0]
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createEphemeral(CuratorZookeeperClient.java:90) ~[dubbo-2.7.0.jar:2.7.0]
	... 31 common frames omitted

zk版本不一致,spring自带的版本是3.5.4-beta,而我的zk是3.4.6,在创建节点路径时版本不兼容导致报错。
两种解决办法:如果只是测试,重新搭个zk,很简单就搭好了。如果不能改变zk版本就添加新的zk依赖(你的版本)并排除spring依赖中的zk依赖

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值