1、前言
源码地址:https://github.com/apache/incubator-dubbo
官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
源码版本:2.7.1
本文将完成dubbo源码环境搭建及dubbo案例测试,通过dubbo提供的测试案例来试图深入源码一探究竟。
2、正文
将源码导入idea,进行maven编译(根项目:dubbo-parent),并启动zookeeper服务(下载zk包并启动,点击zkServer.cmd)
项目目录结构中找到dubbo-demo模块,发现dubbo为服务调用提供了三种方式的案例,如图所示:
下面我们来看看:
2.1、注解方式(annotation)
点开dubbo-demo-annotation-consumer,找到对应的Application,如图:
Application源码如下:
public class Application {
/**
* In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before
* launch the application
*/
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
context.start();
DemoService service = context.getBean("demoServiceComponent", DemoServiceComponent.class);
String hello = service.sayHello("world");
System.out.println("result :" + hello);
}
@Configuration
@EnableDubbo(scanBasePackages = "org.apache.dubbo.demo.consumer.comp")
@PropertySource("classpath:/spring/dubbo-consumer.properties")
@ComponentScan(value = {"org.apache.dubbo.demo.consumer.comp"})
static class ConsumerConfiguration {
}
}
打开对应的dubbo-consumer.properties,修改dubbo.registry.address为本地的注册中心地址,我这里使用的是zookeeper:
dubbo.application.name=dubbo-demo-annotation-consumer
dubbo.registry.address=zookeeper://192.168.200.1:2181
注意:如果使用的是multicast registry,需要在启动时指定JVM属性:
-Djava.net.preferIPv4Stack=true
确保dubbo识别到所配置的注册中心地址。
此时dubbo消费者的配置已完成。
接下来,我们需要配置dubbo的服务提供者:
找到对应的Application,源码如下:
public class Application {
/**
* In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before
* launch the application
*/
public static void main(String[] args) throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class);
context.start();
System.in.read();
}
@Configuration
@EnableDubbo(scanBasePackages = "org.apache.dubbo.demo.provider")
@PropertySource("classpath:/spring/dubbo-provider.properties")
static class ProviderConfiguration {
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress("zookeeper://192.168.200.1:2181");
return registryConfig;
}
}
}
在上述源码中的registryConfig()方法中,修改registryConfig.setAddress()方法中的注册中心地址参数,改为本地zk地址,与服务消费者保持一致。
接下来,我们就可以运行Applicaton,启动dubbo服务提供者,
"D:\Program Files\Java\jdk1.8.0_111\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.6\lib\idea_rt.jar=53555:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.6\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_111\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\rt.jar;D:\IdeaProjects\incubator-dubbo\dubbo-demo\dubbo-demo-annotation\dubbo-demo-annotation-provider\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-demo\dubbo-demo-interface\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-config\dubbo-config-spring\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-config\dubbo-config-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-monitor\dubbo-monitor-api\target\classes;D:\mavenrepository\com\alibaba\middleware\metrics-core-api\2.0.1\metrics-core-api-2.0.1.jar;D:\mavenrepository\com\alibaba\middleware\metrics-core-impl\2.0.1\metrics-core-impl-2.0.1.jar;D:\mavenrepository\com\alibaba\middleware\metrics-common\2.0.1\metrics-common-2.0.1.jar;D:\IdeaProjects\incubator-dubbo\dubbo-filter\dubbo-filter-validation\target\classes;D:\mavenrepository\javax\validation\validation-api\1.1.0.Final\validation-api-1.1.0.Final.jar;D:\IdeaProjects\incubator-dubbo\dubbo-filter\dubbo-filter-cache\target\classes;D:\mavenrepository\javax\cache\cache-api\1.0.0\cache-api-1.0.0.jar;D:\mavenrepository\org\springframework\spring-beans\4.3.16.RELEASE\spring-beans-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-core\4.3.16.RELEASE\spring-core-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-web\4.3.16.RELEASE\spring-web-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-aop\4.3.16.RELEASE\spring-aop-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-context\4.3.16.RELEASE\spring-context-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-expression\4.3.16.RELEASE\spring-expression-4.3.16.RELEASE.jar;D:\IdeaProjects\incubator-dubbo\dubbo-rpc\dubbo-rpc-injvm\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-registry\dubbo-registry-zookeeper\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-registry\dubbo-registry-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-cluster\target\classes;D:\mavenrepository\org\yaml\snakeyaml\1.20\snakeyaml-1.20.jar;D:\IdeaProjects\incubator-dubbo\dubbo-remoting\dubbo-remoting-zookeeper\target\classes;D:\mavenrepository\org\apache\curator\curator-recipes\4.0.1\curator-recipes-4.0.1.jar;D:\mavenrepository\org\apache\curator\curator-framework\4.0.1\curator-framework-4.0.1.jar;D:\mavenrepository\org\apache\curator\curator-client\4.0.1\curator-client-4.0.1.jar;D:\mavenrepository\com\google\guava\guava\20.0\guava-20.0.jar;D:\mavenrepository\org\apache\zookeeper\zookeeper\3.4.13\zookeeper-3.4.13.jar;D:\mavenrepository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\mavenrepository\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;D:\mavenrepository\jline\jline\0.9.94\jline-0.9.94.jar;D:\mavenrepository\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;D:\IdeaProjects\incubator-dubbo\dubbo-registry\dubbo-registry-multicast\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-rpc\dubbo-rpc-dubbo\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-rpc\dubbo-rpc-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-remoting\dubbo-remoting-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-container\dubbo-container-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-configcenter\dubbo-configcenter-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-remoting\dubbo-remoting-netty4\target\classes;D:\mavenrepository\io\netty\netty-all\4.1.25.Final\netty-all-4.1.25.Final.jar;D:\IdeaProjects\incubator-dubbo\dubbo-serialization\dubbo-serialization-hessian2\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-serialization\dubbo-serialization-api\target\classes;D:\mavenrepository\com\alibaba\fastjson\1.2.46\fastjson-1.2.46.jar;D:\mavenrepository\com\esotericsoftware\kryo\4.0.1\kryo-4.0.1.jar;D:\mavenrepository\com\esotericsoftware\reflectasm\1.11.3\reflectasm-1.11.3.jar;D:\mavenrepository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;D:\mavenrepository\com\esotericsoftware\minlog\1.3.0\minlog-1.3.0.jar;D:\mavenrepository\de\javakaffee\kryo-serializers\0.42\kryo-serializers-0.42.jar;D:\mavenrepository\de\ruedigermoeller\fst\2.48-jdk-6\fst-2.48-jdk-6.jar;D:\mavenrepository\com\fasterxml\jackson\core\jackson-core\2.8.6\jackson-core-2.8.6.jar;D:\mavenrepository\com\cedarsoftware\java-util\1.9.0\java-util-1.9.0.jar;D:\mavenrepository\com\cedarsoftware\json-io\2.5.1\json-io-2.5.1.jar;D:\mavenrepository\com\alibaba\hessian-lite\3.2.5\hessian-lite-3.2.5.jar;D:\IdeaProjects\incubator-dubbo\dubbo-configcenter\dubbo-configcenter-zookeeper\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-report-zookeeper\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-report-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-definition\target\classes;D:\mavenrepository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-report-redis\target\classes;D:\mavenrepository\redis\clients\jedis\2.9.0\jedis-2.9.0.jar;D:\mavenrepository\org\apache\commons\commons-pool2\2.4.2\commons-pool2-2.4.2.jar;D:\IdeaProjects\incubator-dubbo\dubbo-plugin\dubbo-qos\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-common\target\classes;D:\mavenrepository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\mavenrepository\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\mavenrepository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;D:\mavenrepository\org\objenesis\objenesis\2.6\objenesis-2.6.jar" org.apache.dubbo.demo.provider.Application
[06/04/19 15:54:11:823 GMT+08:00] main INFO annotation.AnnotationConfigApplicationContext: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@26f0a63f: startup date [Sat Apr 06 15:54:11 GMT+08:00 2019]; root of context hierarchy
[06/04/19 15:54:12:378 GMT+08:00] main INFO annotation.DubboConfigBindingRegistrar: The dubbo config bean definition [name : org.apache.dubbo.config.ApplicationConfig#0, class : org.apache.dubbo.config.ApplicationConfig] has been registered.
[06/04/19 15:54:12:391 GMT+08:00] main INFO annotation.DubboConfigBindingRegistrar: The BeanPostProcessor bean definition [org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : org.apache.dubbo.config.ApplicationConfig#0] has been registered.
[06/04/19 15:54:12:399 GMT+08:00] main INFO annotation.DubboConfigBindingRegistrar: The dubbo config bean definition [name : org.apache.dubbo.config.ProtocolConfig#0, class : org.apache.dubbo.config.ProtocolConfig] has been registered.
[06/04/19 15:54:12:399 GMT+08:00] main INFO annotation.DubboConfigBindingRegistrar: The BeanPostProcessor bean definition [org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : org.apache.dubbo.config.ProtocolConfig#0] has been registered.
[06/04/19 15:54:12:627 GMT+08:00] main INFO logger.LoggerFactory: using logger: org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter
[06/04/19 15:54:12:954 GMT+08:00] main INFO annotation.ServiceAnnotationBeanPostProcessor: [DUBBO] BeanNameGenerator bean can't be found in BeanFactory with name [org.springframework.context.annotation.internalConfigurationBeanNameGenerator], dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:12:954 GMT+08:00] main INFO annotation.ServiceAnnotationBeanPostProcessor: [DUBBO] BeanNameGenerator will be a instance of org.springframework.context.annotation.AnnotationBeanNameGenerator , it maybe a potential problem on bean name generation., dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:13:029 GMT+08:00] main INFO annotation.ServiceAnnotationBeanPostProcessor: [DUBBO] The BeanDefinition[Root bean: class [org.apache.dubbo.config.spring.ServiceBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] of ServiceBean has been registered with name : providers:dubbo:org.apache.dubbo.demo.DemoService, dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:13:029 GMT+08:00] main INFO annotation.ServiceAnnotationBeanPostProcessor: [DUBBO] 1 annotated Dubbo's @Service Components { [Bean definition with name 'demoServiceImpl': Generic bean: class [org.apache.dubbo.demo.provider.DemoServiceImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [D:\IdeaProjects\incubator-dubbo\dubbo-demo\dubbo-demo-annotation\dubbo-demo-annotation-provider\target\classes\org\apache\dubbo\demo\provider\DemoServiceImpl.class]] } were scanned under package[org.apache.dubbo.demo.provider], dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:13:361 GMT+08:00] main INFO annotation.DubboConfigBindingBeanPostProcessor: The properties of bean [name : org.apache.dubbo.config.ApplicationConfig#0] have been binding by prefix of configuration properties : dubbo.application
[06/04/19 15:54:13:369 GMT+08:00] main INFO annotation.DubboConfigBindingBeanPostProcessor: The properties of bean [name : org.apache.dubbo.config.ProtocolConfig#0] have been binding by prefix of configuration properties : dubbo.protocol
[06/04/19 15:54:14:295 GMT+08:00] main INFO config.AbstractConfig: [DUBBO] The service ready on spring started. service: org.apache.dubbo.demo.DemoService, dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:14:695 GMT+08:00] main INFO utils.Compatibility: Running in ZooKeeper 3.4.x compatibility mode
[06/04/19 15:54:14:761 GMT+08:00] main INFO imps.CuratorFrameworkImpl: Starting
[06/04/19 15:54:14:770 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 00:39 GMT
[06/04/19 15:54:14:770 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:host.name=LAPTOP-JTFKJ809
[06/04/19 15:54:14:770 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.version=1.8.0_111
[06/04/19 15:54:14:770 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.vendor=Oracle Corporation
[06/04/19 15:54:14:770 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.home=D:\Program Files\Java\jdk1.8.0_111\jre
[06/04/19 15:54:14:770 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.class.path=D:\Program Files\Java\jdk1.8.0_111\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_111\jre\lib\rt.jar;D:\IdeaProjects\incubator-dubbo\dubbo-demo\dubbo-demo-annotation\dubbo-demo-annotation-provider\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-demo\dubbo-demo-interface\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-config\dubbo-config-spring\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-config\dubbo-config-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-monitor\dubbo-monitor-api\target\classes;D:\mavenrepository\com\alibaba\middleware\metrics-core-api\2.0.1\metrics-core-api-2.0.1.jar;D:\mavenrepository\com\alibaba\middleware\metrics-core-impl\2.0.1\metrics-core-impl-2.0.1.jar;D:\mavenrepository\com\alibaba\middleware\metrics-common\2.0.1\metrics-common-2.0.1.jar;D:\IdeaProjects\incubator-dubbo\dubbo-filter\dubbo-filter-validation\target\classes;D:\mavenrepository\javax\validation\validation-api\1.1.0.Final\validation-api-1.1.0.Final.jar;D:\IdeaProjects\incubator-dubbo\dubbo-filter\dubbo-filter-cache\target\classes;D:\mavenrepository\javax\cache\cache-api\1.0.0\cache-api-1.0.0.jar;D:\mavenrepository\org\springframework\spring-beans\4.3.16.RELEASE\spring-beans-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-core\4.3.16.RELEASE\spring-core-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-web\4.3.16.RELEASE\spring-web-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-aop\4.3.16.RELEASE\spring-aop-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-context\4.3.16.RELEASE\spring-context-4.3.16.RELEASE.jar;D:\mavenrepository\org\springframework\spring-expression\4.3.16.RELEASE\spring-expression-4.3.16.RELEASE.jar;D:\IdeaProjects\incubator-dubbo\dubbo-rpc\dubbo-rpc-injvm\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-registry\dubbo-registry-zookeeper\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-registry\dubbo-registry-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-cluster\target\classes;D:\mavenrepository\org\yaml\snakeyaml\1.20\snakeyaml-1.20.jar;D:\IdeaProjects\incubator-dubbo\dubbo-remoting\dubbo-remoting-zookeeper\target\classes;D:\mavenrepository\org\apache\curator\curator-recipes\4.0.1\curator-recipes-4.0.1.jar;D:\mavenrepository\org\apache\curator\curator-framework\4.0.1\curator-framework-4.0.1.jar;D:\mavenrepository\org\apache\curator\curator-client\4.0.1\curator-client-4.0.1.jar;D:\mavenrepository\com\google\guava\guava\20.0\guava-20.0.jar;D:\mavenrepository\org\apache\zookeeper\zookeeper\3.4.13\zookeeper-3.4.13.jar;D:\mavenrepository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\mavenrepository\org\slf4j\slf4j-log4j12\1.7.25\slf4j-log4j12-1.7.25.jar;D:\mavenrepository\jline\jline\0.9.94\jline-0.9.94.jar;D:\mavenrepository\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;D:\IdeaProjects\incubator-dubbo\dubbo-registry\dubbo-registry-multicast\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-rpc\dubbo-rpc-dubbo\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-rpc\dubbo-rpc-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-remoting\dubbo-remoting-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-container\dubbo-container-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-configcenter\dubbo-configcenter-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-remoting\dubbo-remoting-netty4\target\classes;D:\mavenrepository\io\netty\netty-all\4.1.25.Final\netty-all-4.1.25.Final.jar;D:\IdeaProjects\incubator-dubbo\dubbo-serialization\dubbo-serialization-hessian2\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-serialization\dubbo-serialization-api\target\classes;D:\mavenrepository\com\alibaba\fastjson\1.2.46\fastjson-1.2.46.jar;D:\mavenrepository\com\esotericsoftware\kryo\4.0.1\kryo-4.0.1.jar;D:\mavenrepository\com\esotericsoftware\reflectasm\1.11.3\reflectasm-1.11.3.jar;D:\mavenrepository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;D:\mavenrepository\com\esotericsoftware\minlog\1.3.0\minlog-1.3.0.jar;D:\mavenrepository\de\javakaffee\kryo-serializers\0.42\kryo-serializers-0.42.jar;D:\mavenrepository\de\ruedigermoeller\fst\2.48-jdk-6\fst-2.48-jdk-6.jar;D:\mavenrepository\com\fasterxml\jackson\core\jackson-core\2.8.6\jackson-core-2.8.6.jar;D:\mavenrepository\com\cedarsoftware\java-util\1.9.0\java-util-1.9.0.jar;D:\mavenrepository\com\cedarsoftware\json-io\2.5.1\json-io-2.5.1.jar;D:\mavenrepository\com\alibaba\hessian-lite\3.2.5\hessian-lite-3.2.5.jar;D:\IdeaProjects\incubator-dubbo\dubbo-configcenter\dubbo-configcenter-zookeeper\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-report-zookeeper\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-report-api\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-definition\target\classes;D:\mavenrepository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\IdeaProjects\incubator-dubbo\dubbo-metadata-report\dubbo-metadata-report-redis\target\classes;D:\mavenrepository\redis\clients\jedis\2.9.0\jedis-2.9.0.jar;D:\mavenrepository\org\apache\commons\commons-pool2\2.4.2\commons-pool2-2.4.2.jar;D:\IdeaProjects\incubator-dubbo\dubbo-plugin\dubbo-qos\target\classes;D:\IdeaProjects\incubator-dubbo\dubbo-common\target\classes;D:\mavenrepository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\mavenrepository\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\mavenrepository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;D:\mavenrepository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.6\lib\idea_rt.jar
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.library.path=D:\Program Files\Java\jdk1.8.0_111\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:\oracle\product\11.2.0\dbhome_1\bin;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;c:\Program Files (x86)\HP\HP Performance Advisor;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\Program Files\Git\cmd;D:\jdk1.7.0_79\bin;D:\Program Files\TortoiseSVN\bin;D:\Program Files\nodejs;D:\Program Files\TortoiseGit\bin;D:\apache-maven-3.5.0\bin;C:\Users\15015\AppData\Local\Microsoft\WindowsApps;D:\Program Files\Fiddler;D:\Program Files\Programs\Microsoft VS Code\bin;C:\Users\15015\AppData\Roaming\npm;;.
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=C:\Users\15015\AppData\Local\Temp\
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:java.compiler=<NA>
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:os.name=Windows 10
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:os.version=10.0
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:user.name=15015
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:user.home=C:\Users\15015
[06/04/19 15:54:14:774 GMT+08:00] main INFO zookeeper.ZooKeeper: Client environment:user.dir=D:\IdeaProjects\incubator-dubbo
[06/04/19 15:54:14:775 GMT+08:00] main INFO zookeeper.ZooKeeper: Initiating client connection, connectString=192.168.200.1:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@52719fb6
[06/04/19 15:54:15:076 GMT+08:00] main-SendThread(LAPTOP-JTFKJ809:2181) INFO zookeeper.ClientCnxn: Opening socket connection to server LAPTOP-JTFKJ809/192.168.200.1:2181. Will not attempt to authenticate using SASL (unknown error)
[06/04/19 15:54:15:077 GMT+08:00] main-SendThread(LAPTOP-JTFKJ809:2181) INFO zookeeper.ClientCnxn: Socket connection established to LAPTOP-JTFKJ809/192.168.200.1:2181, initiating session
[06/04/19 15:54:15:079 GMT+08:00] main INFO imps.CuratorFrameworkImpl: Default schema
[06/04/19 15:54:15:080 GMT+08:00] main INFO zookeeper.ZookeeperTransporter: [DUBBO] No valid zookeeper client found from cache, therefore create a new client for url. zookeeper://192.168.200.1:2181/ConfigCenterConfig?address=zookeeper://192.168.200.1:2181&config.check=true&config.config-file=dubbo.properties&config.group=dubbo&config.highest-priority=false&config.namespace=dubbo&config.timeout=3000&prefix=dubbo.config-center&valid=true, dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:15:128 GMT+08:00] main-SendThread(LAPTOP-JTFKJ809:2181) WARN zookeeper.ClientCnxnSocket: Connected to an old server; r-o mode will be unavailable
[06/04/19 15:54:15:128 GMT+08:00] main-SendThread(LAPTOP-JTFKJ809:2181) INFO zookeeper.ClientCnxn: Session establishment complete on server LAPTOP-JTFKJ809/192.168.200.1:2181, sessionid = 0x169f1a346d50000, negotiated timeout = 40000
[06/04/19 15:54:15:137 GMT+08:00] main-EventThread INFO state.ConnectionStateManager: State change: CONNECTED
[06/04/19 15:54:15:212 GMT+08:00] main WARN config.ConfigurationUtils: [DUBBO] You specified the config centre, but there's not even one single config item in it., dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:15:212 GMT+08:00] main WARN config.ConfigurationUtils: [DUBBO] You specified the config centre, but there's not even one single config item in it., dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:15:215 GMT+08:00] main WARN config.AbstractConfig: [DUBBO] There's no valid metadata config found, if you are using the simplified mode of registry url, please make sure you have a metadata address configured properly., dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:15:971 GMT+08:00] main INFO config.AbstractConfig: [DUBBO] Export dubbo service org.apache.dubbo.demo.DemoService to local registry, dubbo version: , current host: 192.168.200.1
[06/04/19 15:54:15:971 GMT+08:00] main INFO config.AbstractConfig: [DUBBO] Export dubbo service org.apache.dubbo.demo.DemoService to url dubbo://192.168.200.1:20880/org.apache.dubbo.demo.DemoService?anyhost=true&application=dubbo-demo-annotation-provider&bean.name=providers:dubbo:org.apache.dubbo.demo.DemoService&bind.ip=192.16