搭建 Dubbo+Zookeeper+SpringMVC项目

今天主要说的是Dubbo+Zookeeper分布式服务的搭建,前面我们搭建过web层也就是http层的负载均衡,由nginx去操作的,所以今天不做整合,只对分布式项目进行搭建
搭建过程:

一、我们要下载Zookeeper并安装、配置

下载地址:http://apache.fayea.com/zookeeper/ 我下载的是3.5.3-beta 测试版本进行搭建的,大家可以选择稳定版

我们把下载下来的zookeeper进行解压,打开后我们进入到 zookeeper-3.5.3\conf 这个文件夹


打开zoo.cfg,对zookeeper的端口和log、data进行配置


返回,进入bin目录我们启动zkServer.cmd,zookeeper就启动了


二、下载配置dubbo的管理项目

下载地址:https://download.csdn.net/download/qq_27612843/10465247

接下来我们需要准备个tomcat,改好端口,避免冲突,并且把下载的dubbo-admin.war放入到webapps里面


启动后会自动解压,这里要说一下流程,必须得是先启动zookeeper注册中心,然后再启动dubbo-admin服务

还有一个需要注意的地方是在 webapps—>dubbo-admin—>WEB-INF—>dubbo.properties文件中的zookeeper端口必须要和你zookeeper的端口保持一致


启动tomcat之后我们进行访问可以看到会让我们输入用户名和密码,都是root


登录进去之后就是dubbo的管理项目


三、接下来我们来创建我们的dubbo项目,这里我采用maven聚合来进行搭建


dubbo                      父节点    Packaging——pom

dubbo-api                接口(也就是我们的service接口)  Packaging——jar

dubbo-provider        服务提供方(这里面写service的实现和数据持久)、需要在pom中引入dubbo-api  Packaging——war

dubbo-consumer      消费方(可以理解为controller层的调用)、需要在pom中引入dubbo-api             Packaging——war

下面搭建流程就是一个maven聚合,我把各个程序里面所需要的配置贴出来

1、dubbo-api什么都不需要配置,只用写出我们一个接口即可

2、dubbo-provider的pom.xml的配置,dubbo自带的spring版本较低对其进行替换,大家自行把groupId和artifactId改名

