• dubbo+zookeeper项目搭建


    dubbo+zookeeper项目搭建

    (一)服务端框架搭建步骤:

    (1)服务端项目结构:
     
    第一步:导入jar包,pom.xml文件
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>dubbo-zookeeper-service</groupId>
      <artifactId>dubbo-zookeeper-service</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>dubbo-zookeeper-service Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <properties>
        <spring.version>4.0.1.RELEASE</spring.version>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>dubbo</artifactId>
          <version>2.5.3</version>
        </dependency>
        <dependency>
          <groupId>org.javassist</groupId>
          <artifactId>javassist</artifactId>
          <version>3.18.1-GA</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.netty</groupId>
          <artifactId>netty</artifactId>
          <version>3.2.9.Final</version>
        </dependency>
        <dependency>
          <groupId>org.apache.openejb</groupId>
          <artifactId>javaee-api</artifactId>
          <version>5.0-1</version>
          <scope>provided</scope>
        </dependency>
        <!-- zookeeper注册中心 -->
        <dependency> 
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.10</version>
     </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.annotation</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.ejb</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.weld</groupId>
          <artifactId>weld-osgi-bundle</artifactId>
          <version>1.0.1-SP3</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.servlet</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.5</version>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.annotation</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.ejb</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.weld</groupId>
          <artifactId>weld-osgi-bundle</artifactId>
          <version>1.0.1-SP3</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.servlet</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.annotation</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.ejb</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.weld</groupId>
          <artifactId>weld-osgi-bundle</artifactId>
          <version>1.0.1-SP3</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.servlet</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.apache.openejb</groupId>
          <artifactId>javaee-api</artifactId>
          <version>5.0-1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>dubbo-zookeeper-service</finalName>
      </build>
    </project>

    第二步:配置web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     id="WebApp_ID" version="3.0">
     <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-dubbo-server.xml</param-value>
     </context-param>
    
     <listener>
      <description>spring监听器</description>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
    </web-app>

    第三步:配置文件,spring-dubbo-server.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p"
     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
      http://code.alibabatech.com/schema/dubbo 
      http://code.alibabatech.com/schema/dubbo/dubbo.xsd 
      http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"  default-autowire="byName">
    
            <bean id="PowerService" class="com.jk.power.service.PowerServiceImpl"></bean>
    
            <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的,保持唯一性 -->  
         <dubbo:application name="dubbo_provider"></dubbo:application>  
         <!-- 使用zookeeper注册中心暴露服务地址 -->    
         <dubbo:registry address="zookeeper://127.0.0.1:2181" register=""    check="false" subscribe="false" />
         <!-- dubbo端口号 -->  
            <dubbo:protocol name="dubbo" port="20883" ></dubbo:protocol>
         <dubbo:service interface="com.jk.power.service.PowerService" ref="PowerService" />  
    
    
    </beans>
    注意:不同服务器端口,端口号不同
    第四步:编写接口代码  PowerService.java代码
    package com.yt.power.service;
    public interface PowerService {
     public String findPowerById(String powerId);
    
     public void updatePower(String powerId, String powerName);
    }

    第五步:编写接口实现的代码PowerServiceImpl.java

    package com.yt.power.service;
    public class PowerServiceImpl implements PowerService {
     @Override
     public String findPowerById(String powerId) {
      return "当前ID是:" + powerId;
     }
     @Override
     public void updatePower(String powerId, String powerName) {
      System.out.println("当前ID为:" + powerId);
      System.out.println("当前名称为:" + powerName);
     }
    }

    duboo+Zookeeper 项目搭建

    1.  Zookeeper 的配置

    (1) 解压zookeeper ,在目录下建立文件夹 data 和log
    (2)在conf文件夹下 修改zoo_sample.cfg 改名为  zoo.cfg 添加
    #initLimit=10
    #syncLimit=5
    tickTime=2000
    clientPort=2181
    dataDir=D:\zookeeper-3.4.6\data
    # 错误日志的存放位置
    dataLogDir=D:\zookeeper-3.4.6\log
    经过测试此处 必须为双斜杠
    clientPort=2181
    (3)启动zookeeper,直接双击bin文件夹下的文件 

    启动后:

    (二)客户端代码编写

    项目结构图:

    1、pom.xml文件:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>dubbo-zookeeper-client</groupId>
      <artifactId>dubbo-zookeeper-client</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>dubbo-zookeeper-client Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <properties>
        <spring.version>4.0.1.RELEASE</spring.version>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>dubbo</artifactId>
          <version>2.5.3</version>
        </dependency>
        <dependency>
          <groupId>org.javassist</groupId>
          <artifactId>javassist</artifactId>
          <version>3.18.1-GA</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.netty</groupId>
          <artifactId>netty</artifactId>
          <version>3.2.9.Final</version>
        </dependency>
        <dependency>
          <groupId>org.apache.openejb</groupId>
          <artifactId>javaee-api</artifactId>
          <version>5.0-1</version>
          <scope>provided</scope>
        </dependency>
        <!-- zookeeper注册中心 -->
        <dependency> 
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.10</version>
     </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.annotation</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.ejb</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.weld</groupId>
          <artifactId>weld-osgi-bundle</artifactId>
          <version>1.0.1-SP3</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.servlet</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.5</version>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.annotation</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.ejb</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.weld</groupId>
          <artifactId>weld-osgi-bundle</artifactId>
          <version>1.0.1-SP3</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.servlet</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.annotation</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.ejb</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.jboss.weld</groupId>
          <artifactId>weld-osgi-bundle</artifactId>
          <version>1.0.1-SP3</version>
        </dependency>
        <dependency>
          <groupId>org.glassfish</groupId>
          <artifactId>javax.servlet</artifactId>
          <version>3.0.1</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.apache.openejb</groupId>
          <artifactId>javaee-api</artifactId>
          <version>5.0-1</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.1</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>dubbo-zookeeper-client</finalName>
      </build>
    </project>

    2、spring-dubbo-client.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p"
     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
      http://code.alibabatech.com/schema/dubbo 
      http://code.alibabatech.com/schema/dubbo/dubbo.xsd 
      http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"  default-autowire="byName">
    
            <!-- 消费方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用调用的,保持唯一性 -->  
            <dubbo:application name="consumer-of-helloworld-app"  />   
    
            <!-- 使用zookeeper注册中心发现暴露的服务地址 -->    
            <dubbo:registry address="zookeeper://127.0.0.1:2181" />     
    
            <!-- 生成远程服务代理,可以和本地bean一样使用demoService,该interface需要与服务端暴露的服务interface保持一致,该id已
    注入Spring -->    
         <dubbo:reference id="PowerService" interface="com.jk.power.service.PowerService"    />
    
    </beans>

    3、PowerService.java:

    package com.yt.power.service;
    public interface PowerService {
     public String findPowerById(String powerId);
    
     public void updatePower(String powerId, String powerName);
    
    }

    4、测试类:TestClient.java文件

    package test;
    import java.util.UUID;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import com.jk.power.service.PowerService;
    public class TestClient {
     public static void main(String[] args) {
      ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring-dubbo-client.xml");
      PowerService powerService = (PowerService) applicationContext.getBean("PowerService");
      for (int i = 0; true; i++) {
       String findPowerById = powerService.findPowerById("这是dubbo");
       System.out.println(findPowerById);
       powerService.updatePower(UUID.randomUUID().toString(), "梓晨轩");
      }
     }
    
    }
  • 相关阅读:
    ZZ
    Qt5获取网卡/IP等信息
    platforms
    [转]如何使用VS 2013發布一個可以在Windows XP中獨立運行的可執行文件
    spring cloud 服务提供者
    spring cloud: eureka搭建
    通过maven 上传jar 到nexus3,cong nexus3下载jar
    搭建turbine时 hystrix MaxConcurrentConnections reached 异常
    Zuul超时问题,微服务响应超时,zuul进行熔断
    微信公众号开发网址
  • 原文地址:https://www.cnblogs.com/12yang-ting/p/7496206.html
Copyright © 2020-2023  润新知