第二章:Dubbo整合maven+spring+springmvc+mybatis之服务提供者搭建

来源:互联网 发布:医院预约挂号系统源码 编辑:程序博客网 时间:2024/05/27 10:43

1、ivan-api工程:

pom.xml文件配置如下,请根据自身工程情况修改:

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>ivan</groupId>  
  6.     <artifactId>ivan-api</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>ivan-api</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.     </properties>  
  16.   
  17.     <dependencies>  
  18.         <dependency>  
  19.             <groupId>junit</groupId>  
  20.             <artifactId>junit</artifactId>  
  21.             <version>3.8.1</version>  
  22.             <scope>test</scope>  
  23.         </dependency>  
  24.   
  25.         <dependency>  
  26.             <groupId>ivan</groupId>  
  27.             <artifactId>ivan-entity</artifactId>  
  28.             <version>0.0.1-SNAPSHOT</version>  
  29.         </dependency>  
  30.   
  31.     </dependencies>  
  32. </project>  

创建接口类,用于dubbo服务接口的暴露与消费者注入使用:

UserService.Java

[java] view plain copy
 print?
  1. import java.util.List;  
  2. import com.ivan.entity.User;  
  3.   
  4. public interface UserService {  
  5.     List<User> getUsers();  
  6.     User getUserByPrimaryKey(String id);  
  7. }  

2、ivan-entity工程搭建,用于存放数据库映射的实体,后期存放model及formBean:


pom.xml

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5. <groupId>ivan</groupId>  
  6.   <artifactId>ivan-entity</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>jar</packaging>  
  9.   
  10.   <name>ivan-entity</name>  
  11.   <url>http://maven.apache.org</url>  
  12.   
  13.   <properties>  
  14.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.   </properties>  
  16.   
  17.   <dependencies>  
  18.     <dependency>  
  19.       <groupId>junit</groupId>  
  20.       <artifactId>junit</artifactId>  
  21.       <version>3.8.1</version>  
  22.       <scope>test</scope>  
  23.     </dependency>  
  24.   </dependencies>  
  25. </project>  

创建实体User

[java] view plain copy
 print?
  1. import java.io.Serializable;  
  2.   
  3. public class User implements Serializable{  
  4.     /** 
  5.      *  
  6.      */  
  7.     private static final long serialVersionUID = -5451685937793368311L;  
  8.       
  9.     private String id;  
  10.     private String nickyName;  
  11.     private String pwd;  
  12.       
  13.     public User(String id,String nickyName,String pwd){  
  14.         this.id = id;  
  15.         this.nickyName = nickyName;  
  16.         this.pwd = pwd;  
  17.     }  
  18.       
  19.     public String getId() {  
  20.         return id;  
  21.     }  
  22.     public void setId(String id) {  
  23.         this.id = id;  
  24.     }  
  25.     public String getNickyName() {  
  26.         return nickyName;  
  27.     }  
  28.     public void setNickyName(String nickyName) {  
  29.         this.nickyName = nickyName;  
  30.     }  
  31.     public String getPwd() {  
  32.         return pwd;  
  33.     }  
  34.     public void setPwd(String pwd) {  
  35.         this.pwd = pwd;  
  36.     }  
  37.   
  38.     @Override  
  39.     public String toString() {  
  40.         return "User [id=" + id + ", nickyName=" + nickyName + ", pwd=" + pwd  
  41.                 + "]";  
  42.     }  
  43. }  

3、ivan-core工程,用于存放第三方jar包,后期存放公共Utils工具类(目前还未加入公共工具类,只有一个pom.xml),不依赖任何其他工程:


pom.xml

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>ivan</groupId>  
  6.     <artifactId>ivan-core</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>ivan-core</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.         <spring.version>4.1.4.RELEASE</spring.version>  
  16.         <jackson.version>2.5.0</jackson.version>  
  17.     </properties>  
  18.   
  19.     <dependencies>  
  20.         <dependency>  
  21.             <groupId>junit</groupId>  
  22.             <artifactId>junit</artifactId>  
  23.             <version>3.8.1</version>  
  24.             <scope>test</scope>  
  25.         </dependency>  
  26.   
  27.         <!-- spring -->  
  28.         <dependency>  
  29.             <groupId>org.springframework</groupId>  
  30.             <artifactId>spring-core</artifactId>  
  31.             <version>${spring.version}</version>  
  32.         </dependency>  
  33.   
  34.         <dependency>  
  35.             <groupId>org.springframework</groupId>  
  36.             <artifactId>spring-beans</artifactId>  
  37.             <version>${spring.version}</version>  
  38.         </dependency>  
  39.   
  40.         <dependency>  
  41.             <groupId>org.springframework</groupId>  
  42.             <artifactId>spring-context</artifactId>  
  43.             <version>${spring.version}</version>  
  44.         </dependency>  
  45.   
  46.         <dependency>  
  47.             <groupId>org.springframework</groupId>  
  48.             <artifactId>spring-tx</artifactId>  
  49.             <version>${spring.version}</version>  
  50.         </dependency>  
  51.   
  52.         <dependency>  
  53.             <groupId>org.springframework</groupId>  
  54.             <artifactId>spring-web</artifactId>  
  55.             <version>${spring.version}</version>  
  56.         </dependency>  
  57.   
  58.         <dependency>  
  59.             <groupId>org.springframework</groupId>  
  60.             <artifactId>spring-webmvc</artifactId>  
  61.             <version>${spring.version}</version>  
  62.         </dependency>  
  63.   
  64.         <dependency>  
  65.             <groupId>org.springframework</groupId>  
  66.             <artifactId>spring-jdbc</artifactId>  
  67.             <version>${spring.version}</version>  
  68.         </dependency>  
  69.   
  70.         <dependency>  
  71.             <groupId>org.springframework</groupId>  
  72.             <artifactId>spring-test</artifactId>  
  73.             <version>${spring.version}</version>  
  74.             <scope>test</scope>  
  75.         </dependency>  
  76.   
  77.         <dependency>  
  78.             <groupId>com.alibaba</groupId>  
  79.             <artifactId>dubbo</artifactId>  
  80.             <version>2.5.3</version>  
  81.             <exclusions>  
  82.                 <exclusion>  
  83.                     <artifactId>spring</artifactId>  
  84.                     <groupId>org.springframework</groupId>  
  85.                 </exclusion>  
  86.             </exclusions>  
  87.         </dependency>  
  88.         <dependency>  
  89.             <groupId>org.apache.zookeeper</groupId>  
  90.             <artifactId>zookeeper</artifactId>  
  91.             <version>3.4.6</version>  
  92.         </dependency>  
  93.   
  94.         <dependency>  
  95.             <groupId>com.netflix.curator</groupId>  
  96.             <artifactId>curator-framework</artifactId>  
  97.             <version>1.1.10</version>  
  98.         </dependency>  
  99.   
  100.         <dependency>  
  101.             <groupId>com.101tec</groupId>  
  102.             <artifactId>zkclient</artifactId>  
  103.             <version>0.6</version>  
  104.         </dependency>  
  105.           
  106.         <!-- servlet -->  
  107.         <dependency>  
  108.             <groupId>javax.servlet</groupId>  
  109.             <artifactId>servlet-api</artifactId>  
  110.             <version>3.0-alpha-1</version>  
  111.             <scope>test</scope>  
  112.         </dependency>  
  113.   
  114.         <dependency>  
  115.             <groupId>javax.servlet</groupId>  
  116.             <artifactId>jstl</artifactId>  
  117.             <version>1.2</version>  
  118.         </dependency>  
  119.   
  120.         <!-- mybatis 包 -->  
  121.         <dependency>  
  122.             <groupId>org.mybatis</groupId>  
  123.             <artifactId>mybatis</artifactId>  
  124.             <version>3.2.8</version>  
  125.         </dependency>  
  126.   
  127.         <!--mybatis spring 插件 -->  
  128.         <dependency>  
  129.             <groupId>org.mybatis</groupId>  
  130.             <artifactId>mybatis-spring</artifactId>  
  131.             <version>1.2.2</version>  
  132.         </dependency>  
  133.   
  134.         <!-- mysql连接 -->  
  135.         <dependency>  
  136.             <groupId>mysql</groupId>  
  137.             <artifactId>mysql-connector-java</artifactId>  
  138.             <version>5.1.34</version>  
  139.         </dependency>  
  140.   
  141.         <!-- 数据源 -->  
  142.         <dependency>  
  143.             <groupId>com.alibaba</groupId>  
  144.             <artifactId>druid</artifactId>  
  145.             <version>1.0.12</version>  
  146.         </dependency>  
  147.   
  148.         <dependency>  
  149.             <groupId>org.aspectj</groupId>  
  150.             <artifactId>aspectjweaver</artifactId>  
  151.             <version>1.8.4</version>  
  152.         </dependency>  
  153.   
  154.         <!-- json -->  
  155.         <dependency>  
  156.             <groupId>org.codehaus.jackson</groupId>  
  157.             <artifactId>jackson-mapper-asl</artifactId>  
  158.             <version>1.9.13</version>  
  159.         </dependency>  
  160.   
  161.         <dependency>  
  162.             <groupId>com.alibaba</groupId>  
  163.             <artifactId>fastjson</artifactId>  
  164.             <version>1.2.3</version>  
  165.         </dependency>  
  166.   
  167.         <dependency>  
  168.             <groupId>com.fasterxml.jackson.core</groupId>  
  169.             <artifactId>jackson-annotations</artifactId>  
  170.             <version>${jackson.version}</version>  
  171.         </dependency>  
  172.   
  173.         <dependency>  
  174.             <groupId>com.fasterxml.jackson.core</groupId>  
  175.             <artifactId>jackson-core</artifactId>  
  176.             <version>${jackson.version}</version>  
  177.         </dependency>  
  178.   
  179.         <dependency>  
  180.             <groupId>com.fasterxml.jackson.core</groupId>  
  181.             <artifactId>jackson-databind</artifactId>  
  182.             <version>${jackson.version}</version>  
  183.         </dependency>  
  184.         <!-- 文件上传 -->  
  185.         <dependency>  
  186.             <groupId>commons-io</groupId>  
  187.             <artifactId>commons-io</artifactId>  
  188.             <version>2.4</version>  
  189.         </dependency>  
  190.   
  191.         <dependency>  
  192.             <groupId>commons-fileupload</groupId>  
  193.             <artifactId>commons-fileupload</artifactId>  
  194.             <version>1.2.2</version>  
  195.         </dependency>  
  196.     </dependencies>  
  197. </project>  

4、ivan-dubbo-server工程搭建,服务提供者启动类,这里用于测试实现了ivan-api中的接口,可单独建立业务模块,依赖ivan-api、ivan-core:


pom.xml

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <span style="color:#FF9966;"><groupId>ivan</groupId>  
  6.     <artifactId>ivan-dubbo-server</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version></span>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>ivan-dubbo-server</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.     </properties>  
  16.   
  17.     <dependencies>  
  18.         <dependency>  
  19.             <groupId>junit</groupId>  
  20.             <artifactId>junit</artifactId>  
  21.             <version>3.8.1</version>  
  22.             <scope>test</scope>  
  23.         </dependency>  
  24.   
  25.         <dependency>  
  26.             <groupId>ivan</groupId>  
  27.             <artifactId>ivan-core</artifactId>  
  28.             <version>0.0.1-SNAPSHOT</version>  
  29.         </dependency>  
  30.   
  31.         <dependency>  
  32.             <groupId>ivan</groupId>  
  33.             <artifactId>ivan-api</artifactId>  
  34.             <version>0.0.1-SNAPSHOT</version>  
  35.         </dependency>  
  36.   
  37.     </dependencies>  
  38. </project>  

创建spring-registry.xml文件,用于阐述暴露服务、注册中心及使用的协议等

[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans          
  5.     http://www.springframework.org/schema/beans/spring-beans.xsd          
  6.     http://code.alibabatech.com/schema/dubbo          
  7.     http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  8.   
  9.     <!-- 提供方应用信息,用于计算依赖关系 -->  
  10.     <dubbo:application name="ivan-dubbo-server" />  
  11.   
  12.     <!-- 使用zookeeper广播注册中心暴露服务地址 -->  
  13.     <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />  
  14.     
  15.     <!-- 用dubbo协议在20880端口暴露服务 -->  
  16.     <dubbo:protocol name="dubbo" port="20880" />  
  17.     <!--   
  18.         官方注释:扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类。  
  19.         测试发现:此处package不填写包名会无法注册Service,扫描全包需填写包首即可或者填写至类的上一级目录。  
  20.      -->  
  21.     <dubbo:annotation package="com" />  
  22. </beans>  

为了方便排错,配置log4j.properties文件:

[html] view plain copy
 print?
  1. ### set log levels ###  
  2. log4j.rootLogger = INFO , C , D , E   
  3.   
  4. ### console ###  
  5. log4j.appender.C = org.apache.log4j.ConsoleAppender  
  6. log4j.appender.C.Target = System.out  
  7. log4j.appender.C.layout = org.apache.log4j.PatternLayout  
  8. log4j.appender.C.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  9.   
  10. ### log file ###  
  11. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
  12. log4j.appender.D.File = ../logs/ServerManager-Info.log  
  13. log4j.appender.D.Append = true  
  14. log4j.appender.D.Threshold = INFO   
  15. log4j.appender.D.layout = org.apache.log4j.PatternLayout  
  16. log4j.appender.D.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  17.   
  18. ### exception ###  
  19. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  
  20. log4j.appender.E.File = ../logs/ServerManager-Error.log  
  21. log4j.appender.E.Append = true  
  22. log4j.appender.E.Threshold = ERROR   
  23. log4j.appender.E.layout = org.apache.log4j.PatternLayout  
  24. log4j.appender.E.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  

创建启动类,并加载spring-registry.xml文件,这是一个比较简单的启动类,各位看官可自行扩展一下

[java] view plain copy
 print?
  1. import java.io.IOException;  
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  3.   
  4. public class ServerMain {  
  5.       
  6.     public static void main(String[] args) throws IOException {  
  7.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  8.                 new String[] { "spring-registry.xml" });  
  9.         context.start();  
  10.   
  11.         System.in.read(); // 按任意键退出  
  12.     }  
  13. }  