[html]  view plain  copy
  1. <?xml version="1.0"?>  
  2. <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  4.   <modelVersion>4.0.0</modelVersion>  
  5.   <parent>  
  6.     <groupId>com.dubbo</groupId>  
  7.     <artifactId>dubbo</artifactId>  
  8.     <version>0.0.1-SNAPSHOT</version>  
  9.   </parent>  
  10.   <artifactId>dubbo-provider</artifactId>  
  11.   <packaging>war</packaging>  
  12.   <name>dubbo-provider Maven Webapp</name>  
  13.   <url>http://maven.apache.org</url>  
  14.     
  15.   <properties>  
  16.         <spring.version>4.3.8.RELEASE</spring.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.     <dependency>  
  27.       <groupId>com.dubbo</groupId>  
  28.       <artifactId>dubbo-api</artifactId>  
  29.       <version>0.0.1-SNAPSHOT</version>  
  30.     </dependency>  
  31.       
  32.     <dependency>    
  33.         <groupId>com.alibaba</groupId>    
  34.         <artifactId>dubbo</artifactId>    
  35.         <version>2.5.3</version>    
  36.         <exclusions>  
  37.             <exclusion>  
  38.                 <artifactId>spring</artifactId>  
  39.                 <groupId>org.springframework</groupId>  
  40.             </exclusion>  
  41.         </exclusions>  
  42.     </dependency>    
  43.     <dependency>    
  44.         <groupId>org.apache.zookeeper</groupId>    
  45.         <artifactId>zookeeper</artifactId>    
  46.         <version>3.5.3-beta</version>    
  47.     </dependency>    
  48.       
  49.     <!-- spring begin -->  
  50.     <dependency>  
  51.         <groupId>org.springframework</groupId>  
  52.         <artifactId>spring-jdbc</artifactId>  
  53.         <version>${spring.version}</version>  
  54.     </dependency>  
  55.   
  56.     <dependency>  
  57.         <groupId>org.springframework</groupId>  
  58.         <artifactId>spring-context</artifactId>  
  59.         <version>${spring.version}</version>  
  60.     </dependency>  
  61.   
  62.     <dependency>  
  63.         <groupId>org.springframework</groupId>  
  64.         <artifactId>spring-aop</artifactId>  
  65.         <version>${spring.version}</version>  
  66.     </dependency>  
  67.   
  68.     <dependency>  
  69.         <groupId>org.springframework</groupId>  
  70.         <artifactId>spring-core</artifactId>  
  71.         <version>${spring.version}</version>  
  72.     </dependency>  
  73.   
  74.     <dependency>  
  75.         <groupId>org.springframework</groupId>  
  76.         <artifactId>spring-test</artifactId>  
  77.         <version>${spring.version}</version>  
  78.     </dependency>  
  79.     <dependency>  
  80.         <groupId>org.springframework</groupId>  
  81.         <artifactId>spring-test</artifactId>  
  82.         <version>${spring.version}</version>  
  83.     </dependency>  
  84.     <!-- spring end -->  
  85.       
  86.     <!-- 日志相关 -->    
  87.     <dependency>    
  88.         <groupId>log4j</groupId>    
  89.         <artifactId>log4j</artifactId>    
  90.         <version>1.2.16</version>    
  91.     </dependency>    
  92.   
  93.     <dependency>    
  94.         <groupId>org.slf4j</groupId>    
  95.         <artifactId>slf4j-api</artifactId>    
  96.         <version>1.7.5</version>    
  97.     </dependency>    
  98.   
  99.     <!-- zookeeper client依赖,用于向zookeeper注册服务 -->    
  100.     <dependency>    
  101.         <groupId>com.github.sgroschupf</groupId>    
  102.         <artifactId>zkclient</artifactId>    
  103.         <version>0.1</version>    
  104.     </dependency>  
  105.   </dependencies>  
  106.   <build>  
  107.     <pluginManagement>    
  108.         <plugins>    
  109.             <plugin>    
  110.                 <groupId>org.apache.maven.plugins</groupId>    
  111.                 <artifactId>maven-jar-plugin</artifactId>    
  112.                 <configuration>    
  113.                     <source>1.8</source>    
  114.                     <target>1.8</target>    
  115.                     <archive>    
  116.                         <manifest>    
  117.                             <mainClass>com.dubbo.provider.Provider</mainClass>    
  118.                             <addClasspath>true</addClasspath>    
  119.                             <classpathPrefix>lib/</classpathPrefix>    
  120.                         </manifest>    
  121.   
  122.                     </archive>    
  123.                     <classesDirectory>    
  124.                     </classesDirectory>    
  125.                 </configuration>    
  126.             </plugin>    
  127.         </plugins>    
  128.     </pluginManagement>  
  129.     <finalName>dubbo-provider</finalName>  
  130.   </build>  
  131. </project>  

applicationContext.xml

[html]  view plain  copy
  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:context="http://www.springframework.org/schema/context"    
  4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"    
  5.     xmlns:tx="http://www.springframework.org/schema/tx"    
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd    
  7.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd     
  8.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd     
  9.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">    
  10.         
  11.     <context:component-scan base-package="com.dubbo.provider" />   
  12.         
  13. </beans>    

log4.properties

[html]  view plain  copy
  1. log4j.appender.mylog = org.apache.log4j.ConsoleAppender    
  2.     
  3. log4j.appender.mylog.target = System.out    
  4.     
  5. log4j.appender.mylog.layoutorg.apache.log4j.PatternLayout    
  6.     
  7. log4j.appender.mylog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
  8.     
  9. log4j.appender.my2log = org.apache.log4j.RollingFileAppender    
  10.     
  11. log4j.appender.my2log.File = D://Logger//provider.log    
  12.     
  13. log4j.appender.my2log.MaxFileSize = 50KB    
  14.     
  15. log4j.appender.my2log.MaxBackupIndex = 1    
  16.     
  17. log4j.appender.my2log.layoutorg.apache.log4j.PatternLayout    
  18.      
  19. log4j.appender.my2log.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
  20.     
  21. log4j.rootLogger = info,mylog,my2log   

provider.xml

