打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Dubbo入门教程

实现功能

存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据.

安装zookeeper

  1. 解压zookeeper-3.4.8.tar.gz,将/conf/zoo_sample.cfg修改为zoo.cfg,修改配置文件


    Paste_Image.png

2.双击启动zookeeper


Paste_Image.png

创建工程B

  • 新建B工程Maven项目


    Paste_Image.png
  • 导入依赖

    <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/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>io.menm91</groupId>  <artifactId>dubbo-b</artifactId>  <version>1.0.0-SNAPSHOT</version>  <packaging>war</packaging>  <dependencies>      <dependency>          <groupId>io.menm91</groupId>          <artifactId>dubbo-b-api</artifactId>          <version>1.0.0-SNAPSHOT</version>      </dependency>      <!-- dubbo采用spring配置方式,所以需要导入spring容器依赖 -->      <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-webmvc</artifactId>          <version>4.1.3.RELEASE</version>      </dependency>      <dependency>          <groupId>org.slf4j</groupId>          <artifactId>slf4j-log4j12</artifactId>          <version>1.6.4</version>      </dependency>      <dependency>          <groupId>com.alibaba</groupId>          <artifactId>dubbo</artifactId>          <version>2.5.3</version>          <exclusions>              <exclusion>                  <!-- 排除传递spring依赖 -->                  <artifactId>spring</artifactId>                  <groupId>org.springframework</groupId>              </exclusion>          </exclusions>      </dependency>      <!-- 导入zookeeper依赖 -->      <dependency>          <groupId>org.apache.zookeeper</groupId>          <artifactId>zookeeper</artifactId>          <version>3.3.3</version>      </dependency>      <dependency>          <groupId>com.github.sgroschupf</groupId>          <artifactId>zkclient</artifactId>          <version>0.1</version>      </dependency>  </dependencies>  <build>      <plugins>          <plugin>              <groupId>org.apache.tomcat.maven</groupId>              <artifactId>tomcat7-maven-plugin</artifactId>              <version>2.2</version>              <configuration>                  <port>8081</port>                  <path>/</path>              </configuration>          </plugin>      </plugins>  </build></project>
  • 配置log4j文件

    log4j.properties

    log4j.rootLogger=DEBUG,A1log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

创建B-API工程

  • 新建B-API工程MAVEN项目


    Paste_Image.png
  • 新建User类

package io.menm91.bean;//使用dubbo要求传输的对象必须实现序列化接口public class User implements java.io.Serializable {     private static final long serialVersionUID = -2668999087589887337L;     private Long id;     private String username;     private String password;     private Integer age;     public Long getId() {             return id;     }     public void setId(Long id) {             this.id = id;     }     public String getUsername() {             return username;     }     public void setUsername(String username) {             this.username = username;     }     public String getPassword() {             return password;     }     public void setPassword(String password) {             this.password = password;     }     public Integer getAge() {             return age;     }     public void setAge(Integer age) {             this.age = age;     }    @Override    public String toString() {        return "User [username=" + username + ", age=" + age + "]";    }}
  • 创建UserService(接口)提供查询服务
package io.menm91.service;import io.menm91.bean.User;import java.util.List;public interface UserService {    /**     * 查询所有用户     * @return     */    public List<User> queryAll();}

在B工程中导入B-API的依赖

  • 导入B-API工程的依赖


    Paste_Image.png
  • 创建UserServiceImpl实现类

package io.menm91.service.impl;import io.menm91.bean.User;import io.menm91.service.UserService;import java.util.ArrayList;import java.util.List;public class UserServiceImpl implements UserService {    /**     * 这里通过模拟查询数据库返回用户信息     */    public List<User> queryAll() {        List<User> list = new ArrayList<User>();        for (int i = 0; i < 10; i++) {                User user = new User();                user.setAge(10 + i);                user.setId(Long.valueOf(i + 1));                user.setPassword("123456");                user.setUsername("username_" + i);                list.add(user);        }        return list;    }}
  • 编写dubbo配置文件