创建业务实现类,实现ivan-api中的UserService接口(注意:@Service中若存在其他属性如version,在消费者使用时,一定要匹配上,否则消费者无法找到服务提供者提供的信息)

[java] view plain copy
 print?
  1. import java.io.IOException;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4.   
  5. import org.slf4j.Logger;  
  6. import org.slf4j.LoggerFactory;  
  7.   
  8. import com.alibaba.dubbo.common.json.JSON;  
  9. import com.alibaba.dubbo.config.annotation.Service;  
  10. import com.ivan.api.dubbo.UserService;  
  11. import com.ivan.entity.User;  
  12.   
  13. @Service  
  14. public class UserServiceImpl implements UserService {  
  15.   
  16.     private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);  
  17.       
  18.     public List<User> getUsers() {  
  19.         logger.info("开始查询所有用户信息");  
  20.           
  21.         List<User> listUser = new ArrayList<User>();  
  22.         User user1 = new User("1","ivan","123456");  
  23.         User user2 = new User("2","jack","123456");  
  24.           
  25.         listUser.add(user1);  
  26.         listUser.add(user2);  
  27.         try {  
  28.             logger.info("查询结果:" + JSON.json(listUser));  
  29.         } catch (IOException e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.         logger.info("查询结束");  
  33.         return listUser;  
  34.     }  
  35.   
  36.     public User getUserByPrimaryKey(String id) {  
  37.         User user = new User("1","ivan","123456");  
  38.         logger.info("开始查询用户信息,查询条件ID为:"+id);  
  39.         logger.info("查询结果:" + user.toString());  
  40.         return user;  
  41.     }  
  42.   
  43. }  

至此,服务提供者已经搭建完成了,可以运行ServerMain来启动服务(前提你的注册中心zookeeper已经启动成功了),查看日志没有报错或者使用zookeeper监控软件查看发布的服务是否已经注册成功了?

这是我的启动成功日志:

