最近,自去年阿里开源了dubbo2.7及一系列产品后,阿里也打造了融入spring-cloud 的生态体系,本人关注,今年阿里开源的的spring-cloud-alibaba基本孵化完成,笔者更是对这一系统的东西关注有加,原spring-cloud 的netflix逐步不再维护,而阿里这套系统日益活跃,未来趋势很可能spring-cloud-alibaba更为流行。
因为前期公司一直采用的是dubbo的调用模式,所以为了兼容以前的东西,笔者想要整合并逐步引入spring-cloud-alibaba的东西,为此搞个demo。记录一下
工程目录结构:
pom是父类工程,进行版本管理
pom文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.1.6.RELEASE</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.drawnblue</groupId> 12 <artifactId>pom</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>pom</name> 15 <description>Demo project for Spring Boot</description> 16 <packaging>pom</packaging> 17 <properties> 18 <java.version>1.8</java.version> 19 </properties> 20 21 <dependencies> 22 <dependency> 23 <groupId>org.springframework.boot</groupId> 24 <artifactId>spring-boot-starter</artifactId> 25 </dependency> 26 27 <dependency> 28 <groupId>org.springframework.boot</groupId> 29 <artifactId>spring-boot-starter-test</artifactId> 30 <scope>test</scope> 31 </dependency> 32 </dependencies> 33 <dependencyManagement> 34 <dependencies> 35 <dependency> 36 <groupId>org.springframework.cloud</groupId> 37 <artifactId>spring-cloud-dependencies</artifactId> 38 <version>Greenwich.SR2</version> 39 </dependency> 40 <dependency> 41 <groupId>org.springframework.cloud</groupId> 42 <artifactId>spring-cloud-alibaba-dependencies</artifactId> 43 <version>0.9.0.RELEASE</version> 44 </dependency> 45 </dependencies> 46 </dependencyManagement> 47 <build> 48 <plugins> 49 <plugin> 50 <groupId>org.springframework.boot</groupId> 51 <artifactId>spring-boot-maven-plugin</artifactId> 52 </plugin> 53 </plugins> 54 </build> 55 56 </project>
common,dao都是一般的不可执行项目,作为依赖
common pom
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>com.drawnblue</groupId> 7 <artifactId>pom</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 </parent> 10 <groupId>com.drawnblue</groupId> 11 <artifactId>common</artifactId> 12 <version>0.0.1-SNAPSHOT</version> 13 <name>common</name> 14 <description>Demo project for Spring Boot</description> 15 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 20 <dependencies> 21 <dependency> 22 <groupId>org.springframework.boot</groupId> 23 <artifactId>spring-boot-starter</artifactId> 24 </dependency> 25 26 <dependency> 27 <groupId>org.springframework.boot</groupId> 28 <artifactId>spring-boot-starter-test</artifactId> 29 <scope>test</scope> 30 </dependency> 31 </dependencies> 32 33 <build> 34 <plugins> 35 <plugin> 36 <groupId>org.springframework.boot</groupId> 37 <artifactId>spring-boot-maven-plugin</artifactId> 38 </plugin> 39 </plugins> 40 </build> 41 42 </project>
dao pom
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>com.drawnblue</groupId> 7 <artifactId>pom</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 </parent> 10 <groupId>com.drawnblue</groupId> 11 <artifactId>dao</artifactId> 12 <version>0.0.1-SNAPSHOT</version> 13 <name>dao</name> 14 <description>Demo project for Spring Boot</description> 15 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 20 <dependencies> 21 <dependency> 22 <groupId>com.drawnblue</groupId> 23 <artifactId>common</artifactId> 24 <version>0.0.1-SNAPSHOT</version> 25 </dependency> 26 </dependencies> 27 28 <build> 29 <plugins> 30 <plugin> 31 <groupId>org.springframework.boot</groupId> 32 <artifactId>spring-boot-maven-plugin</artifactId> 33 </plugin> 34 </plugins> 35 </build> 36 37 </project>
user-service-api pom
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>com.drawnblue</groupId> 7 <artifactId>pom</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 </parent> 10 <groupId>com.drawnblue</groupId> 11 <artifactId>user-service-api</artifactId> 12 <version>0.0.1-SNAPSHOT</version> 13 <name>user-service-api</name> 14 <description>Demo project for Spring Boot</description> 15 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 20 <dependencies> 21 <dependency> 22 <groupId>com.drawnblue</groupId> 23 <artifactId>common</artifactId> 24 <version>0.0.1-SNAPSHOT</version> 25 </dependency> 26 </dependencies> 27 28 <build> 29 <plugins> 30 <plugin> 31 <groupId>org.springframework.boot</groupId> 32 <artifactId>spring-boot-maven-plugin</artifactId> 33 </plugin> 34 </plugins> 35 </build> 36 37 </project>
user-service pom
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>com.drawnblue</groupId> 7 <artifactId>pom</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 </parent> 10 <groupId>com.drawnblue</groupId> 11 <artifactId>user-service</artifactId> 12 <version>0.0.1-SNAPSHOT</version> 13 <name>user-service</name> 14 <description>Demo project for Spring Boot</description> 15 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 20 <dependencies> 21 <!--local project--> 22 <dependency> 23 <groupId>com.drawnblue</groupId> 24 <artifactId>common</artifactId> 25 <version>0.0.1-SNAPSHOT</version> 26 </dependency> 27 <dependency> 28 <groupId>com.drawnblue</groupId> 29 <artifactId>dao</artifactId> 30 <version>0.0.1-SNAPSHOT</version> 31 </dependency> 32 <dependency> 33 <groupId>com.drawnblue</groupId> 34 <artifactId>user-service-api</artifactId> 35 <version>0.0.1-SNAPSHOT</version> 36 </dependency> 37 <!--spingboot--> 38 <dependency> 39 <groupId>org.springframework.boot</groupId> 40 <artifactId>spring-boot-starter</artifactId> 41 </dependency> 42 <dependency> 43 <groupId>org.springframework.boot</groupId> 44 <artifactId>spring-boot-starter-web</artifactId> 45 </dependency> 46 <dependency> 47 <groupId>org.springframework.boot</groupId> 48 <artifactId>spring-boot-starter-test</artifactId> 49 <scope>test</scope> 50 </dependency> 51 <dependency> 52 <groupId>org.springframework.boot</groupId> 53 <artifactId>spring-boot-starter-actuator</artifactId> 54 </dependency> 55 <!--datasource config--> 56 <dependency> 57 <groupId>com.alibaba</groupId> 58 <artifactId>druid</artifactId> 59 <version>1.1.18</version> 60 </dependency> 61 <dependency> 62 <groupId>org.springframework</groupId> 63 <artifactId>spring-jdbc</artifactId> 64 <version>5.1.8.RELEASE</version> 65 </dependency> 66 <dependency> 67 <groupId>mysql</groupId> 68 <artifactId>mysql-connector-java</artifactId> 69 <scope>runtime</scope> 70 </dependency> 71 <dependency> 72 <groupId>org.mybatis.spring.boot</groupId> 73 <artifactId>mybatis-spring-boot-starter</artifactId> 74 <version>1.3.2</version> 75 </dependency> 76 77 <!--nacos config--> 78 <dependency> 79 <groupId>org.springframework.cloud</groupId> 80 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 81 <version>0.9.0.RELEASE</version> 82 </dependency> 83 <!-- <dependency> 84 <groupId>com.alibaba.boot</groupId> 85 <artifactId>nacos-config-spring-boot-actuator</artifactId> 86 <version>0.2.2</version> 87 </dependency>--> 88 <!--以下配置dubbo############################################################################## --> 89 <!--dubbo config--> 90 <dependency> 91 <groupId>com.alibaba.boot</groupId> 92 <artifactId>dubbo-spring-boot-starter</artifactId> 93 <version>0.2.0</version> 94 <exclusions> 95 <exclusion> 96 <groupId>com.alibaba</groupId> 97 <artifactId>dubbo</artifactId> 98 </exclusion> 99 </exclusions> 100 </dependency> 101 <dependency> 102 <groupId>com.alibaba</groupId> 103 <artifactId>dubbo-registry-nacos</artifactId> 104 <version>0.0.1</version> 105 </dependency> 106 <dependency> 107 <groupId>com.alibaba</groupId> 108 <artifactId>dubbo</artifactId> 109 <version>2.6.5</version> 110 </dependency> 111 <!-- <dependency> 112 <groupId>com.alibaba.nacos</groupId> 113 <artifactId>nacos-client</artifactId> 114 <version>0.6.2</version> 115 </dependency>--> 116 <dependency> 117 <groupId>com.alibaba.spring</groupId> 118 <artifactId>spring-context-support</artifactId> 119 <version>1.0.2</version> 120 </dependency> 121 </dependencies> 122 <build> 123 <plugins> 124 <plugin> 125 <groupId>org.springframework.boot</groupId> 126 <artifactId>spring-boot-maven-plugin</artifactId> 127 </plugin> 128 </plugins> 129 </build> 130 131 </project>
user-service是重点,尽管连接了数据库,但是并没有写任何的dao和common,只是做个注册的小demo,该工程结构如下:
application.yml
spring: application: name: user-server ####################datasource and pool configuration start datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 123456 url: jdbc:mysql://192.168.xxx.xxx:3306/kanxxxxxxxxxxin?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false type: com.alibaba.druid.pool.DruidDataSource # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 initial-size: 5 min-idle: 5 max-active: 20 # 配置获取连接等待超时的时间 max-wait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false # 打开PSCache,并且指定每个连接上PSCache的大小 pool-prepared-statements: true # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙 max-pool-prepared-statement-per-connection-size: 20 filters: stat,wall use-global-data-source-stat: true # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 ######## nacous configuation cloud: nacos: discovery: server-addr: 127.0.0.1:8848 server: port: 7998 ## mybatis config mybatis: mapper-locations: classpath:mybatis/*Mapper.xml type-aliases-package: com.drawnblue.entity #######################################################以下配置dubbo########################################################### #dubbo: # application: # name: test # qos-enable: false # qos-port: 33333 # qos-accept-foreign-ip: false # scan: # base-packages: com.drawnblue.userservice.impl # protocol: # name: dubbo # port: -1 # registry: # address: nacos://127.0.0.1:8848
外部属性文件
dubbo.application.name = dubbo-provider-demo dubbo.registry.address = nacos://127.0.0.1:8848 dubbo.protocol.name = dubbo dubbo.protocol.port = -1 demo.service.version = 1.0.0 demo.service.name = demoService
将springboot启动类改为服务提供方的引导类
package com.drawnblue.userservice.impl; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.PropertySource; import java.io.IOException; @EnableDubbo(scanBasePackages = "com.drawnblue.userservice.impl") @PropertySource(value = "classpath:/provider-config.properties") public class UserServiceApplication { public static void main(String[] args) throws IOException { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.register(UserServiceApplication.class); context.refresh(); System.out.println("DemoService provider is starting..."); System.in.read(); } }
我们在服务提供房的接口中也采用官方示例中的方法例子,nacosTestServieImpl类(service类省略)
1 package com.drawnblue.userservice.impl; 2 3 import com.alibaba.dubbo.config.annotation.Service; 4 import com.alibaba.dubbo.rpc.RpcContext; 5 import com.drawnblue.userservice.NacosTestService; 6 import org.springframework.beans.factory.annotation.Value; 7 8 @Service(version = "${demo.service.version}",interfaceClass = NacosTestService.class) 9 public class NacosTestServiceImpl implements NacosTestService { 10 @Value("${demo.service.name}") 11 private String serviceName; 12 @Override 13 public String sayName(String name) { 14 RpcContext rpcContext = RpcContext.getContext(); 15 return String.format("Service [name :%s , port : %d] %s(\"%s\") : Hello,%s", 16 serviceName, 17 rpcContext.getLocalPort(), 18 rpcContext.getMethodName(), 19 name, 20 name); 21 } 22 }
需要注意的是该注解的service采用的是dubbo的注解,不要搞错了
一切写完后,我们就可以启动服务了,启动成功可以看到控制台如下:
D:\topbandSoft\java\jdk1.8\bin\java.exe "-javaagent:D:\IDEA\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=63778:D:\IDEA\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath D:\topbandSoft\java\jdk1.8\jre\lib\charsets.jar;D:\topbandSoft\java\jdk1.8\jre\lib\deploy.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\access-bridge-64.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\cldrdata.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\dnsns.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\jaccess.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\jfxrt.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\localedata.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\nashorn.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\sunec.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\sunjce_provider.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\sunmscapi.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\sunpkcs11.jar;D:\topbandSoft\java\jdk1.8\jre\lib\ext\zipfs.jar;D:\topbandSoft\java\jdk1.8\jre\lib\javaws.jar;D:\topbandSoft\java\jdk1.8\jre\lib\jce.jar;D:\topbandSoft\java\jdk1.8\jre\lib\jfr.jar;D:\topbandSoft\java\jdk1.8\jre\lib\jfxswt.jar;D:\topbandSoft\java\jdk1.8\jre\lib\jsse.jar;D:\topbandSoft\java\jdk1.8\jre\lib\management-agent.jar;D:\topbandSoft\java\jdk1.8\jre\lib\plugin.jar;D:\topbandSoft\java\jdk1.8\jre\lib\resources.jar;D:\topbandSoft\java\jdk1.8\jre\lib\rt.jar;G:\drawnblue\springcloud-alibaba\user-service\target\classes;G:\drawnblue\springcloud-alibaba\common\target\classes;G:\drawnblue\springcloud-alibaba\dao\target\classes;G:\drawnblue\springcloud-alibaba\user-service-api\target\classes;G:\sharp\repo\org\springframework\boot\spring-boot-starter\2.1.6.RELEASE\spring-boot-starter-2.1.6.RELEASE.jar;G:\sharp\repo\org\springframework\boot\spring-boot\2.1.6.RELEASE\spring-boot-2.1.6.RELEASE.jar;G:\sharp\repo\org\springframework\boot\spring-boot-autoconfigure\2.1.6.RELEASE\spring-boot-autoconfigure-2.1.6.RELEASE.jar;G:\sharp\repo\org\springframework\boot\spring-boot-starter-logging\2.1.6.RELEASE\spring-boot-starter-logging-2.1.6.RELEASE.jar;G:\sharp\repo\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;G:\sharp\repo\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;G:\sharp\repo\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;G:\sharp\repo\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;G:\sharp\repo\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;G:\sharp\repo\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;G:\sharp\repo\org\springframework\spring-core\5.1.8.RELEASE\spring-core-5.1.8.RELEASE.jar;G:\sharp\repo\org\springframework\spring-jcl\5.1.8.RELEASE\spring-jcl-5.1.8.RELEASE.jar;G:\sharp\repo\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;G:\sharp\repo\org\springframework\boot\spring-boot-starter-web\2.1.6.RELEASE\spring-boot-starter-web-2.1.6.RELEASE.jar;G:\sharp\repo\org\springframework\boot\spring-boot-starter-json\2.1.6.RELEASE\spring-boot-starter-json-2.1.6.RELEASE.jar;G:\sharp\repo\com\fasterxml\jackson\core\jackson-databind\2.9.9\jackson-databind-2.9.9.jar;G:\sharp\repo\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;G:\sharp\repo\com\fasterxml\jackson\core\jackson-core\2.9.9\jackson-core-2.9.9.jar;G:\sharp\repo\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.9\jackson-datatype-jdk8-2.9.9.jar;G:\sharp\repo\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.9\jackson-datatype-jsr310-2.9.9.jar;G:\sharp\repo\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.9\jackson-module-parameter-names-2.9.9.jar;G:\sharp\repo\org\springframework\boot\spring-boot-starter-tomcat\2.1.6.RELEASE\spring-boot-starter-tomcat-2.1.6.RELEASE.jar;G:\sharp\repo\org\apache\tomcat\embed\tomcat-embed-core\9.0.21\tomcat-embed-core-9.0.21.jar;G:\sharp\repo\org\apache\tomcat\embed\tomcat-embed-el\9.0.21\tomcat-embed-el-9.0.21.jar;G:\sharp\repo\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.21\tomcat-embed-websocket-9.0.21.jar;G:\sharp\repo\org\hibernate\validator\hibernate-validator\6.0.17.Final\hibernate-validator-6.0.17.Final.jar;G:\sharp\repo\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;G:\sharp\repo\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;G:\sharp\repo\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;G:\sharp\repo\org\springframework\spring-web\5.1.8.RELEASE\spring-web-5.1.8.RELEASE.jar;G:\sharp\repo\org\springframework\spring-webmvc\5.1.8.RELEASE\spring-webmvc-5.1.8.RELEASE.jar;G:\sharp\repo\org\springframework\spring-aop\5.1.8.RELEASE\spring-aop-5.1.8.RELEASE.jar;G:\sharp\repo\org\springframework\spring-expression\5.1.8.RELEASE\spring-expression-5.1.8.RELEASE.jar;G:\sharp\repo\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;G:\sharp\repo\org\springframework\boot\spring-boot-starter-actuator\2.1.6.RELEASE\spring-boot-starter-actuator-2.1.6.RELEASE.jar;G:\sharp\repo\org\springframework\boot\spring-boot-actuator-autoconfigure\2.1.6.RELEASE\spring-boot-actuator-autoconfigure-2.1.6.RELEASE.jar;G:\sharp\repo\org\springframework\boot\spring-boot-actuator\2.1.6.RELEASE\spring-boot-actuator-2.1.6.RELEASE.jar;G:\sharp\repo\io\micrometer\micrometer-core\1.1.5\micrometer-core-1.1.5.jar;G:\sharp\repo\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;G:\sharp\repo\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;G:\sharp\repo\com\alibaba\druid\1.1.18\druid-1.1.18.jar;G:\sharp\repo\org\springframework\spring-jdbc\5.1.8.RELEASE\spring-jdbc-5.1.8.RELEASE.jar;G:\sharp\repo\org\springframework\spring-beans\5.1.8.RELEASE\spring-beans-5.1.8.RELEASE.jar;G:\sharp\repo\org\springframework\spring-tx\5.1.8.RELEASE\spring-tx-5.1.8.RELEASE.jar;G:\sharp\repo\mysql\mysql-connector-java\8.0.16\mysql-connector-java-8.0.16.jar;G:\sharp\repo\org\mybatis\spring\boot\mybatis-spring-boot-starter\1.3.2\mybatis-spring-boot-starter-1.3.2.jar;G:\sharp\repo\org\springframework\boot\spring-boot-starter-jdbc\2.1.6.RELEASE\spring-boot-starter-jdbc-2.1.6.RELEASE.jar;G:\sharp\repo\com\zaxxer\HikariCP\3.2.0\HikariCP-3.2.0.jar;G:\sharp\repo\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\1.3.2\mybatis-spring-boot-autoconfigure-1.3.2.jar;G:\sharp\repo\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;G:\sharp\repo\org\mybatis\mybatis-spring\1.3.2\mybatis-spring-1.3.2.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-starter-alibaba-nacos-discovery\0.9.0.RELEASE\spring-cloud-starter-alibaba-nacos-discovery-0.9.0.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-alibaba-nacos-discovery\0.9.0.RELEASE\spring-cloud-alibaba-nacos-discovery-0.9.0.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-commons\2.1.1.RELEASE\spring-cloud-commons-2.1.1.RELEASE.jar;G:\sharp\repo\org\springframework\security\spring-security-crypto\5.1.5.RELEASE\spring-security-crypto-5.1.5.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-context\2.1.1.RELEASE\spring-cloud-context-2.1.1.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.1.1.RELEASE\spring-cloud-starter-netflix-ribbon-2.1.1.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-starter\2.1.1.RELEASE\spring-cloud-starter-2.1.1.RELEASE.jar;G:\sharp\repo\org\springframework\security\spring-security-rsa\1.0.7.RELEASE\spring-security-rsa-1.0.7.RELEASE.jar;G:\sharp\repo\org\bouncycastle\bcpkix-jdk15on\1.60\bcpkix-jdk15on-1.60.jar;G:\sharp\repo\org\bouncycastle\bcprov-jdk15on\1.60\bcprov-jdk15on-1.60.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-netflix-ribbon\2.1.1.RELEASE\spring-cloud-netflix-ribbon-2.1.1.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-netflix-archaius\2.1.1.RELEASE\spring-cloud-netflix-archaius-2.1.1.RELEASE.jar;G:\sharp\repo\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.1.1.RELEASE\spring-cloud-starter-netflix-archaius-2.1.1.RELEASE.jar;G:\sharp\repo\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;G:\sharp\repo\com\google\code\findbugs\jsr305\3.0.1\jsr305-3.0.1.jar;G:\sharp\repo\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;G:\sharp\repo\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;G:\sharp\repo\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;G:\sharp\repo\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;G:\sharp\repo\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;G:\sharp\repo\com\netflix\hystrix\hystrix-core\1.4.3\hystrix-core-1.4.3.jar;G:\sharp\repo\javax\inject\javax.inject\1\javax.inject-1.jar;G:\sharp\repo\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;G:\sharp\repo\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;G:\sharp\repo\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;G:\sharp\repo\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;G:\sharp\repo\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;G:\sharp\repo\org\apache\httpcomponents\httpclient\4.5.9\httpclient-4.5.9.jar;G:\sharp\repo\org\apache\httpcomponents\httpcore\4.4.11\httpcore-4.4.11.jar;G:\sharp\repo\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;G:\sharp\repo\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;G:\sharp\repo\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;G:\sharp\repo\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;G:\sharp\repo\com\netflix\servo\servo-core\0.10.1\servo-core-0.10.1.jar;G:\sharp\repo\com\netflix\servo\servo-internal\0.10.1\servo-internal-0.10.1.jar;G:\sharp\repo\com\netflix\netflix-commons\netflix-commons-util\0.1.1\netflix-commons-util-0.1.1.jar;G:\sharp\repo\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;G:\sharp\repo\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;G:\sharp\repo\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;G:\sharp\repo\com\alibaba\boot\dubbo-spring-boot-starter\0.2.0\dubbo-spring-boot-starter-0.2.0.jar;G:\sharp\repo\org\apache\zookeeper\zookeeper\3.4.9\zookeeper-3.4.9.jar;G:\sharp\repo\jline\jline\0.9.94\jline-0.9.94.jar;G:\sharp\repo\io\netty\netty\3.10.5.Final\netty-3.10.5.Final.jar;G:\sharp\repo\org\apache\curator\curator-framework\2.12.0\curator-framework-2.12.0.jar;G:\sharp\repo\org\apache\curator\curator-client\2.12.0\curator-client-2.12.0.jar;G:\sharp\repo\com\alibaba\boot\dubbo-spring-boot-autoconfigure\0.2.0\dubbo-spring-boot-autoconfigure-0.2.0.jar;G:\sharp\repo\com\alibaba\dubbo-registry-nacos\0.0.1\dubbo-registry-nacos-0.0.1.jar;G:\sharp\repo\com\alibaba\nacos\nacos-client\0.6.0\nacos-client-0.6.0.jar;G:\sharp\repo\com\alibaba\nacos\nacos-common\0.6.0\nacos-common-0.6.0.jar;G:\sharp\repo\commons-io\commons-io\2.2\commons-io-2.2.jar;G:\sharp\repo\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar;G:\sharp\repo\com\alibaba\nacos\nacos-api\0.6.0\nacos-api-0.6.0.jar;G:\sharp\repo\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar;G:\sharp\repo\com\google\guava\guava\19.0\guava-19.0.jar;G:\sharp\repo\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;G:\sharp\repo\org\codehaus\jackson\jackson-mapper-lgpl\1.9.6\jackson-mapper-lgpl-1.9.6.jar;G:\sharp\repo\org\codehaus\jackson\jackson-core-lgpl\1.9.6\jackson-core-lgpl-1.9.6.jar;G:\sharp\repo\com\alibaba\dubbo\2.6.5\dubbo-2.6.5.jar;G:\sharp\repo\org\springframework\spring-context\5.1.8.RELEASE\spring-context-5.1.8.RELEASE.jar;G:\sharp\repo\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;G:\sharp\repo\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;G:\sharp\repo\com\alibaba\spring\spring-context-support\1.0.2\spring-context-support-1.0.2.jar com.drawnblue.userservice.impl.UserServiceApplication 17:54:26.120 [main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@d70c109 17:54:26.138 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘org.springframework.context.annotation.internalConfigurationAnnotationProcessor‘ 17:54:26.221 [main] INFO com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ApplicationConfig#0, class : com.alibaba.dubbo.config.ApplicationConfig] has been registered. 17:54:26.223 [main] INFO com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ApplicationConfig#0] has been registered. 17:54:26.223 [main] DEBUG com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - There is no property for binding to dubbo config class [com.alibaba.dubbo.config.ModuleConfig] within prefix [dubbo.module] 17:54:26.223 [main] INFO com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.RegistryConfig#0, class : com.alibaba.dubbo.config.RegistryConfig] has been registered. 17:54:26.223 [main] INFO com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.RegistryConfig#0] has been registered. 17:54:26.223 [main] INFO com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - The dubbo config bean definition [name : com.alibaba.dubbo.config.ProtocolConfig#0, class : com.alibaba.dubbo.config.ProtocolConfig] has been registered. 17:54:26.223 [main] INFO com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - The BeanPostProcessor bean definition [com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor] for dubbo config bean [name : com.alibaba.dubbo.config.ProtocolConfig#0] has been registered. 17:54:26.224 [main] DEBUG com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - There is no property for binding to dubbo config class [com.alibaba.dubbo.config.MonitorConfig] within prefix [dubbo.monitor] 17:54:26.224 [main] DEBUG com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - There is no property for binding to dubbo config class [com.alibaba.dubbo.config.ProviderConfig] within prefix [dubbo.provider] 17:54:26.224 [main] DEBUG com.alibaba.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar - There is no property for binding to dubbo config class [com.alibaba.dubbo.config.ConsumerConfig] within prefix [dubbo.consumer] 17:54:26.249 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor#0‘ 17:54:26.281 [main] INFO com.alibaba.dubbo.common.logger.LoggerFactory - using logger: com.alibaba.dubbo.common.logger.slf4j.Slf4jLoggerAdapter 17:54:26.292 [main] INFO com.alibaba.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor - [DUBBO] BeanNameGenerator bean can‘t be found in BeanFactory with name [org.springframework.context.annotation.internalConfigurationBeanNameGenerator], dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.292 [main] INFO com.alibaba.dubbo.config.spring.beans.factory.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: 2.6.5, current host: 192.168.26.30 17:54:26.306 [main] DEBUG com.alibaba.dubbo.config.spring.context.annotation.DubboClassPathBeanDefinitionScanner - Identified candidate component class: file [G:\drawnblue\springcloud-alibaba\user-service\target\classes\com\drawnblue\userservice\impl\NacosTestServiceImpl.class] 17:54:26.309 [main] DEBUG com.alibaba.dubbo.config.spring.context.annotation.DubboClassPathBeanDefinitionScanner - Identified candidate component class: file [G:\drawnblue\springcloud-alibaba\user-service\target\classes\com\drawnblue\userservice\impl\NacosTestServiceImpl.class] 17:54:26.317 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Found key ‘demo.service.version‘ in PropertySource ‘class path resource [provider-config.properties]‘ with value of type String 17:54:26.319 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Found key ‘demo.service.version‘ in PropertySource ‘class path resource [provider-config.properties]‘ with value of type String 17:54:26.319 [main] WARN com.alibaba.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor - [DUBBO] The BeanDefinition[Root bean: class [com.alibaba.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 : ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.319 [main] INFO com.alibaba.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor - [DUBBO] 1 annotated Dubbo‘s @Service Components { [Bean definition with name ‘nacosTestServiceImpl‘: Generic bean: class [com.drawnblue.userservice.impl.NacosTestServiceImpl]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in file [G:\drawnblue\springcloud-alibaba\user-service\target\classes\com\drawnblue\userservice\impl\NacosTestServiceImpl.class]] } were scanned under package[com.drawnblue.userservice.impl], dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.321 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘org.springframework.context.event.internalEventListenerProcessor‘ 17:54:26.323 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘org.springframework.context.event.internalEventListenerFactory‘ 17:54:26.325 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘org.springframework.context.annotation.internalAutowiredAnnotationProcessor‘ 17:54:26.326 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘org.springframework.context.annotation.internalCommonAnnotationProcessor‘ 17:54:26.332 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘referenceAnnotationBeanPostProcessor‘ 17:54:26.338 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor#0‘ 17:54:26.391 [main] DEBUG com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor - DubboConfigBinder Bean can‘t be found in ApplicationContext. 17:54:26.392 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor#1‘ 17:54:26.393 [main] DEBUG com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor - DubboConfigBinder Bean can‘t be found in ApplicationContext. 17:54:26.393 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor#2‘ 17:54:26.396 [main] DEBUG com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor - DubboConfigBinder Bean can‘t be found in ApplicationContext. 17:54:26.402 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘userServiceApplication‘ 17:54:26.403 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.spring.context.annotation.DubboConfigConfiguration$Single‘ 17:54:26.405 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.ApplicationConfig#0‘ 17:54:26.482 [main] INFO com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.ApplicationConfig#0] have been binding by prefix of configuration properties : dubbo.application 17:54:26.482 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.RegistryConfig#0‘ 17:54:26.487 [main] INFO com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.RegistryConfig#0] have been binding by prefix of configuration properties : dubbo.registry 17:54:26.487 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘com.alibaba.dubbo.config.ProtocolConfig#0‘ 17:54:26.496 [main] INFO com.alibaba.dubbo.config.spring.beans.factory.annotation.DubboConfigBindingBeanPostProcessor - The properties of bean [name : com.alibaba.dubbo.config.ProtocolConfig#0] have been binding by prefix of configuration properties : dubbo.protocol 17:54:26.496 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘nacosTestServiceImpl‘ 17:54:26.499 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Found key ‘demo.service.name‘ in PropertySource ‘class path resource [provider-config.properties]‘ with value of type String 17:54:26.506 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean ‘ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0‘ 17:54:26.561 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.rpc; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class Protocol$Adaptive implements com.alibaba.dubbo.rpc.Protocol { public void destroy() {throw new UnsupportedOperationException("method public abstract void com.alibaba.dubbo.rpc.Protocol.destroy() of interface com.alibaba.dubbo.rpc.Protocol is not adaptive method!"); } public int getDefaultPort() {throw new UnsupportedOperationException("method public abstract int com.alibaba.dubbo.rpc.Protocol.getDefaultPort() of interface com.alibaba.dubbo.rpc.Protocol is not adaptive method!"); } public com.alibaba.dubbo.rpc.Exporter export(com.alibaba.dubbo.rpc.Invoker arg0) throws com.alibaba.dubbo.rpc.RpcException { if (arg0 == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument == null"); if (arg0.getUrl() == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument getUrl() == null");com.alibaba.dubbo.common.URL url = arg0.getUrl(); String extName = ( url.getProtocol() == null ? "dubbo" : url.getProtocol() ); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.Protocol) name from url(" + url.toString() + ") use keys([protocol])"); com.alibaba.dubbo.rpc.Protocol extension = (com.alibaba.dubbo.rpc.Protocol)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.Protocol.class).getExtension(extName); return extension.export(arg0); } public com.alibaba.dubbo.rpc.Invoker refer(java.lang.Class arg0, com.alibaba.dubbo.common.URL arg1) throws com.alibaba.dubbo.rpc.RpcException { if (arg1 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg1; String extName = ( url.getProtocol() == null ? "dubbo" : url.getProtocol() ); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.Protocol) name from url(" + url.toString() + ") use keys([protocol])"); com.alibaba.dubbo.rpc.Protocol extension = (com.alibaba.dubbo.rpc.Protocol)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.Protocol.class).getExtension(extName); return extension.refer(arg0, arg1); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.571 [main] WARN com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory - [DUBBO] No spring extension (bean) named:defaultCompiler, try to find an extension (bean) of type java.lang.String, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.575 [main] WARN com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory - [DUBBO] No spring extension (bean) named:defaultCompiler, type:java.lang.String found, stop get bean., dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.732 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.rpc; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class ProxyFactory$Adaptive implements com.alibaba.dubbo.rpc.ProxyFactory { public com.alibaba.dubbo.rpc.Invoker getInvoker(java.lang.Object arg0, java.lang.Class arg1, com.alibaba.dubbo.common.URL arg2) throws com.alibaba.dubbo.rpc.RpcException { if (arg2 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg2; String extName = url.getParameter("proxy", "javassist"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.ProxyFactory) name from url(" + url.toString() + ") use keys([proxy])"); com.alibaba.dubbo.rpc.ProxyFactory extension = (com.alibaba.dubbo.rpc.ProxyFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.ProxyFactory.class).getExtension(extName); return extension.getInvoker(arg0, arg1, arg2); } public java.lang.Object getProxy(com.alibaba.dubbo.rpc.Invoker arg0, boolean arg1) throws com.alibaba.dubbo.rpc.RpcException { if (arg0 == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument == null"); if (arg0.getUrl() == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument getUrl() == null");com.alibaba.dubbo.common.URL url = arg0.getUrl(); String extName = url.getParameter("proxy", "javassist"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.ProxyFactory) name from url(" + url.toString() + ") use keys([proxy])"); com.alibaba.dubbo.rpc.ProxyFactory extension = (com.alibaba.dubbo.rpc.ProxyFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.ProxyFactory.class).getExtension(extName); return extension.getProxy(arg0, arg1); } public java.lang.Object getProxy(com.alibaba.dubbo.rpc.Invoker arg0) throws com.alibaba.dubbo.rpc.RpcException { if (arg0 == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument == null"); if (arg0.getUrl() == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.Invoker argument getUrl() == null");com.alibaba.dubbo.common.URL url = arg0.getUrl(); String extName = url.getParameter("proxy", "javassist"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.ProxyFactory) name from url(" + url.toString() + ") use keys([proxy])"); com.alibaba.dubbo.rpc.ProxyFactory extension = (com.alibaba.dubbo.rpc.ProxyFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.ProxyFactory.class).getExtension(extName); return extension.getProxy(arg0); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.806 [main] INFO com.alibaba.dubbo.config.AbstractConfig - [DUBBO] The service ready on spring started. service: com.drawnblue.userservice.NacosTestService, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.859 [main] WARN com.alibaba.dubbo.config.AbstractConfig - [DUBBO] Use random available port(20880) for protocol dubbo, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.894 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.cache; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class CacheFactory$Adaptive implements com.alibaba.dubbo.cache.CacheFactory { public com.alibaba.dubbo.cache.Cache getCache(com.alibaba.dubbo.common.URL arg0, com.alibaba.dubbo.rpc.Invocation arg1) { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; if (arg1 == null) throw new IllegalArgumentException("invocation == null"); String methodName = arg1.getMethodName(); String extName = url.getMethodParameter(methodName, "cache", "lru"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.cache.CacheFactory) name from url(" + url.toString() + ") use keys([cache])"); com.alibaba.dubbo.cache.CacheFactory extension = (com.alibaba.dubbo.cache.CacheFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.cache.CacheFactory.class).getExtension(extName); return extension.getCache(arg0, arg1); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.910 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.monitor; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class MonitorFactory$Adaptive implements com.alibaba.dubbo.monitor.MonitorFactory { public com.alibaba.dubbo.monitor.Monitor getMonitor(com.alibaba.dubbo.common.URL arg0) { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = ( url.getProtocol() == null ? "dubbo" : url.getProtocol() ); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.monitor.MonitorFactory) name from url(" + url.toString() + ") use keys([protocol])"); com.alibaba.dubbo.monitor.MonitorFactory extension = (com.alibaba.dubbo.monitor.MonitorFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.monitor.MonitorFactory.class).getExtension(extName); return extension.getMonitor(arg0); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.939 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.validation; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class Validation$Adaptive implements com.alibaba.dubbo.validation.Validation { public com.alibaba.dubbo.validation.Validator getValidator(com.alibaba.dubbo.common.URL arg0) { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = url.getParameter("validation", "jvalidation"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.validation.Validation) name from url(" + url.toString() + ") use keys([validation])"); com.alibaba.dubbo.validation.Validation extension = (com.alibaba.dubbo.validation.Validation)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.validation.Validation.class).getExtension(extName); return extension.getValidator(arg0); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.947 [main] INFO com.alibaba.dubbo.config.AbstractConfig - [DUBBO] Export dubbo service com.drawnblue.userservice.NacosTestService to local registry, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.947 [main] INFO com.alibaba.dubbo.config.AbstractConfig - [DUBBO] Export dubbo service com.drawnblue.userservice.NacosTestService to url dubbo://192.168.26.30:20880/com.drawnblue.userservice.NacosTestService?anyhost=true&application=dubbo-provider-demo&bean.name=ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0&bind.ip=192.168.26.30&bind.port=20880&dubbo=2.0.2&generic=false&interface=com.drawnblue.userservice.NacosTestService&methods=sayName&pid=10932&revision=1.0.0&side=provider×tamp=1564480466829&version=1.0.0, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.947 [main] INFO com.alibaba.dubbo.config.AbstractConfig - [DUBBO] Register dubbo service com.drawnblue.userservice.NacosTestService url dubbo://192.168.26.30:20880/com.drawnblue.userservice.NacosTestService?anyhost=true&application=dubbo-provider-demo&bean.name=ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0&bind.ip=192.168.26.30&bind.port=20880&dubbo=2.0.2&generic=false&interface=com.drawnblue.userservice.NacosTestService&methods=sayName&pid=10932&revision=1.0.0&side=provider×tamp=1564480466829&version=1.0.0 to registry registry://127.0.0.1:8848/com.alibaba.dubbo.registry.RegistryService?application=dubbo-provider-demo&dubbo=2.0.2&pid=10932®istry=nacos×tamp=1564480466820, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.953 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.rpc.cluster; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class Cluster$Adaptive implements com.alibaba.dubbo.rpc.cluster.Cluster { public com.alibaba.dubbo.rpc.Invoker join(com.alibaba.dubbo.rpc.cluster.Directory arg0) throws com.alibaba.dubbo.rpc.RpcException { if (arg0 == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.cluster.Directory argument == null"); if (arg0.getUrl() == null) throw new IllegalArgumentException("com.alibaba.dubbo.rpc.cluster.Directory argument getUrl() == null");com.alibaba.dubbo.common.URL url = arg0.getUrl(); String extName = url.getParameter("cluster", "failover"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.cluster.Cluster) name from url(" + url.toString() + ") use keys([cluster])"); com.alibaba.dubbo.rpc.cluster.Cluster extension = (com.alibaba.dubbo.rpc.cluster.Cluster)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.cluster.Cluster.class).getExtension(extName); return extension.join(arg0); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.961 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.registry; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class RegistryFactory$Adaptive implements com.alibaba.dubbo.registry.RegistryFactory { public com.alibaba.dubbo.registry.Registry getRegistry(com.alibaba.dubbo.common.URL arg0) { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = ( url.getProtocol() == null ? "dubbo" : url.getProtocol() ); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.registry.RegistryFactory) name from url(" + url.toString() + ") use keys([protocol])"); com.alibaba.dubbo.registry.RegistryFactory extension = (com.alibaba.dubbo.registry.RegistryFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.registry.RegistryFactory.class).getExtension(extName); return extension.getRegistry(arg0); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:26.969 [main] WARN com.alibaba.dubbo.qos.protocol.QosProtocolWrapper - [DUBBO] Fail to start qos server: , dubbo version: 2.6.5, current host: 192.168.26.30 java.lang.NoClassDefFoundError: io/netty/channel/EventLoopGroup at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.startQosServer(QosProtocolWrapper.java:95) at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:59) at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:55) at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:98) at com.alibaba.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:513) at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:358) at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:317) at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:216) at com.alibaba.dubbo.config.spring.ServiceBean.export(ServiceBean.java:291) at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:131) at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:53) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:402) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:359) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:896) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) at com.drawnblue.userservice.impl.UserServiceApplication.main(UserServiceApplication.java:17) Caused by: java.lang.ClassNotFoundException: io.netty.channel.EventLoopGroup at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 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) ... 20 common frames omitted 17:54:27.069 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.remoting; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class Transporter$Adaptive implements com.alibaba.dubbo.remoting.Transporter { public com.alibaba.dubbo.remoting.Client connect(com.alibaba.dubbo.common.URL arg0, com.alibaba.dubbo.remoting.ChannelHandler arg1) throws com.alibaba.dubbo.remoting.RemotingException { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = url.getParameter("client", url.getParameter("transporter", "netty")); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.remoting.Transporter) name from url(" + url.toString() + ") use keys([client, transporter])"); com.alibaba.dubbo.remoting.Transporter extension = (com.alibaba.dubbo.remoting.Transporter)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.remoting.Transporter.class).getExtension(extName); return extension.connect(arg0, arg1); } public com.alibaba.dubbo.remoting.Server bind(com.alibaba.dubbo.common.URL arg0, com.alibaba.dubbo.remoting.ChannelHandler arg1) throws com.alibaba.dubbo.remoting.RemotingException { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = url.getParameter("server", url.getParameter("transporter", "netty")); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.remoting.Transporter) name from url(" + url.toString() + ") use keys([server, transporter])"); com.alibaba.dubbo.remoting.Transporter extension = (com.alibaba.dubbo.remoting.Transporter)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.remoting.Transporter.class).getExtension(extName); return extension.bind(arg0, arg1); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.101 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.remoting; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class Dispatcher$Adaptive implements com.alibaba.dubbo.remoting.Dispatcher { public com.alibaba.dubbo.remoting.ChannelHandler dispatch(com.alibaba.dubbo.remoting.ChannelHandler arg0, com.alibaba.dubbo.common.URL arg1) { if (arg1 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg1; String extName = url.getParameter("dispatcher", url.getParameter("dispather", url.getParameter("channel.handler", "all"))); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.remoting.Dispatcher) name from url(" + url.toString() + ") use keys([dispatcher, dispather, channel.handler])"); com.alibaba.dubbo.remoting.Dispatcher extension = (com.alibaba.dubbo.remoting.Dispatcher)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.remoting.Dispatcher.class).getExtension(extName); return extension.dispatch(arg0, arg1); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.109 [main] DEBUG com.alibaba.dubbo.common.extension.ExtensionLoader - [DUBBO] package com.alibaba.dubbo.common.threadpool; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class ThreadPool$Adaptive implements com.alibaba.dubbo.common.threadpool.ThreadPool { public java.util.concurrent.Executor getExecutor(com.alibaba.dubbo.common.URL arg0) { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = url.getParameter("threadpool", "fixed"); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.common.threadpool.ThreadPool) name from url(" + url.toString() + ") use keys([threadpool])"); com.alibaba.dubbo.common.threadpool.ThreadPool extension = (com.alibaba.dubbo.common.threadpool.ThreadPool)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.common.threadpool.ThreadPool.class).getExtension(extName); return extension.getExecutor(arg0); } }, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.166 [main] DEBUG org.jboss.netty.channel.socket.nio.SelectorUtil - [DUBBO] Using select timeout of 500, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.166 [main] DEBUG org.jboss.netty.channel.socket.nio.SelectorUtil - [DUBBO] Epoll-bug workaround enabled = false, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.341 [main] INFO com.alibaba.dubbo.remoting.transport.AbstractServer - [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /192.168.26.30:20880, dubbo version: 2.6.5, current host: 192.168.26.30 Tue Jul 30 17:54:27 CST 2019 sun.misc.Launcher$AppClassLoader@18b4aac2 JM.Log:INFO Init JM logger with Slf4jLoggerFactory success, sun.misc.Launcher$AppClassLoader@18b4aac2 Tue Jul 30 17:54:27 CST 2019 sun.misc.Launcher$AppClassLoader@18b4aac2 JM.Log:INFO Log root path: C:\Users\Administrator\logsTue Jul 30 17:54:27 CST 2019 sun.misc.Launcher$AppClassLoader@18b4aac2 JM.Log:INFO Set nacos log path: C:\Users\Administrator\logs\nacos 17:54:27.393 [main] INFO com.alibaba.dubbo.registry.nacos.NacosRegistry - [DUBBO] Register: dubbo://192.168.26.30:20880/com.drawnblue.userservice.NacosTestService?anyhost=true&application=dubbo-provider-demo&bean.name=ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0&dubbo=2.0.2&generic=false&interface=com.drawnblue.userservice.NacosTestService&methods=sayName&pid=10932&revision=1.0.0&side=provider×tamp=1564480466829&version=1.0.0, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.490 [main] INFO com.alibaba.dubbo.registry.nacos.NacosRegistry - [DUBBO] Subscribe: provider://192.168.26.30:20880/com.drawnblue.userservice.NacosTestService?anyhost=true&application=dubbo-provider-demo&bean.name=ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0&category=configurators&check=false&dubbo=2.0.2&generic=false&interface=com.drawnblue.userservice.NacosTestService&methods=sayName&pid=10932&revision=1.0.0&side=provider×tamp=1564480466829&version=1.0.0, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.550 [main] WARN com.alibaba.dubbo.registry.nacos.NacosRegistry - [DUBBO] Ignore empty notify urls for subscribe url provider://192.168.26.30:20880/com.drawnblue.userservice.NacosTestService?anyhost=true&application=dubbo-provider-demo&bean.name=ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0&category=configurators&check=false&dubbo=2.0.2&generic=false&interface=com.drawnblue.userservice.NacosTestService&methods=sayName&pid=10932&revision=1.0.0&side=provider×tamp=1564480466829&version=1.0.0, dubbo version: 2.6.5, current host: 192.168.26.30 17:54:27.560 [com.alibaba.nacos.naming.client.listener] WARN com.alibaba.dubbo.registry.nacos.NacosRegistry - [DUBBO] Ignore empty notify urls for subscribe url provider://192.168.26.30:20880/com.drawnblue.userservice.NacosTestService?anyhost=true&application=dubbo-provider-demo&bean.name=ServiceBean:com.drawnblue.userservice.NacosTestService:1.0.0&category=configurators&check=false&dubbo=2.0.2&generic=false&interface=com.drawnblue.userservice.NacosTestService&methods=sayName&pid=10932&revision=1.0.0&side=provider×tamp=1564480466829&version=1.0.0, dubbo version: 2.6.5, current host: 192.168.26.30 DemoService provider is starting...
然后登陆nacos控制台查看
点击详情查看如下:
至此,服务注册到nacos上了,后面就可以整合spring-cloud-alibaba的其他的功能了。
在这个过程中刚开始服务总是注册不上,最后还是看官方文档来解决了,所以做示例时,如果出现困难一定看官方文档,认真去看
https://nacos.io/zh-cn/docs/use-nacos-with-dubbo.html
springboot,dubbo,nacos,spring-cloud-alibaba的整合
原文:https://www.cnblogs.com/xiaoyao-001/p/11271583.html