dubbo(4):配置与测试_dubbo测试配置_游王子的博客-程序员秘密

技术标签: dubbo  

一、服务提供者配置与测试

    (1)在服务提供者中引入依赖

<!--        dubbo依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.8</version>
        </dependency>
<!--        注册中心使用的是zookeeper,引入操作zookeeper的客户端 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.1.0</version>
        </dependency>

(2)配置服务提供者

    创建provider.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: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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!--    指定当前服务应用的名字 -->
    <dubbo:application name="user-service-provider"></dubbo:application>
<!--    指定注册中心的位置-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
<!--    指定通信规则(通信协议、通信端口)-->
    <dubbo:protocol name="dubbo" port="20080"></dubbo:protocol>
<!--    暴露服务 ref指向服务真正实现-->
    <dubbo:service interface="com.buba.service.UserService" ref="UserServiceImpl"></dubbo:service>

    <bean id="UserServiceImpl" class="com.buba.service.impl.UserServiceImpl"></bean>
</beans>

(3)测试

    编写测试代码:

package com.buba;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Provider {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"provider.xml"});
        context.start();
        System.in.read(); // 按任意键退出
    }
}

   启动zookeeper服务,然后启动zookeeper客户端,最后执行测试代码。

    登录监控中心查看:

二、服务消费者配置与测试

(1)引入依赖

<!--        dubbo依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.8</version>
        </dependency>
<!--        注册中心使用的是zookeeper,引入操作zookeeper的客户端 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>5.1.0</version>
        </dependency>

(2)消费者配置文件

<?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: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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">


    <!--    指定当前服务应用的名字 -->
    <dubbo:application name="order-service-consumer"></dubbo:application>
    <!--    指定注册中心的位置-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
    <!--    声明需要调用远程服务的接口,生成远程服务代理-->
    <dubbo:reference interface="com.buba.service.UserService" id="userService"></dubbo:reference>

    <bean class="com.buba.service.impl.OrderServiceImpl" id="orderServiceImpl">
        <property name="userService" ref="userService"></property>
    </bean>
</beans>

(3)补全业务层的实现

package com.buba.service.impl;

import com.buba.pojo.UserAddress;
import com.buba.service.OrderService;
import com.buba.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

public class OrderServiceImpl implements OrderService {

    private UserService userService;

    @Override
    public void initOrder(String userId) {
        List<UserAddress> userAddressList = userService.getUserAddressList("1");
        userAddressList.forEach(System.out::println);
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}

(4)编写测试类执行测试

package com.buba.controller;

import com.buba.service.OrderService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("consumer.xml");
        OrderService bean = classPathXmlApplicationContext.getBean(OrderService.class);
        bean.initOrder("1");
        System.in.read();
    }
}

    在监控中心可以看到服务关系。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40298351/article/details/116947116

智能推荐

Quartz定时任务2.3版本数据库表字段说明_qrtz_simprop_triggers_Java升级之路的博客-程序员秘密

文章目录前言一、qrtz_job_details二、qrtz_triggers三、qrtz_cron_triggers四、qrtz_blob_triggers五、qrtz_fired_triggers六、qrtz_paused_trigger_grps七、qrtz_simple_triggers八、qrtz_simprop_triggers九、qrtz_calendars十、qrtz_locks十一、qrtz_scheduler_state总结前言一、qrtz_job_detailsqrtz.

ARM虚拟化扩展–内存和中断(第2部分)_danpob13624的博客-程序员秘密

在本系列的第一部分中 ,我介绍了虚拟化的主题。 今天,我将更深入地探索用于内存管理和中断处理的ARM虚拟化扩展。 在核心内,虚拟化主要提供对系统寄存器的控制。 但是,随着我们远离核心并开始与外界进行交流,问题中的困难和细微差别开始浮现,并且对虚拟化的硬件支持的需求也日益明显。 需要注意的是,本文将介绍ARM体系结构的各个部分。 要更深入地了解实现细节,可以查阅《 ARM体系结构参考手册》...

Linux&nbsp;设备驱动常用头文件定义_shangyaowei的博客-程序员秘密

#include#include #include #include #include             //包含了cdev 结构及相关函数的定义。#include                  //包含了structinode 的定义,MINOR、MAJOR的头文件。#include              //包含了kcalloc、kzalloc内存分配函数

Android数据绑定库Data Binding Library介绍_data binding 在 library 找不到资源_u010074054的博客-程序员秘密