[javascript] view plain copy
 print?
  1. [INFO] [2015-11-11 13:05:27] org.springframework.context.support.AbstractApplicationContext.prepareRefresh(510) | Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@26061947: startup date [Wed Nov 11 13:05:27 CST 2015]; root of context hierarchy  
  2. [INFO] [2015-11-11 13:05:27] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(317) | Loading XML bean definitions from class path resource [spring-registry.xml]  
  3. [INFO] [2015-11-11 13:05:27] ?.?(?) | using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter  
  4. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.config.ServiceConfig.exportLocal(510) |  [DUBBO] Export dubbo service com.ivan.api.dubbo.UserService to local registry, dubbo version: 2.5.3, current host: 127.0.0.1  
  5. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(470) |  [DUBBO] Export dubbo service com.ivan.api.dubbo.UserService to url dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, dubbo version: 2.5.3, current host: 127.0.0.1  
  6. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(481) |  [DUBBO] Register dubbo service com.ivan.api.dubbo.UserService url dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224 to registry registry://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=ivan-dubbo-server&dubbo=2.5.3&pid=5240&registry=zookeeper×tamp=1447218329210, dubbo version: 2.5.3, current host: 127.0.0.1  
  7. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(69) |  [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /192.168.203.144:20880, dubbo version: 2.5.3, current host: 127.0.0.1  
  8. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.loadProperties(232) |  [DUBBO] Load registry store file C:\Users\ivan\.dubbo\dubbo-registry-127.0.0.1.cache, data: {com.ivan.login.api.Login:1=dubbo://192.168.203.144:20880/com.ivan.login.api.Login?anyhost=true&application=ivan-demoDubbo&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=4040&revision=1&side=provider×tamp=1446777856875&version=1 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=configurators&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=1316&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446780900353&version=1 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=routers&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=1316&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446780900353&version=1, com.ivan.server.service.IService=empty://192.168.203.144:20880/com.ivan.server.service.IService?anyhost=true&application=ivan-demoDubbo&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.server.service.IService&methods=test&pid=7740&side=provider×tamp=1446780992890, com.ivan.dubbo.service.DemoService=dubbo://192.168.203.144:20880/com.ivan.dubbo.service.DemoService?anyhost=true&application=ivan-demoDubbo&dubbo=2.5.3&interface=com.ivan.dubbo.service.DemoService&methods=sayHell&pid=2168&side=provider×tamp=1446619828501 empty://192.168.203.144/com.ivan.dubbo.service.DemoService?application=ivan-demoDubbo&category=configurators&dubbo=2.5.3&interface=com.ivan.dubbo.service.DemoService&methods=sayHell&pid=6508&revision=service&side=consumer×tamp=1446621230513 empty://192.168.203.144/com.ivan.dubbo.service.DemoService?application=ivan-demoDubbo&category=routers&dubbo=2.5.3&interface=com.ivan.dubbo.service.DemoService&methods=sayHell&pid=6508&revision=service&side=consumer×tamp=1446621230513, com.ivan.api.dubbo.UserService=dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=10692&side=provider×tamp=1447212092933 empty://192.168.203.144/com.ivan.api.dubbo.UserService?application=test-springmvc&category=configurators&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=2012&side=consumer×tamp=1447212242742 empty://192.168.203.144/com.ivan.api.dubbo.UserService?application=test-springmvc&category=routers&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=2012&side=consumer×tamp=1447212242742, com.ivan.dubbo.service.a.DemoServiceA:1.0.0=empty://192.168.203.144:20880/com.ivan.dubbo.service.a.DemoServiceA?anyhost=true&application=ivan-demoDubbo&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=2168&revision=1.0.0&side=provider×tamp=1446619827949&version=1.0.0, com.ivan.dubbo.service.a.DemoServiceA=empty://192.168.203.144/com.ivan.dubbo.service.a.DemoServiceA?application=ivan-demoDubbo&category=providers&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=6172&revision=service&side=consumer×tamp=1446621271949 empty://192.168.203.144/com.ivan.dubbo.service.a.DemoServiceA?application=ivan-demoDubbo&category=configurators&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=6172&revision=service&side=consumer×tamp=1446621271949 empty://192.168.203.144/com.ivan.dubbo.service.a.DemoServiceA?application=ivan-demoDubbo&category=routers&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=6172&revision=service&side=consumer×tamp=1446621271949, com.ivan.login.api.Login=dubbo://192.168.203.144:20880/com.ivan.login.api.Login?anyhost=true&application=ivan-demoDubbo&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=7740&side=provider×tamp=1446780993496 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=configurators&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=4124&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446781152045 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=routers&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=4124&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446781152045, com.ivan.dubbo.service.UserService=empty://192.168.203.144:20880/com.ivan.dubbo.service.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.dubbo.service.UserService&methods=getUserByPrimaryKey,getUsers&pid=10488&side=provider×tamp=1447131429769}, dubbo version: 2.5.3, current host: 127.0.0.1  
  9. [INFO] [2015-11-11 13:05:29] org.I0Itec.zkclient.ZkEventThread.run(64) | Starting ZkClient event thread.  
  10. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT  
  11. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:host.name=192.168.203.144  
  12. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.version=1.7.0_80  
  13. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.vendor=Oracle Corporation  
  14. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.home=C:\Program Files\jdk1.7.0_80\jre  
  15. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.class.path=D:\java\self_workspace\ivan-dubbo-server\target\classes;D:\java\self_workspace\ivan-core\target\classes;D:\maven\repository\org\springframework\spring-core\4.1.4.RELEASE\spring-core-4.1.4.RELEASE.jar;D:\maven\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\maven\repository\org\springframework\spring-beans\4.1.4.RELEASE\spring-beans-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-context\4.1.4.RELEASE\spring-context-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-aop\4.1.4.RELEASE\spring-aop-4.1.4.RELEASE.jar;D:\maven\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\maven\repository\org\springframework\spring-expression\4.1.4.RELEASE\spring-expression-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-tx\4.1.4.RELEASE\spring-tx-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-web\4.1.4.RELEASE\spring-web-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-webmvc\4.1.4.RELEASE\spring-webmvc-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-jdbc\4.1.4.RELEASE\spring-jdbc-4.1.4.RELEASE.jar;D:\maven\repository\com\alibaba\dubbo\2.5.3\dubbo-2.5.3.jar;D:\maven\repository\org\javassist\javassist\3.15.0-GA\javassist-3.15.0-GA.jar;D:\maven\repository\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\maven\repository\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;D:\maven\repository\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;D:\maven\repository\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;D:\maven\repository\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\maven\repository\jline\jline\0.9.94\jline-0.9.94.jar;D:\maven\repository\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;D:\maven\repository\com\netflix\curator\curator-framework\1.1.10\curator-framework-1.1.10.jar;D:\maven\repository\com\netflix\curator\curator-client\1.1.10\curator-client-1.1.10.jar;D:\maven\repository\com\google\guava\guava\11.0.1\guava-11.0.1.jar;D:\maven\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;D:\maven\repository\com\101tec\zkclient\0.6\zkclient-0.6.jar;D:\maven\repository\javax\servlet\jstl\1.2\jstl-1.2.jar;D:\maven\repository\org\mybatis\mybatis\3.2.8\mybatis-3.2.8.jar;D:\maven\repository\org\mybatis\mybatis-spring\1.2.2\mybatis-spring-1.2.2.jar;D:\maven\repository\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar;D:\maven\repository\com\alibaba\druid\1.0.12\druid-1.0.12.jar;C:\Program Files\jdk1.7.0_80\lib\jconsole.jar;C:\Program Files\jdk1.7.0_80\lib\tools.jar;D:\maven\repository\org\aspectj\aspectjweaver\1.8.4\aspectjweaver-1.8.4.jar;D:\maven\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.13\jackson-mapper-asl-1.9.13.jar;D:\maven\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar;D:\maven\repository\com\alibaba\fastjson\1.2.3\fastjson-1.2.3.jar;D:\maven\repository\com\fasterxml\jackson\core\jackson-annotations\2.5.0\jackson-annotations-2.5.0.jar;D:\maven\repository\com\fasterxml\jackson\core\jackson-core\2.5.0\jackson-core-2.5.0.jar;D:\maven\repository\com\fasterxml\jackson\core\jackson-databind\2.5.0\jackson-databind-2.5.0.jar;D:\maven\repository\commons-io\commons-io\2.4\commons-io-2.4.jar;D:\maven\repository\commons-fileupload\commons-fileupload\1.2.2\commons-fileupload-1.2.2.jar;D:\java\self_workspace\ivan-api\target\classes;D:\java\self_workspace\ivan-entity\target\classes  
  16. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.library.path=C:\Program Files\jdk1.7.0_80\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/jdk1.7.0_80/bin/../jre/bin/server;C:/Program Files/jdk1.7.0_80/bin/../jre/bin;C:/Program Files/jdk1.7.0_80/bin/../jre/lib/amd64;C:\Program Files (x86)\Common Files\NetSarang;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\TortoiseSVN\bin;C:\Program Files\jdk1.7.0_80\bin;C:\Program Files\jdk1.7.0_80\jre\bin;C:\Program Files (x86)\nodejs\;D:\develop\apache-maven-3.2.5\bin;C:\Users\ivan\AppData\Roaming\npm;D:\codetools\eclipse-jee-kepler-SR2-win32-x86_64;;.  
  17. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.io.tmpdir=C:\Users\ivan\AppData\Local\Temp\  
  18. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.compiler=<NA>  
  19. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.name=Windows 7  
  20. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.arch=amd64  
  21. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.version=6.1  
  22. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.name=ivan  
  23. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.home=C:\Users\ivan  
  24. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.dir=D:\java\self_workspace\ivan-dubbo-server  
  25. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ZooKeeper.<init>(438) | Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@22a7106  
  26. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxn$SendThread.logStartConnect(975) | Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)  
  27. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxn$SendThread.primeConnection(852) | Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session  
  28. [WARN] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxnSocket.readConnectResult(139) | Connected to an old server; r-o mode will be unavailable  
  29. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxn$SendThread.onConnected(1235) | Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x150efc123d9000b, negotiated timeout = 30000  
  30. [INFO] [2015-11-11 13:05:29] org.I0Itec.zkclient.ZkClient.processStateChanged(704) | zookeeper state changed (SyncConnected)  
  31. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.register(302) |  [DUBBO] Register: dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, dubbo version: 2.5.3, current host: 127.0.0.1  
  32. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.subscribe(325) |  [DUBBO] Subscribe: provider://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, dubbo version: 2.5.3, current host: 127.0.0.1  
  33. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.notify(422) |  [DUBBO] Notify urls for subscribe url provider://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, urls: [empty://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224], dubbo version: 2.5.3, current host: 127.0.0.1  

好了,下一章我们来搭建服务消费者ivan-dubbo-web工程。

1、ivan-api工程:

pom.xml文件配置如下,请根据自身工程情况修改:

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>ivan</groupId>  
  6.     <artifactId>ivan-api</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>ivan-api</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.     </properties>  
  16.   
  17.     <dependencies>  
  18.         <dependency>  
  19.             <groupId>junit</groupId>  
  20.             <artifactId>junit</artifactId>  
  21.             <version>3.8.1</version>  
  22.             <scope>test</scope>  
  23.         </dependency>  
  24.   
  25.         <dependency>  
  26.             <groupId>ivan</groupId>  
  27.             <artifactId>ivan-entity</artifactId>  
  28.             <version>0.0.1-SNAPSHOT</version>  
  29.         </dependency>  
  30.   
  31.     </dependencies>  
  32. </project>  

创建接口类,用于dubbo服务接口的暴露与消费者注入使用:

UserService.Java

[java] view plain copy
 print?
  1. import java.util.List;  
  2. import com.ivan.entity.User;  
  3.   
  4. public interface UserService {  
  5.     List<User> getUsers();  
  6.     User getUserByPrimaryKey(String id);  
  7. }  

2、ivan-entity工程搭建,用于存放数据库映射的实体,后期存放model及formBean:


pom.xml

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5. <groupId>ivan</groupId>  
  6.   <artifactId>ivan-entity</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>jar</packaging>  
  9.   
  10.   <name>ivan-entity</name>  
  11.   <url>http://maven.apache.org</url>  
  12.   
  13.   <properties>  
  14.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.   </properties>  
  16.   
  17.   <dependencies>  
  18.     <dependency>  
  19.       <groupId>junit</groupId>  
  20.       <artifactId>junit</artifactId>  
  21.       <version>3.8.1</version>  
  22.       <scope>test</scope>  
  23.     </dependency>  
  24.   </dependencies>  
  25. </project>  

创建实体User

[java] view plain copy
 print?
  1. import java.io.Serializable;  
  2.   
  3. public class User implements Serializable{  
  4.     /** 
  5.      *  
  6.      */  
  7.     private static final long serialVersionUID = -5451685937793368311L;  
  8.       
  9.     private String id;  
  10.     private String nickyName;  
  11.     private String pwd;  
  12.       
  13.     public User(String id,String nickyName,String pwd){  
  14.         this.id = id;  
  15.         this.nickyName = nickyName;  
  16.         this.pwd = pwd;  
  17.     }  
  18.       
  19.     public String getId() {  
  20.         return id;  
  21.     }  
  22.     public void setId(String id) {  
  23.         this.id = id;  
  24.     }  
  25.     public String getNickyName() {  
  26.         return nickyName;  
  27.     }  
  28.     public void setNickyName(String nickyName) {  
  29.         this.nickyName = nickyName;  
  30.     }  
  31.     public String getPwd() {  
  32.         return pwd;  
  33.     }  
  34.     public void setPwd(String pwd) {  
  35.         this.pwd = pwd;  
  36.     }  
  37.   
  38.     @Override  
  39.     public String toString() {  
  40.         return "User [id=" + id + ", nickyName=" + nickyName + ", pwd=" + pwd  
  41.                 + "]";  
  42.     }  
  43. }  

3、ivan-core工程,用于存放第三方jar包,后期存放公共Utils工具类(目前还未加入公共工具类,只有一个pom.xml),不依赖任何其他工程:


pom.xml

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>ivan</groupId>  
  6.     <artifactId>ivan-core</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>ivan-core</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.         <spring.version>4.1.4.RELEASE</spring.version>  
  16.         <jackson.version>2.5.0</jackson.version>  
  17.     </properties>  
  18.   
  19.     <dependencies>  
  20.         <dependency>  
  21.             <groupId>junit</groupId>  
  22.             <artifactId>junit</artifactId>  
  23.             <version>3.8.1</version>  
  24.             <scope>test</scope>  
  25.         </dependency>  
  26.   
  27.         <!-- spring -->  
  28.         <dependency>  
  29.             <groupId>org.springframework</groupId>  
  30.             <artifactId>spring-core</artifactId>  
  31.             <version>${spring.version}</version>  
  32.         </dependency>  
  33.   
  34.         <dependency>  
  35.             <groupId>org.springframework</groupId>  
  36.             <artifactId>spring-beans</artifactId>  
  37.             <version>${spring.version}</version>  
  38.         </dependency>  
  39.   
  40.         <dependency>  
  41.             <groupId>org.springframework</groupId>  
  42.             <artifactId>spring-context</artifactId>  
  43.             <version>${spring.version}</version>  
  44.         </dependency>  
  45.   
  46.         <dependency>  
  47.             <groupId>org.springframework</groupId>  
  48.             <artifactId>spring-tx</artifactId>  
  49.             <version>${spring.version}</version>  
  50.         </dependency>  
  51.   
  52.         <dependency>  
  53.             <groupId>org.springframework</groupId>  
  54.             <artifactId>spring-web</artifactId>  
  55.             <version>${spring.version}</version>  
  56.         </dependency>  
  57.   
  58.         <dependency>  
  59.             <groupId>org.springframework</groupId>  
  60.             <artifactId>spring-webmvc</artifactId>  
  61.             <version>${spring.version}</version>  
  62.         </dependency>  
  63.   
  64.         <dependency>  
  65.             <groupId>org.springframework</groupId>  
  66.             <artifactId>spring-jdbc</artifactId>  
  67.             <version>${spring.version}</version>  
  68.         </dependency>  
  69.   
  70.         <dependency>  
  71.             <groupId>org.springframework</groupId>  
  72.             <artifactId>spring-test</artifactId>  
  73.             <version>${spring.version}</version>  
  74.             <scope>test</scope>  
  75.         </dependency>  
  76.   
  77.         <dependency>  
  78.             <groupId>com.alibaba</groupId>  
  79.             <artifactId>dubbo</artifactId>  
  80.             <version>2.5.3</version>  
  81.             <exclusions>  
  82.                 <exclusion>  
  83.                     <artifactId>spring</artifactId>  
  84.                     <groupId>org.springframework</groupId>  
  85.                 </exclusion>  
  86.             </exclusions>  
  87.         </dependency>  
  88.         <dependency>  
  89.             <groupId>org.apache.zookeeper</groupId>  
  90.             <artifactId>zookeeper</artifactId>  
  91.             <version>3.4.6</version>  
  92.         </dependency>  
  93.   
  94.         <dependency>  
  95.             <groupId>com.netflix.curator</groupId>  
  96.             <artifactId>curator-framework</artifactId>  
  97.             <version>1.1.10</version>  
  98.         </dependency>  
  99.   
  100.         <dependency>  
  101.             <groupId>com.101tec</groupId>  
  102.             <artifactId>zkclient</artifactId>  
  103.             <version>0.6</version>  
  104.         </dependency>  
  105.           
  106.         <!-- servlet -->  
  107.         <dependency>  
  108.             <groupId>javax.servlet</groupId>  
  109.             <artifactId>servlet-api</artifactId>  
  110.             <version>3.0-alpha-1</version>  
  111.             <scope>test</scope>  
  112.         </dependency>  
  113.   
  114.         <dependency>  
  115.             <groupId>javax.servlet</groupId>  
  116.             <artifactId>jstl</artifactId>  
  117.             <version>1.2</version>  
  118.         </dependency>  
  119.   
  120.         <!-- mybatis 包 -->  
  121.         <dependency>  
  122.             <groupId>org.mybatis</groupId>  
  123.             <artifactId>mybatis</artifactId>  
  124.             <version>3.2.8</version>  
  125.         </dependency>  
  126.   
  127.         <!--mybatis spring 插件 -->  
  128.         <dependency>  
  129.             <groupId>org.mybatis</groupId>  
  130.             <artifactId>mybatis-spring</artifactId>  
  131.             <version>1.2.2</version>  
  132.         </dependency>  
  133.   
  134.         <!-- mysql连接 -->  
  135.         <dependency>  
  136.             <groupId>mysql</groupId>  
  137.             <artifactId>mysql-connector-java</artifactId>  
  138.             <version>5.1.34</version>  
  139.         </dependency>  
  140.   
  141.         <!-- 数据源 -->  
  142.         <dependency>  
  143.             <groupId>com.alibaba</groupId>  
  144.             <artifactId>druid</artifactId>  
  145.             <version>1.0.12</version>  
  146.         </dependency>  
  147.   
  148.         <dependency>  
  149.             <groupId>org.aspectj</groupId>  
  150.             <artifactId>aspectjweaver</artifactId>  
  151.             <version>1.8.4</version>  
  152.         </dependency>  
  153.   
  154.         <!-- json -->  
  155.         <dependency>  
  156.             <groupId>org.codehaus.jackson</groupId>  
  157.             <artifactId>jackson-mapper-asl</artifactId>  
  158.             <version>1.9.13</version>  
  159.         </dependency>  
  160.   
  161.         <dependency>  
  162.             <groupId>com.alibaba</groupId>  
  163.             <artifactId>fastjson</artifactId>  
  164.             <version>1.2.3</version>  
  165.         </dependency>  
  166.   
  167.         <dependency>  
  168.             <groupId>com.fasterxml.jackson.core</groupId>  
  169.             <artifactId>jackson-annotations</artifactId>  
  170.             <version>${jackson.version}</version>  
  171.         </dependency>  
  172.   
  173.         <dependency>  
  174.             <groupId>com.fasterxml.jackson.core</groupId>  
  175.             <artifactId>jackson-core</artifactId>  
  176.             <version>${jackson.version}</version>  
  177.         </dependency>  
  178.   
  179.         <dependency>  
  180.             <groupId>com.fasterxml.jackson.core</groupId>  
  181.             <artifactId>jackson-databind</artifactId>  
  182.             <version>${jackson.version}</version>  
  183.         </dependency>  
  184.         <!-- 文件上传 -->  
  185.         <dependency>  
  186.             <groupId>commons-io</groupId>  
  187.             <artifactId>commons-io</artifactId>  
  188.             <version>2.4</version>  
  189.         </dependency>  
  190.   
  191.         <dependency>  
  192.             <groupId>commons-fileupload</groupId>  
  193.             <artifactId>commons-fileupload</artifactId>  
  194.             <version>1.2.2</version>  
  195.         </dependency>  
  196.     </dependencies>  
  197. </project>  

4、ivan-dubbo-server工程搭建,服务提供者启动类,这里用于测试实现了ivan-api中的接口,可单独建立业务模块,依赖ivan-api、ivan-core:


pom.xml

[html] view plain copy
 print?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <span style="color:#FF9966;"><groupId>ivan</groupId>  
  6.     <artifactId>ivan-dubbo-server</artifactId>  
  7.     <version>0.0.1-SNAPSHOT</version></span>  
  8.     <packaging>jar</packaging>  
  9.   
  10.     <name>ivan-dubbo-server</name>  
  11.     <url>http://maven.apache.org</url>  
  12.   
  13.     <properties>  
  14.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.     </properties>  
  16.   
  17.     <dependencies>  
  18.         <dependency>  
  19.             <groupId>junit</groupId>  
  20.             <artifactId>junit</artifactId>  
  21.             <version>3.8.1</version>  
  22.             <scope>test</scope>  
  23.         </dependency>  
  24.   
  25.         <dependency>  
  26.             <groupId>ivan</groupId>  
  27.             <artifactId>ivan-core</artifactId>  
  28.             <version>0.0.1-SNAPSHOT</version>  
  29.         </dependency>  
  30.   
  31.         <dependency>  
  32.             <groupId>ivan</groupId>  
  33.             <artifactId>ivan-api</artifactId>  
  34.             <version>0.0.1-SNAPSHOT</version>  
  35.         </dependency>  
  36.   
  37.     </dependencies>  
  38. </project>  

创建spring-registry.xml文件,用于阐述暴露服务、注册中心及使用的协议等

[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans          
  5.     http://www.springframework.org/schema/beans/spring-beans.xsd          
  6.     http://code.alibabatech.com/schema/dubbo          
  7.     http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  8.   
  9.     <!-- 提供方应用信息,用于计算依赖关系 -->  
  10.     <dubbo:application name="ivan-dubbo-server" />  
  11.   
  12.     <!-- 使用zookeeper广播注册中心暴露服务地址 -->  
  13.     <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />  
  14.     
  15.     <!-- 用dubbo协议在20880端口暴露服务 -->  
  16.     <dubbo:protocol name="dubbo" port="20880" />  
  17.     <!--   
  18.         官方注释:扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类。  
  19.         测试发现:此处package不填写包名会无法注册Service,扫描全包需填写包首即可或者填写至类的上一级目录。  
  20.      -->  
  21.     <dubbo:annotation package="com" />  
  22. </beans>  

为了方便排错,配置log4j.properties文件:

[html] view plain copy
 print?
  1. ### set log levels ###  
  2. log4j.rootLogger = INFO , C , D , E   
  3.   
  4. ### console ###  
  5. log4j.appender.C = org.apache.log4j.ConsoleAppender  
  6. log4j.appender.C.Target = System.out  
  7. log4j.appender.C.layout = org.apache.log4j.PatternLayout  
  8. log4j.appender.C.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  9.   
  10. ### log file ###  
  11. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
  12. log4j.appender.D.File = ../logs/ServerManager-Info.log  
  13. log4j.appender.D.Append = true  
  14. log4j.appender.D.Threshold = INFO   
  15. log4j.appender.D.layout = org.apache.log4j.PatternLayout  
  16. log4j.appender.D.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  17.   
  18. ### exception ###  
  19. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  
  20. log4j.appender.E.File = ../logs/ServerManager-Error.log  
  21. log4j.appender.E.Append = true  
  22. log4j.appender.E.Threshold = ERROR   
  23. log4j.appender.E.layout = org.apache.log4j.PatternLayout  
  24. log4j.appender.E.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  

创建启动类,并加载spring-registry.xml文件,这是一个比较简单的启动类,各位看官可自行扩展一下

[java] view plain copy
 print?
  1. import java.io.IOException;  
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  3.   
  4. public class ServerMain {  
  5.       
  6.     public static void main(String[] args) throws IOException {  
  7.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(  
  8.                 new String[] { "spring-registry.xml" });  
  9.         context.start();  
  10.   
  11.         System.in.read(); // 按任意键退出  
  12.     }  
  13. }  


创建业务实现类,实现ivan-api中的UserService接口(注意:@Service中若存在其他属性如version,在消费者使用时,一定要匹配上,否则消费者无法找到服务提供者提供的信息)

[java] view plain copy
 print?
  1. import java.io.IOException;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4.   
  5. import org.slf4j.Logger;  
  6. import org.slf4j.LoggerFactory;  
  7.   
  8. import com.alibaba.dubbo.common.json.JSON;  
  9. import com.alibaba.dubbo.config.annotation.Service;  
  10. import com.ivan.api.dubbo.UserService;  
  11. import com.ivan.entity.User;  
  12.   
  13. @Service  
  14. public class UserServiceImpl implements UserService {  
  15.   
  16.     private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);  
  17.       
  18.     public List<User> getUsers() {  
  19.         logger.info("开始查询所有用户信息");  
  20.           
  21.         List<User> listUser = new ArrayList<User>();  
  22.         User user1 = new User("1","ivan","123456");  
  23.         User user2 = new User("2","jack","123456");  
  24.           
  25.         listUser.add(user1);  
  26.         listUser.add(user2);  
  27.         try {  
  28.             logger.info("查询结果:" + JSON.json(listUser));  
  29.         } catch (IOException e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.         logger.info("查询结束");  
  33.         return listUser;  
  34.     }  
  35.   
  36.     public User getUserByPrimaryKey(String id) {  
  37.         User user = new User("1","ivan","123456");  
  38.         logger.info("开始查询用户信息,查询条件ID为:"+id);  
  39.         logger.info("查询结果:" + user.toString());  
  40.         return user;  
  41.     }  
  42.   
  43. }  

至此,服务提供者已经搭建完成了,可以运行ServerMain来启动服务(前提你的注册中心zookeeper已经启动成功了),查看日志没有报错或者使用zookeeper监控软件查看发布的服务是否已经注册成功了?

这是我的启动成功日志:

[javascript] view plain copy
 print?
  1. [INFO] [2015-11-11 13:05:27] org.springframework.context.support.AbstractApplicationContext.prepareRefresh(510) | Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@26061947: startup date [Wed Nov 11 13:05:27 CST 2015]; root of context hierarchy  
  2. [INFO] [2015-11-11 13:05:27] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(317) | Loading XML bean definitions from class path resource [spring-registry.xml]  
  3. [INFO] [2015-11-11 13:05:27] ?.?(?) | using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter  
  4. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.config.ServiceConfig.exportLocal(510) |  [DUBBO] Export dubbo service com.ivan.api.dubbo.UserService to local registry, dubbo version: 2.5.3, current host: 127.0.0.1  
  5. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(470) |  [DUBBO] Export dubbo service com.ivan.api.dubbo.UserService to url dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, dubbo version: 2.5.3, current host: 127.0.0.1  
  6. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(481) |  [DUBBO] Register dubbo service com.ivan.api.dubbo.UserService url dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224 to registry registry://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=ivan-dubbo-server&dubbo=2.5.3&pid=5240&registry=zookeeper×tamp=1447218329210, dubbo version: 2.5.3, current host: 127.0.0.1  
  7. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.remoting.transport.AbstractServer.<init>(69) |  [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /192.168.203.144:20880, dubbo version: 2.5.3, current host: 127.0.0.1  
  8. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.loadProperties(232) |  [DUBBO] Load registry store file C:\Users\ivan\.dubbo\dubbo-registry-127.0.0.1.cache, data: {com.ivan.login.api.Login:1=dubbo://192.168.203.144:20880/com.ivan.login.api.Login?anyhost=true&application=ivan-demoDubbo&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=4040&revision=1&side=provider×tamp=1446777856875&version=1 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=configurators&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=1316&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446780900353&version=1 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=routers&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=1316&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446780900353&version=1, com.ivan.server.service.IService=empty://192.168.203.144:20880/com.ivan.server.service.IService?anyhost=true&application=ivan-demoDubbo&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.server.service.IService&methods=test&pid=7740&side=provider×tamp=1446780992890, com.ivan.dubbo.service.DemoService=dubbo://192.168.203.144:20880/com.ivan.dubbo.service.DemoService?anyhost=true&application=ivan-demoDubbo&dubbo=2.5.3&interface=com.ivan.dubbo.service.DemoService&methods=sayHell&pid=2168&side=provider×tamp=1446619828501 empty://192.168.203.144/com.ivan.dubbo.service.DemoService?application=ivan-demoDubbo&category=configurators&dubbo=2.5.3&interface=com.ivan.dubbo.service.DemoService&methods=sayHell&pid=6508&revision=service&side=consumer×tamp=1446621230513 empty://192.168.203.144/com.ivan.dubbo.service.DemoService?application=ivan-demoDubbo&category=routers&dubbo=2.5.3&interface=com.ivan.dubbo.service.DemoService&methods=sayHell&pid=6508&revision=service&side=consumer×tamp=1446621230513, com.ivan.api.dubbo.UserService=dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=10692&side=provider×tamp=1447212092933 empty://192.168.203.144/com.ivan.api.dubbo.UserService?application=test-springmvc&category=configurators&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=2012&side=consumer×tamp=1447212242742 empty://192.168.203.144/com.ivan.api.dubbo.UserService?application=test-springmvc&category=routers&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=2012&side=consumer×tamp=1447212242742, com.ivan.dubbo.service.a.DemoServiceA:1.0.0=empty://192.168.203.144:20880/com.ivan.dubbo.service.a.DemoServiceA?anyhost=true&application=ivan-demoDubbo&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=2168&revision=1.0.0&side=provider×tamp=1446619827949&version=1.0.0, com.ivan.dubbo.service.a.DemoServiceA=empty://192.168.203.144/com.ivan.dubbo.service.a.DemoServiceA?application=ivan-demoDubbo&category=providers&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=6172&revision=service&side=consumer×tamp=1446621271949 empty://192.168.203.144/com.ivan.dubbo.service.a.DemoServiceA?application=ivan-demoDubbo&category=configurators&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=6172&revision=service&side=consumer×tamp=1446621271949 empty://192.168.203.144/com.ivan.dubbo.service.a.DemoServiceA?application=ivan-demoDubbo&category=routers&dubbo=2.5.3&interface=com.ivan.dubbo.service.a.DemoServiceA&methods=sayHell&pid=6172&revision=service&side=consumer×tamp=1446621271949, com.ivan.login.api.Login=dubbo://192.168.203.144:20880/com.ivan.login.api.Login?anyhost=true&application=ivan-demoDubbo&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=7740&side=provider×tamp=1446780993496 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=configurators&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=4124&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446781152045 empty://192.168.203.144/com.ivan.login.api.Login?application=test-springmvc&category=routers&dubbo=2.5.3&interface=com.ivan.login.api.Login&methods=doLogin&pid=4124&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1446781152045, com.ivan.dubbo.service.UserService=empty://192.168.203.144:20880/com.ivan.dubbo.service.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.dubbo.service.UserService&methods=getUserByPrimaryKey,getUsers&pid=10488&side=provider×tamp=1447131429769}, dubbo version: 2.5.3, current host: 127.0.0.1  
  9. [INFO] [2015-11-11 13:05:29] org.I0Itec.zkclient.ZkEventThread.run(64) | Starting ZkClient event thread.  
  10. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT  
  11. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:host.name=192.168.203.144  
  12. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.version=1.7.0_80  
  13. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.vendor=Oracle Corporation  
  14. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.home=C:\Program Files\jdk1.7.0_80\jre  
  15. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.class.path=D:\java\self_workspace\ivan-dubbo-server\target\classes;D:\java\self_workspace\ivan-core\target\classes;D:\maven\repository\org\springframework\spring-core\4.1.4.RELEASE\spring-core-4.1.4.RELEASE.jar;D:\maven\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\maven\repository\org\springframework\spring-beans\4.1.4.RELEASE\spring-beans-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-context\4.1.4.RELEASE\spring-context-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-aop\4.1.4.RELEASE\spring-aop-4.1.4.RELEASE.jar;D:\maven\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\maven\repository\org\springframework\spring-expression\4.1.4.RELEASE\spring-expression-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-tx\4.1.4.RELEASE\spring-tx-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-web\4.1.4.RELEASE\spring-web-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-webmvc\4.1.4.RELEASE\spring-webmvc-4.1.4.RELEASE.jar;D:\maven\repository\org\springframework\spring-jdbc\4.1.4.RELEASE\spring-jdbc-4.1.4.RELEASE.jar;D:\maven\repository\com\alibaba\dubbo\2.5.3\dubbo-2.5.3.jar;D:\maven\repository\org\javassist\javassist\3.15.0-GA\javassist-3.15.0-GA.jar;D:\maven\repository\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\maven\repository\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;D:\maven\repository\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;D:\maven\repository\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;D:\maven\repository\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\maven\repository\jline\jline\0.9.94\jline-0.9.94.jar;D:\maven\repository\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;D:\maven\repository\com\netflix\curator\curator-framework\1.1.10\curator-framework-1.1.10.jar;D:\maven\repository\com\netflix\curator\curator-client\1.1.10\curator-client-1.1.10.jar;D:\maven\repository\com\google\guava\guava\11.0.1\guava-11.0.1.jar;D:\maven\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;D:\maven\repository\com\101tec\zkclient\0.6\zkclient-0.6.jar;D:\maven\repository\javax\servlet\jstl\1.2\jstl-1.2.jar;D:\maven\repository\org\mybatis\mybatis\3.2.8\mybatis-3.2.8.jar;D:\maven\repository\org\mybatis\mybatis-spring\1.2.2\mybatis-spring-1.2.2.jar;D:\maven\repository\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar;D:\maven\repository\com\alibaba\druid\1.0.12\druid-1.0.12.jar;C:\Program Files\jdk1.7.0_80\lib\jconsole.jar;C:\Program Files\jdk1.7.0_80\lib\tools.jar;D:\maven\repository\org\aspectj\aspectjweaver\1.8.4\aspectjweaver-1.8.4.jar;D:\maven\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.13\jackson-mapper-asl-1.9.13.jar;D:\maven\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar;D:\maven\repository\com\alibaba\fastjson\1.2.3\fastjson-1.2.3.jar;D:\maven\repository\com\fasterxml\jackson\core\jackson-annotations\2.5.0\jackson-annotations-2.5.0.jar;D:\maven\repository\com\fasterxml\jackson\core\jackson-core\2.5.0\jackson-core-2.5.0.jar;D:\maven\repository\com\fasterxml\jackson\core\jackson-databind\2.5.0\jackson-databind-2.5.0.jar;D:\maven\repository\commons-io\commons-io\2.4\commons-io-2.4.jar;D:\maven\repository\commons-fileupload\commons-fileupload\1.2.2\commons-fileupload-1.2.2.jar;D:\java\self_workspace\ivan-api\target\classes;D:\java\self_workspace\ivan-entity\target\classes  
  16. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.library.path=C:\Program Files\jdk1.7.0_80\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/jdk1.7.0_80/bin/../jre/bin/server;C:/Program Files/jdk1.7.0_80/bin/../jre/bin;C:/Program Files/jdk1.7.0_80/bin/../jre/lib/amd64;C:\Program Files (x86)\Common Files\NetSarang;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\TortoiseSVN\bin;C:\Program Files\jdk1.7.0_80\bin;C:\Program Files\jdk1.7.0_80\jre\bin;C:\Program Files (x86)\nodejs\;D:\develop\apache-maven-3.2.5\bin;C:\Users\ivan\AppData\Roaming\npm;D:\codetools\eclipse-jee-kepler-SR2-win32-x86_64;;.  
  17. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.io.tmpdir=C:\Users\ivan\AppData\Local\Temp\  
  18. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:java.compiler=<NA>  
  19. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.name=Windows 7  
  20. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.arch=amd64  
  21. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:os.version=6.1  
  22. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.name=ivan  
  23. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.home=C:\Users\ivan  
  24. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.Environment.logEnv(100) | Client environment:user.dir=D:\java\self_workspace\ivan-dubbo-server  
  25. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ZooKeeper.<init>(438) | Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@22a7106  
  26. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxn$SendThread.logStartConnect(975) | Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)  
  27. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxn$SendThread.primeConnection(852) | Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session  
  28. [WARN] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxnSocket.readConnectResult(139) | Connected to an old server; r-o mode will be unavailable  
  29. [INFO] [2015-11-11 13:05:29] org.apache.zookeeper.ClientCnxn$SendThread.onConnected(1235) | Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x150efc123d9000b, negotiated timeout = 30000  
  30. [INFO] [2015-11-11 13:05:29] org.I0Itec.zkclient.ZkClient.processStateChanged(704) | zookeeper state changed (SyncConnected)  
  31. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.register(302) |  [DUBBO] Register: dubbo://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, dubbo version: 2.5.3, current host: 127.0.0.1  
  32. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.subscribe(325) |  [DUBBO] Subscribe: provider://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, dubbo version: 2.5.3, current host: 127.0.0.1  
  33. [INFO] [2015-11-11 13:05:29] com.alibaba.dubbo.registry.support.AbstractRegistry.notify(422) |  [DUBBO] Notify urls for subscribe url provider://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224, urls: [empty://192.168.203.144:20880/com.ivan.api.dubbo.UserService?anyhost=true&application=ivan-dubbo-server&category=configurators&check=false&dubbo=2.5.3&interface=com.ivan.api.dubbo.UserService&methods=getUserByPrimaryKey,getUsers&pid=5240&side=provider×tamp=1447218329224], dubbo version: 2.5.3, current host: 127.0.0.1  

好了,下一章我们来搭建服务消费者ivan-dubbo-web工程。



0 0
原创粉丝点击