微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dubbo-02 20190315

2.dubbo测试

接着昨天的写~
2.监控中心
先把zookeeper启动起来呀呼嘿
监控中心不安装的话不影响后期操作 ,但是监控中心可以帮助我们通过可视化的界面来管理和维护众多的服务,很直观的看到服务的各个情况
地址: https://github.com/apache/incubator-dubbo

在这里插入图片描述


下载解压:

在这里插入图片描述


在这里插入图片描述


maven编译:

在这里插入图片描述


等待等待 等待 …

在这里插入图片描述


可以看到编译成功 如果不成功可能是因为网络呀一些问题 重新来一次就好了
现在jar包已经到了D:\soft\dubbo\incubator-dubbo-admin-develop\dubbo-admin-distribution\target 文件夹下

启动zookeeper!!! 记得呀

在这里插入图片描述


在这里插入图片描述

启动admin :
启动的时候我遇到过错误 大致意思就是zookeeper连接不上 不知道是不是zookeeper的问题 重新启动一下zookeeper 再接着启动dubboadmin 就好了 ~~

在这里插入图片描述


在这里插入图片描述

访问:http://127.0.0.1:8080 没有用户名密码 奇怪了 为什么没有呢~

在这里插入图片描述

3.demo编写
开始编写hello-world了 不容易呀 这里编写一个服务提供者提供收货地址 服务消费者呢 就从提供者中获取地址

  1. 创建服务提供者

    在这里插入图片描述


    在这里插入图片描述

  2. 创建包 com.test.mall
  3. 创建bean类 用户地址
package com.test.mall.bean;import java.io.Serializable;/**
 * 用户地址
 *
 */public class UserAddress implements Serializable {private Integer id;private String userAddress; //用户地址private String userId; //用户idprivate String consignee; //收货人private String phoneNum; //电话号码private String isDefault; //是否为认地址    Y-是     N-否public UserAddress() {super();// Todo Auto-generated constructor stub}public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum,
			String isDefault) {super();this.id = id;this.userAddress = userAddress;this.userId = userId;this.consignee = consignee;this.phoneNum = phoneNum;this.isDefault = isDefault;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserAddress() {return userAddress;}public void setUserAddress(String userAddress) {this.userAddress = userAddress;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getConsignee() {return consignee;}public void setConsignee(String consignee) {this.consignee = consignee;}public String getPhoneNum() {return phoneNum;}public void setPhoneNum(String phoneNum) {this.phoneNum = phoneNum;}public String getIsDefault() {return isDefault;}public void setIsDefault(String isDefault) {this.isDefault = isDefault;}}

  1. 编写服务方法 service
    接口:
package com.test.mall.service;import java.util.List;import com.test.mall.bean.UserAddress;/**
 * 用户服务
 *
 */public interface UserService {/**
	 * 按照用户id返回所有的收货地址
	 * @param userId
	 * @return
	 */public List<UserAddress> getUserAddressList(String userId);}

实现:

package com.test.mall.service.impl;import java.util.Arrays;import java.util.List;import com.test.mall.bean.UserAddress;import com.test.mall.service.UserService;/**
 * 接口的实现类 负责提供所需数据
 * @author LM
 *
 */public class UserServiceImpl implements UserService {public List<UserAddress> getUserAddressList(String userId) {
		UserAddress address1 = new UserAddress(1, "沙河高教園", "1", "李老师", "010-88888888", "Y");
		UserAddress address2 = new UserAddress(2, "沙河", "1", "王老师", "010-66666666", "N");return Arrays.asList(address1,address2);}}

在这里插入图片描述

  1. 服务消费者

    在这里插入图片描述


    在这里插入图片描述

  2. provider的接口和javabean 复制到consumer项目中
    consumer项目创建订单接口和实现类
    接口:
package com.test.mall.service;public interface OrderService {/**
	 * 初始化订单
	 * @param userId
	 */public void initOrder(String userId);}

实现:

package com.test.mall.service.impl;import java.util.List;import com.test.mall.bean.UserAddress;import com.test.mall.service.OrderService;import com.test.mall.service.UserService;/**
 *
 */public class OrderServiceImpl implements OrderService {
	
	UserService userService;
	 
	public void  initOrder(String userId) {
		 //查询用户收货地址 
		 //这个肯定是不能用的现在
		List<UserAddress> addList = userService.getUserAddressList(userId);
		System.out.println(addList);}}

这个接口跟实现 其实只是一个初期效果 userService肯定是不能直接使用的 因为他的实现在provider项目中

在这里插入图片描述

  1. 这里先优化一下代码 可以看到userService 和 UserAddress两个类 在两个项目中都有使用 甚至在更多项目中都会被使用 所以dubbo建议大家把这些公共的接口和实体类封装成一个单独的类 供调用

  2. 新建公共类工程

    在这里插入图片描述


    在这里插入图片描述

  3. 将之前的javabean和userService接口 复制到common工程中

    在这里插入图片描述

  4. 删除掉provider工程 和 consumer工程的bean和userService 因为不需要了 直接引入common就行了

    在这里插入图片描述

  5. consumer 和 provider都需要引入common pom.xml修改 2个项目的pom.xml都需要添加这个

  <dependencies>
  	<dependency>
  	      <!--common的pom.xml 开头就是这个配置 直接复制过来groupId   artifactId  version -->
  		  <groupId>com.test.mall</groupId>
		  <artifactId>mall-common</artifactId>
		  <version>0.0.1-SNAPSHOT</version>
  	</dependency>
  </dependencies>

  1. 将服务者provider注册注册中心 让服务消费者consumer去注册中心订阅服务提供者provider的地址
    1)导入依赖

    <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>com.test.mall</groupId>
      <artifactId>user-service-consumer</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
      <dependencies>
      	<dependency>
      	      <!--common的pom.xml 开头就是这个配置 直接复制过来groupId   artifactId  version -->
      		  <groupId>com.test.mall</groupId>
    		  <artifactId>mall-common</artifactId>
    		  <version>0.0.1-SNAPSHOT</version>
      	</dependency>
      	
      	<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.6.2</version></dependency>
    	
      </dependencies>
      
      </project>

    在这里插入图片描述


    2 ) 注册中心使用的是zookeeper 所以需要引入操作zookeeper的客户端

    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency>

3 )配置dubbo
http://dubbo.apache.org/zh-cn/docs/user/quick-start.html

在这里插入图片描述


困了 准备睡了 明天继续

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