深入dubbo笔记——项目实战

栏目: 后端 · 发布时间: 7年前

内容简介:一、案例说明存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。
编辑推荐:
本文来自于CSDN,本文详细介绍了dubbo的环境搭建、工程创建的详细步骤的相关内容 ,希望对大家的学习能有所帮助。

一、案例说明

存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。

深入dubbo笔记——项目实战

二、环境搭建

安装zookeeper,解压(zookeeper-3.4.8.tar.gz)得到如下:

深入dubbo笔记——项目实战

然后进入conf将zoo_sample.cfg改名成zoo.cfg。并相关如下内容:

深入dubbo笔记——项目实战

该目录为存放数据的目录。然后启动,在bin目录下:

深入dubbo笔记——项目实战

深入dubbo笔记——项目实战

三、工程创建

1、搭建B工程

1.导入依赖

<dependencies>

<!-- 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>

2.创建对象

public class User implements Serializable{

//序列化自动生成

private static final long serialVersionUID = 1749666453251148943L;

private Long id;

private String username;

private String password;

private Integer age;

//getter and setter

}

3.创建服务

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;

}

}

4.编写Dubbo的配置文件

位置我放在根目录下dubbo/dubbo-server.xml,内容如下:

<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="com.shen.dubbo.service.

UserService" ref="userServiceImpl" />

<!-- 将具体的实现类加入到Spring容器中 -->

<bean id="userServiceImpl" class="com.shen.dubbo.service.impl.UserServiceImpl" />

</beans>

5.编写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_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>

</web-app>

6.启动tomcat

在控制台中将会看到如下内容:

深入dubbo笔记——项目实战

可以看到,已经将UserService服务注册到zookeeper注册中心,协议采用的是dubbo。

2、搭建A工程

1.拷贝基本文件

从b系统中拷贝User对象、UserService接口到a系统

.

深入dubbo笔记——项目实战

2.编写Dubbo的配置文件

<!-- 提供方应用信息,用于计算依赖关系 -->

<dubbo:application name="dubbo-a-consumer" />

<!-- 这里使用的注册中心是zookeeper -->

<dubbo:registry address="zookeeper://127.0.0.1:2181" client="zkclient"/>

<!-- 从注册中心中查找服务 -->

<dubbo:reference id="userService" interface="com.shen.dubbo.service.UserService"/>

3.编写UserService测试用例

public class UserServiceTest {

private UserService userService;

@Before

public void setUp() throws Exception {

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(

"classpath:dubbo/*.xml");

this.userService = applicationContext.getBean(UserService.class);

}

@Test

public void testQueryAll() {

List<User> users = this.userService.queryAll();

for (User user : users) {

System.out.println(user);

}

}

}

查看效果如下:

深入dubbo笔记——项目实战

可以看到,已经查询到10条数据,那么,也就是说A系统通过B系统提供的服务获取到了数据。

3、解决代码重复问题

我们可以看到,在上面的案例中User实体和服务接口两个项目都需要使用,代码复用不高。那么我们可以将该部分代码抽取出来打成包,以供所有系统使用。故可以在创建一个工程项目名为dubbo-b-api。然后将相关的代码都放到该项目中,再在其它项目中导入该项目依赖即可。这也是我们在真实项目中应该做的事情,因为调用方未必知道细节。


以上所述就是小编给大家介绍的《深入dubbo笔记——项目实战》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具