Paste_Image.png
<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    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/aop http://www.springframework.org/schema/aop/spring-aop-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">    <!-- 提供方应用信息,用于计算依赖关系 -->    <dubbo:application name="dubbo-b-server" />    <!-- 这里使用的注册中心是zookeeper -->    <dubbo:registry address="zookeeper://127.0.0.1:2181"        client="zkclient" />    <!-- 用dubbo协议在20880端口暴露服务 -->    <dubbo:protocol name="dubbo" port="20880" />    <!-- 将该接口暴露到dubbo中 -->    <dubbo:service interface="io.menm91.service.UserService"        ref="userServiceImpl" />    <!-- 将具体的实现类加入到Spring容器中 -->    <bean id="userServiceImpl" class="io.menm91.service.impl.UserServiceImpl" /></beans>
  • 编写web.xml文件
<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_2_5.xsd"    id="WebApp_ID" version="2.5">    <display-name>dubbo-b</display-name>    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:dubbo/dubbo-*.xml</param-value>    </context-param>    <!--Spring的ApplicationContext 载入 -->    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list></web-app>
  • 启动tomcat

Paste_Image.png

搭建A系统MAVEN项目

  • 创建A系统maven项目


    Paste_Image.png
  • 导入依赖

    <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/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>io.menm91</groupId>  <artifactId>dubbo-a</artifactId>  <version>1.0.0-SNAPSHOT</version>  <dependencies>      <dependency>          <groupId>io.menm91</groupId>          <artifactId>dubbo-b-api</artifactId>          <version>1.0.0-SNAPSHOT</version>      </dependency>      <!-- dubbo采用spring配置方式,所以需要导入spring容器依赖 -->      <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-webmvc</artifactId>          <version>4.1.3.RELEASE</version>      </dependency>      <dependency>          <groupId>org.slf4j</groupId>          <artifactId>slf4j-log4j12</artifactId>          <version>1.6.4</version>      </dependency>      <dependency>          <groupId>com.alibaba</groupId>          <artifactId>dubbo</artifactId>          <version>2.5.3</version>          <exclusions>              <exclusion>                  <!-- 排除传递spring依赖 -->                  <artifactId>spring</artifactId>                  <groupId>org.springframework</groupId>              </exclusion>          </exclusions>      </dependency>      <dependency>          <groupId>org.apache.zookeeper</groupId>          <artifactId>zookeeper</artifactId>          <version>3.3.3</version>      </dependency>      <dependency>          <groupId>com.github.sgroschupf</groupId>          <artifactId>zkclient</artifactId>          <version>0.1</version>      </dependency>      <dependency>          <groupId>junit</groupId>          <artifactId>junit</artifactId>          <version>4.12</version>      </dependency>  </dependencies></project>
  • 配置log4j.properties文件

    log4j.properties

    log4j.rootLogger=DEBUG,A1log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
  • 编写dubbo配置文件


Paste_Image.png
<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"    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/aop http://www.springframework.org/schema/aop/spring-aop-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">    <!-- 提供方应用信息,用于计算依赖关系 -->    <dubbo:application name="dubbo-a-consumer" />    <!-- 这里使用的注册中心是zookeeper -->    <dubbo:registry address="zookeeper://127.0.0.1:2181"        client="zkclient" />    <!-- 从注册中心中查找服务 -->    <dubbo:reference id="userService"        interface="io.menm91.service.UserService" /></beans>
  • 编写UserServiceTest测试类


    Paste_Image.png
package io.menm91.service;import io.menm91.bean.User;import java.util.List;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserServiceTest {    private UserService userService;    @Before    public void setUp() throws Exception {        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(                "classpath:dubbo/dubbo-*.xml");        userService = applicationContext.getBean(UserService.class);    }    @Test    public void testQueryAll() {        List<User> userList = userService.queryAll();        for(User user : userList){            System.out.println(user.toString());        }    }}
  • 查看输出结果


    Paste_Image.png

源代码:https://github.com/menm91/dubbo-index.git

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)配置详解,dubbo-admin 下载
【JAVA秒会技术之Dubbo入门】Dubbo在电商开发中的应用
Dubbo学习之简单环境搭建
dubbo核心概念
Dubbo和Zookeeper
spring-session Redis实现Session共享
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服