在安卓巴士上看到了这篇文章,感觉自己有点 落后了,赶紧学习了一下。转载地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=245694&extra=&_dsign=29ec40492015年的Google I/O 大会上发布了三个重要的支持库:1、Material design支持库:Android S

#stm32高级定时器PWM互补输出+死区插入使用详解#_AimerCode的博客-程序员秘密

stm32高级定时器PWM互补输出+死区插入使用详解意法半导体开发的stm32系列单片机功能强大,其高级定时器TIM1和TIM8功能强大,配置较繁琐,本文介绍使用标准库进行配置的过程。标准库例程int main(void){ /*!< At this stage the microcontroller clock setting is already configured,

RSA 加密/解密—PKCS8 (Java与C#互通BouncyCastle)_bouncycastle pkcs8_笨蛋girl的博客-程序员秘密

前提:需要调用JavaAPI进行签名/验签、加密/解密,需要使用BouncyCastle 类库进行Java与C#之间的数据互通。加密理解点:1:java 私钥采用的是PKCS8 ;C# 私钥采用的是PKCS1 格式2:RSA加密 公钥加密,私钥解密或者私钥加密和公钥解密【这点和签名sign不同,sign需要私钥签名】3:如果 java RSA加密 最后生成16进制 C#...

随便推点

MRAppMaster详细分析_莫言静好、的博客-程序员秘密

一 MRAppMaster介绍MRAppMaster是MapReduce的ApplicationMaster实现,它使得MapReduce可以直接运行在YARN上,它主要作用在于管理作业的生命周期:1.1作业的管理:作业的创建,初始化以及启动等1.2向RM申请资源和再分配资源1.3Container的启动与释放1.4监控作业运行状态1.5作业恢复 二 所涉及到的

长沙岳阳308公里往返骑行拉练_weixin_30733003的博客-程序员秘密

谨以这次长沙岳阳308公里往返骑行拉练,告别我终将离去的青春。1. 许下心愿2011年末的时候,我给2012年的自己许了3个心愿,第1个心愿就是在2012年6月10日进行一次更长距离的骑行拉练。单日骑行距离已成为我骑自行车的追求与乐趣之一。靖港铜官,我第一次突破了100公里;韶山花明楼,我第一次接近了200公里;环长株潭,我第一次突破了200公里并创造264公里的个人最好成绩。...

反射生成的类无法进行自动注入的解决方案_我,大虫的博客-程序员秘密

造成问题的原因:之前我有一个设计,需要设置一个灵活的过滤规则,但考虑到各部门之间的过滤规则过于繁复,依靠个人能力完全无法在短时间内完成,因此我写了一个接口,让使用者通过实现接口来实现他们自己的过滤规则。问题:设计就是让使用者通过实现该接口,并在我的配置文件里写他们的类路径,我通过反射生成这个类,并加载进我的方法。然后,问题发生了:在这个类中,无法进行Spring工厂注入。问题发生的原理:...

状态空间离散化matlab,线性连续系统状态空间模型的离散化.ppt_Jerry Jho的博客-程序员秘密

线性连续系统状态空间模型的离散化* * * * * * * * * * * * * * * * * * * * Ch.3 线性系统的时域分析 目录(1/1) 目 录 概述 3.1 线性定常连续系统状态方程的解 3.2 状态转移矩阵及其计算 3.3 线性时变连续系统状态方程的解 3.4 线性定常连续系统的离散化 3.5 线性定常离散系统状态方程的解 3.6 Matlab问题 本章小结 线性连续系...

用程序解密爱因斯坦经典难题_weixin_30718391的博客-程序员秘密

爱因斯坦曾在20世纪初提过一个经典问题,据说世界上有98%的人回答不出来问题:在一条街上,有5座房子,喷了5中颜色。每个房子住着不同国籍的人。每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物。问题是:谁养鱼?提示:1.英国人住红色房子2.瑞典人养狗3.丹麦人喝茶4.绿色房子在白色房子左边5.绿房子主人喝咖啡6.抽PallMall香烟的人养鸟7.黄色房子的主人抽Dunhill香烟8.住在中间房子的...

uniapp页面滚动到页面可指定位置_app 自动定位到 页面scoll_古木2019的博客-程序员秘密

//滚动到指定位置 ScrollPosition(){ let that = this; uni.createSelectorQuery().select(".top-comment").boundingClientRect(function(res){//定位到你要的class的位置 console.log("标签获取====&gt;",typeof(res.top)) uni.pageScrollTo({ scrollT.