[html]  view plain  copy
  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"    
  4.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    
  6.      
  7.     <!-- 提供方应用信息,用于计算依赖关系 -->    
  8.     <dubbo:application name="provider"  />    
  9.      
  10.     <!-- 使用zookeeper广播注册中心暴露服务地址 -->    
  11.     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>    
  12.      
  13.     <!-- 用dubbo协议在20880端口暴露服务 -->    
  14.     <dubbo:protocol name="dubbo" port="20881" />    
  15.     
  16.     <!-- 和本地bean一样实现服务 -->    
  17.     <bean id="testService" class="com.dubbo.provider.service.TestServiceImpl" />    
  18.         
  19.     <!-- 声明需要暴露的服务接口 -->    
  20.     <dubbo:service interface="com.dubbo.api.TestService" ref="testService" />    
  21.      
  22. </beans>  

api接口的实现类


对于服务方发布的main方法,Provider类

[java]  view plain  copy
  1. package com.dubbo.provider;  
  2.   
  3. import org.apache.log4j.PropertyConfigurator;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. public class Provider {  
  7.   
  8.     static{    
  9.         PropertyConfigurator.configure("src/main/resources/log4.properties");    
  10.     }    
  11.     public static void main(String args[]) throws Exception {    
  12.         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:/*.xml");    
  13.         context.start();    
  14.         System.in.read();    
  15.     }  
  16. }  

我们用main方法启动后进入dubbo-admin里面去查看一下,会发现我们的服务已经发布了


3、接下来编写消费者项目代码及配置 dubbo-consumer

首先是pom.xml的配置

[html]  view plain  copy
  1. <?xml version="1.0"?>  
  2. <project  
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"  
  4.     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  5.     <modelVersion>4.0.0</modelVersion>  
  6.     <parent>  
  7.         <groupId>com.dubbo</groupId>  
  8.         <artifactId>dubbo</artifactId>  
  9.         <version>0.0.1-SNAPSHOT</version>  
  10.     </parent>  
  11.     <artifactId>dubbo-consumer</artifactId>  
  12.     <packaging>war</packaging>  
  13.     <name>dubbo-consumer Maven Webapp</name>  
  14.     <url>http://maven.apache.org</url>  
  15.   
  16.     <properties>  
  17.         <spring.version>4.3.8.RELEASE</spring.version>  
  18.     </properties>  
  19.   
  20.     <dependencies>  
  21.         <dependency>  
  22.             <groupId>junit</groupId>  
  23.             <artifactId>junit</artifactId>  
  24.             <version>3.8.1</version>  
  25.             <scope>test</scope>  
  26.         </dependency>  
  27.         <dependency>  
  28.             <groupId>com.dubbo</groupId>  
  29.             <artifactId>dubbo-api</artifactId>  
  30.             <version>0.0.1-SNAPSHOT</version>  
  31.         </dependency>  
  32.   
  33.         <dependency>  
  34.             <groupId>com.alibaba</groupId>  
  35.             <artifactId>dubbo</artifactId>  
  36.             <version>2.5.3</version>  
  37.             <exclusions>  
  38.                 <exclusion>  
  39.                     <artifactId>spring</artifactId>  
  40.                     <groupId>org.springframework</groupId>  
  41.                 </exclusion>  
  42.             </exclusions>  
  43.         </dependency>  
  44.         <!-- spring begin -->  
  45.         <dependency>  
  46.             <groupId>org.springframework</groupId>  
  47.             <artifactId>spring-webmvc</artifactId>  
  48.             <version>${spring.version}</version>  
  49.         </dependency>  
  50.   
  51.         <dependency>  
  52.             <groupId>org.springframework</groupId>  
  53.             <artifactId>spring-jdbc</artifactId>  
  54.             <version>${spring.version}</version>  
  55.         </dependency>  
  56.   
  57.         <dependency>  
  58.             <groupId>org.springframework</groupId>  
  59.             <artifactId>spring-context</artifactId>  
  60.             <version>${spring.version}</version>  
  61.         </dependency>  
  62.   
  63.         <dependency>  
  64.             <groupId>org.springframework</groupId>  
  65.             <artifactId>spring-aop</artifactId>  
  66.             <version>${spring.version}</version>  
  67.         </dependency>  
  68.   
  69.         <dependency>  
  70.             <groupId>org.springframework</groupId>  
  71.             <artifactId>spring-core</artifactId>  
  72.             <version>${spring.version}</version>  
  73.         </dependency>  
  74.   
  75.         <dependency>  
  76.             <groupId>org.springframework</groupId>  
  77.             <artifactId>spring-test</artifactId>  
  78.             <version>${spring.version}</version>  
  79.         </dependency>  
  80.         <dependency>  
  81.             <groupId>org.springframework</groupId>  
  82.             <artifactId>spring-test</artifactId>  
  83.             <version>${spring.version}</version>  
  84.         </dependency>  
  85.         <!-- spring end -->  
  86.   
  87.         <!-- web jar -->  
  88.         <dependency>  
  89.             <groupId>javax.servlet</groupId>  
  90.             <artifactId>javax.servlet-api</artifactId>  
  91.             <version>3.0.1</version>  
  92.             <scope>provided</scope>  
  93.         </dependency>  
  94.         <dependency>  
  95.             <groupId>javax.servlet</groupId>  
  96.             <artifactId>jstl</artifactId>  
  97.             <version>1.1.2</version>  
  98.             <scope>provided</scope>  
  99.         </dependency>  
  100.         <dependency>  
  101.             <groupId>javax.servlet.jsp</groupId>  
  102.             <artifactId>javax.servlet.jsp-api</artifactId>  
  103.             <version>2.3.1</version>  
  104.             <scope>provided</scope>  
  105.         </dependency>  
  106.         <!-- jstl jar -->  
  107.         <dependency>  
  108.             <groupId>jstl</groupId>  
  109.             <artifactId>jstl</artifactId>  
  110.             <version>1.2</version>  
  111.         </dependency>  
  112.   
  113.         <dependency>  
  114.             <groupId>taglibs</groupId>  
  115.             <artifactId>standard</artifactId>  
  116.             <version>1.1.2</version>  
  117.         </dependency>  
  118.   
  119.         <!-- jackson jar -->  
  120.         <dependency>  
  121.             <groupId>org.codehaus.jackson</groupId>  
  122.             <artifactId>jackson-jaxrs</artifactId>  
  123.             <version>1.9.11</version>  
  124.         </dependency>  
  125.   
  126.         <!-- commons jar -->  
  127.         <dependency>  
  128.             <groupId>org.apache.commons</groupId>  
  129.             <artifactId>commons-lang3</artifactId>  
  130.             <version>3.3.2</version>  
  131.         </dependency>  
  132.         <dependency>  
  133.             <groupId>commons-io</groupId>  
  134.             <artifactId>commons-io</artifactId>  
  135.             <version>2.4</version>  
  136.         </dependency>  
  137.         <dependency>  
  138.             <groupId>org.apache.commons</groupId>  
  139.             <artifactId>commons-collections4</artifactId>  
  140.             <version>4.0</version>  
  141.         </dependency>  
  142.         <dependency>  
  143.             <groupId>commons-logging</groupId>  
  144.             <artifactId>commons-logging</artifactId>  
  145.             <version>1.1.3</version>  
  146.         </dependency>  
  147.         <dependency>  
  148.             <groupId>commons-codec</groupId>  
  149.             <artifactId>commons-codec</artifactId>  
  150.             <version>1.8</version>  
  151.         </dependency>  
  152.         <dependency>  
  153.             <groupId>commons-beanutils</groupId>  
  154.             <artifactId>commons-beanutils</artifactId>  
  155.             <version>1.8.3</version>  
  156.         </dependency>  
  157.         <dependency>  
  158.             <groupId>commons-chain</groupId>  
  159.             <artifactId>commons-chain</artifactId>  
  160.             <version>1.2</version>  
  161.         </dependency>  
  162.         <dependency>  
  163.             <groupId>commons-fileupload</groupId>  
  164.             <artifactId>commons-fileupload</artifactId>  
  165.             <version>1.3.1</version>  
  166.         </dependency>  
  167.         <dependency>  
  168.             <groupId>org.apache.commons</groupId>  
  169.             <artifactId>commons-math3</artifactId>  
  170.             <version>3.3</version>  
  171.         </dependency>  
  172.         <dependency>  
  173.             <groupId>org.apache.commons</groupId>  
  174.             <artifactId>commons-pool2</artifactId>  
  175.             <version>2.2</version>  
  176.         </dependency>  
  177.         <dependency>  
  178.             <groupId>org.apache.commons</groupId>  
  179.             <artifactId>commons-digester3</artifactId>  
  180.             <version>3.2</version>  
  181.         </dependency>  
  182.         <dependency>  
  183.             <groupId>commons-net</groupId>  
  184.             <artifactId>commons-net</artifactId>  
  185.             <version>3.3</version>  
  186.         </dependency>  
  187.         <dependency>  
  188.             <groupId>commons-dbutils</groupId>  
  189.             <artifactId>commons-dbutils</artifactId>  
  190.             <version>1.5</version>  
  191.         </dependency>  
  192.         <dependency>  
  193.             <groupId>org.apache.commons</groupId>  
  194.             <artifactId>commons-email</artifactId>  
  195.             <version>1.3.3</version>  
  196.         </dependency>  
  197.         <dependency>  
  198.             <groupId>commons-dbcp</groupId>  
  199.             <artifactId>commons-dbcp</artifactId>  
  200.             <version>1.4</version>  
  201.         </dependency>  
  202.   
  203.         <!-- 日志相关 -->  
  204.         <dependency>  
  205.             <groupId>log4j</groupId>  
  206.             <artifactId>log4j</artifactId>  
  207.             <version>1.2.16</version>  
  208.         </dependency>  
  209.         <dependency>  
  210.             <groupId>org.slf4j</groupId>  
  211.             <artifactId>slf4j-api</artifactId>  
  212.             <version>1.7.5</version>  
  213.         </dependency>  
  214.         <!-- zookeeper client依赖,用于向zookeeper注册服务 -->  
  215.         <dependency>  
  216.             <groupId>com.github.sgroschupf</groupId>  
  217.             <artifactId>zkclient</artifactId>  
  218.             <version>0.1</version>  
  219.         </dependency>  
  220.     </dependencies>  
  221.     <build>  
  222.         <finalName>dubbo-consumer</finalName>  
  223.     </build>  
  224. </project>  

web.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  3.          xmlns="http://java.sun.com/xml/ns/javaee"  
  4.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  6.          id="WebApp_ID" version="3.0">  
  7. <!-- 关键配置 contextListener -->    
  8.     <context-param>    
  9.         <param-name>contextConfigLocation</param-name>    
  10.         <param-value>classpath*:applicationContext.xml</param-value>    
  11.     </context-param>    
  12.     
  13.     <listener>    
  14.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    
  15.     </listener>    
  16.     
  17.     
  18.     <!-- log4 -->    
  19.     <context-param>    
  20.         <param-name>log4jConfigLocation</param-name>    
  21.         <param-value>classpath:log4.properties</param-value>    
  22.     </context-param>    
  23.     
  24.     <context-param>    
  25.         <param-name>log4jRefreshInterval</param-name>    
  26.         <param-value>3000</param-value>    
  27.     </context-param>    
  28.     
  29.     <listener>    
  30.         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    
  31.     </listener>    
  32.         
  33.     <!-- 字符过滤器 -->    
  34.     <filter>    
  35.         <filter-name>encodingFilter</filter-name>    
  36.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    
  37.         <init-param>    
  38.             <param-name>encoding</param-name>    
  39.             <param-value>UTF-8</param-value>    
  40.         </init-param>    
  41.     </filter>    
  42.     <filter-mapping>    
  43.         <filter-name>encodingFilter</filter-name>    
  44.         <url-pattern>/</url-pattern>    
  45.     </filter-mapping>    
  46.     
  47.     
  48.     <!-- 设置tomcat对静态资源默认拦截 -->    
  49.     <servlet-mapping>    
  50.         <servlet-name>default</servlet-name>    
  51.         <url-pattern>*.jpg</url-pattern>    
  52.     </servlet-mapping>    
  53.     <servlet-mapping>    
  54.         <servlet-name>default</servlet-name>    
  55.         <url-pattern>*.png</url-pattern>    
  56.     </servlet-mapping>    
  57.     <servlet-mapping>    
  58.         <servlet-name>default</servlet-name>    
  59.         <url-pattern>*.js</url-pattern>    
  60.     </servlet-mapping>    
  61.     <servlet-mapping>    
  62.         <servlet-name>default</servlet-name>    
  63.         <url-pattern>*.css</url-pattern>    
  64.     </servlet-mapping>    
  65.     <!-- 关键配置 dispatcherServlet -->    
  66.     <!-- 拦截所有的请求,包括静态资源 -->    
  67.     <servlet>    
  68.         <servlet-name>springmvc</servlet-name>    
  69.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
  70.         <init-param>    
  71.             <param-name>contextConfigLocation</param-name>    
  72.             <param-value>classpath*:springmvc.xml</param-value>    
  73.         </init-param>    
  74.         <load-on-startup>1</load-on-startup>    
  75.     </servlet>    
  76.     <servlet-mapping>    
  77.         <servlet-name>springmvc</servlet-name>    
  78.         <url-pattern>/</url-pattern>    
  79.     </servlet-mapping>    
  80.     
  81.     <welcome-file-list>    
  82.         <welcome-file>index.jsp</welcome-file>    
  83.     </welcome-file-list>    
  84. </web-app>  

applicationContext.xml

[html]  view plain  copy
  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:context="http://www.springframework.org/schema/context"    
  4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"    
  5.     xmlns:tx="http://www.springframework.org/schema/tx"    
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd    
  7.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd     
  8.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd     
  9.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">    
  10.         
  11.     <import resource="classpath*:/consumer.xml" />    
  12.         
  13. </beans>    

consumer.xml

[html]  view plain  copy
  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"    
  4.     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans          
  6.                         http://www.springframework.org/schema/beans/spring-beans.xsd          
  7.                         http://code.alibabatech.com/schema/dubbo          
  8.                         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">    
  9.      
  10.     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->    
  11.     <dubbo:application name="consumer"  />    
  12.      
  13.     <!-- 使用zookeeper广播注册中心暴露服务地址 -->    
  14.     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>    
  15.      
  16.     <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->    
  17.     <dubbo:reference id="testService" interface="com.dubbo.api.TestService" />    
  18.      
  19. </beans>   

log4.properties

[html]  view plain  copy
  1. log4j.appender.mylog = org.apache.log4j.ConsoleAppender    
  2.     
  3. log4j.appender.mylog.target = System.out    
  4.     
  5. log4j.appender.mylog.layoutorg.apache.log4j.PatternLayout    
  6.     
  7. log4j.appender.mylog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
  8.     
  9. log4j.appender.my2log = org.apache.log4j.RollingFileAppender    
  10.     
  11. log4j.appender.my2log.File = D://Logger//consumer.log    
  12.     
  13. log4j.appender.my2log.MaxFileSize = 50KB    
  14.     
  15. log4j.appender.my2log.MaxBackupIndex = 1    
  16.     
  17. log4j.appender.my2log.layoutorg.apache.log4j.PatternLayout    
  18.      
  19. log4j.appender.my2log.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n    
  20.     
  21. log4j.rootLogger = info,mylog,my2log   

springmvc.xml

[html]  view plain  copy
  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:p="http://www.springframework.org/schema/p"    
  4.     xmlns:context="http://www.springframework.org/schema/context"    
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"    
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        
  7. http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-4.3.xsd     
  8. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"    
  9.     default-lazy-init="true">    
  10.     
  11.     <!-- 启用注解 -->    
  12.     <context:annotation-config />    
  13.     
  14.     <!-- 扫描Controller -->    
  15.     <context:component-scan base-package="com.dubbo.consumer.controller" />    
  16.     <!-- 完成请求与注解的POJO映射 -->    
  17.     <bean    
  18.         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />    
  19.     <bean    
  20.         class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />    
  21.             
  22.             
  23.     <bean id="defaultViewResolver"    
  24.         class="org.springframework.web.servlet.view.InternalResourceViewResolver"    
  25.         p:order="3">    
  26.         <property name="viewClass"    
  27.             value="org.springframework.web.servlet.view.JstlView" />    
  28.         <property name="contentType" value="text/html" />    
  29.         <property name="prefix" value="/" />    
  30.         <property name="suffix" value=".jsp" />    
  31.     </bean>    
  32. </beans>  

controller


四、启动我们的消费方,dubbo-consumer(这里要注意一下,在拿个tomcat出来,不要和dubbo-admin用同一个)

这个时候我们进入dubbo-admin里面去查看一下消费方


然后这里大家可以用url去测试,也可以用postman去测试


点击Send发送请求后我们可以看到控制台的输出


五、至此我们的dubbo+zookeeper+springmvc的分布式项目已经搭建完成,小伙伴儿们去试试吧~~~

猜你喜欢

转载自blog.csdn.net/weixin_41690905/article/details/80745707
今日推荐