dubbo+zookeeper部署(入门)

一、下载zookeeper并启动

https://www-us.apache.org/dist/zookeeper/

修改conf目录下的zoo_simple.cfg重命名为zoo.cfg(zookeeper启动会自动找到这个配置文件,并可在这个配置文件下修改数据和日志存储位置)

启动bin目录下的zkServer.cmd,ok。

二、创建公共的接口工程

目录结构如下

其中liuli包下放所有接口提供给其他工程使用。

三、创建公共的pom与配置文件工程(本实例仅有pom)

在pom.xml中引入如下的依赖

<properties>
      <org.springframework.version>4.3.14.RELEASE</org.springframework.version>
  </properties>
  
  <dependencies>
      <!-- dubbo配置 -->
      <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.5.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.13</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.netty</groupId>
        <artifactId>netty</artifactId>
        <version>3.2.6.Final</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
    <dependency>
        <groupId>com.github.sgroschupf</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.1</version>
    </dependency>
  
      <!-- spring配置 -->
      <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
  </dependencies>

 四、创建服务提供者

pom依赖

<dependency>
          <groupId>com.test</groupId>
          <artifactId>common-api</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
      <dependency>
          <groupId>com.test</groupId>
          <artifactId>common-pom</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>

 注意:引入工程后,需要将前两个项目打成jar包,并打开cmd,输入命令行

mvn install:install-file -Dfile=<jar-path> -DgroupId=<group> 
-DartifactId=<artifactId> -Dversion=<version> -Dpackaging=<packaging> -DlocalRepositoryPath=<path>

将jar包加入本地仓库,否则当服务端运行时会报ClassNotFound异常。

创建接口实现包,并重写接口方法

package liuli.impl;

import org.springframework.stereotype.Service;

import liuli.MyService;

@Service("mySerivce")
public class MyServiceImpl implements MyService {

    public String sayHello() {
        return "hello";
    }

    public String sayBye(String name) {
        return name+"bye!!!!";
    }

}

配置spring.xml (注册dubbo服务)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        <!-- 扫描注解 -->
        <context:component-scan base-package="liuli.impl"></context:component-scan>
        
        <dubbo:application name="mine"/>
        <!-- 注册到zookeeper上去 -->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
        <!-- 暴露的端口 -->
        <dubbo:protocol name="dubbo" port="28080"></dubbo:protocol>
        <!-- 服务提供接口 -->
        <dubbo:service interface="liuli.MyService" ref="mySerivce"></dubbo:service>
        
</beans>

再配好web.xml  放入tomcat运行即可

五、创建服务消费者(使用springmvc)

 目录结构

pom依赖

<dependency>
          <groupId>com.test</groupId>
          <artifactId>common-api</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
      <dependency>
          <groupId>com.test</groupId>
          <artifactId>common-pom</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>

springmvc.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        
        <dubbo:application name="mine"/>
        <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
        <!-- 当使用该标签时使用@AutoWired注入服务 -->
        <!-- <dubbo:reference id="myService" check="false" interface="liuli.MyService"></dubbo:reference> -->
        <!-- 当使用该标签时使用@Reference注入服务 -->
        <dubbo:annotation package="liuli.controller" />
        
        <context:annotation-config />
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
        <context:component-scan base-package="liuli.controller"></context:component-scan>

</beans>

MyHandler.java

package liuli.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.dubbo.config.annotation.Reference;

import liuli.MyService;

@Controller
public class MyHandler {
    
    @Reference(interfaceClass=MyService.class)
    private MyService service;
    
    @RequestMapping("/test.do")
    @ResponseBody
    public String test1(String name) {
        return service.sayBye(name);
    }
    

}

在web.xml中配好,放入tomcat中运行。

大功告成!!!

猜你喜欢

转载自www.cnblogs.com/liulihaha/p/10542049.html