Dubbo-本地测试直连

一、服务提供方

<?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="dubbo-provider" />
    <!-- 测试环境:register 是否向此注册中心注册服务,如果设为false,将只订阅,不注册 -->
    <dubbo:registry protocol="zookeeper" address="zookeeper://xxx.xxx.xxx.xxx:32181" register="false" />

    <!-- provider提供方 -->
    <!-- 用dubbo协议在20882端口暴露服务 -->
    <!-- 服务提供者协议配置,提供方需要指定端口,不同提供方需要使用不同端口,不然会有端口冲突,使用的端口需要在防火墙iptables中配置允许通过 -->
    <dubbo:protocol name="dubbo" port="20882" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.xxx.dubboprovider.Ixxx" ref="serviceA" version="1.0.0" timeout="1200000" />
    <!-- 和本地bean一样实现服务 -->
    <bean id="serviceA" class="com.xxx.dubboprovider.impl.xxxxImpl" />

</beans>

如果是本地连接测试环境的的dubbo,此处可以不用写,永自带的提供方即可;如果是本地开启注册到zookeeper,那么此处就要写上相关信息

上述就转换为:直连提供者只需要在消费端设置 。

二、服务消费方

<?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-admin或dubbo-monitor会显示这个名字,方便识别 -->
    <dubbo:application name="dubbo-client" />

    <!-- 测试环境:调试直连的话加上这个属性 register="false" -->
    <dubbo:registry protocol="zookeeper" address="zookeeper://xxx.xxx.xxx.xxx:32181" register="false" />

    <!-- 逾期信息 -->
    <dubbo:reference id="dubboProviderService" interface="com.xxx.dubboprovider.Ixxx" check="false" version="1.0.0" url="dubbo://xxx:xxx:xxx:xxx:port"/>
</beans>

三、启动测试程序主入口

package com.xxx.xxx.xxx.dubbo;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.macula.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * <p>
 * <b>DubboMain</b> is 测试Dubbo主流程使用
 * </p >
 *
 * @since 2019年10月12日 10:49:54
 * @author Liuyc
 * @version $Id: codetemplates.xml 1145 2019年10月12日 Liuyc $
 */
public class DubboMain {

    private static final Log log = LogFactory.getLog(DubboMain.class);

    public static void main(String[] args) {
        try {
            ClassPathXmlApplicationContext parentContext = new ClassPathXmlApplicationContext(
                    "classpath:applicationContext-root.xml");
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {
 "classpath:/configs/applicationContext-app.xml",
                            "classpath:/configs/applicationContext-core.xml" }, parentContext);

            ApplicationContext.setContainer(context);

            context.start();

            System.out.println(new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss]").format(new Date())
                    + " Dubbo service server started!");
        } catch (Exception e) {
            System.out.println(e);
            log.error("== DubboProvider context start error:",e);
        }
        synchronized (DubboMain.class) {
            while (true) {
                try {
                    DubboMain.class.wait();
                } catch (InterruptedException e) {
                    log.error("== synchronized error:",e);
                }
            }
        }
    }

}

为了方便测试,可以先把API合并到dubbo中,发布之后,再测试本地的接口实现是否正确

四、测试入口

package com.xxx.xxx.xxx.api.impl;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 *
 * @author Liuyc
 *
 */
@RunWith(SpringJUnit4ClassRunner.class) // 使用junit4进行测试
@ContextConfiguration(locations = { "classpath:api-consumer.xml" }) // 加载配置文件:当前的消费者是测试中的消费者,可以拷贝一份过来
public class TestApi {

    private static final Log log = LogFactory.getLog(TestApi.class);

    @Autowired
    XxxApi xxxApi;

    // 1. 此处可以测试自己的API是否正确
    @Test
    public void getMyActivities() {
         // to do something
    }

}                

注意:启动的时候可以run,也可以debug,可以任意测试是否正确;如果很有信息,可以使用官网的简易测试  invoke,参考:http://dubbo.apache.org/zh-cn/docs/user/references/telnet.html

原文地址:https://www.cnblogs.com/yuchuan/p/dubbo_test.html

时间: 2024-10-13 11:28:55

Dubbo-本地测试直连的相关文章

dubbo本地服务化实现(dubbo三)

一.dubbo服务化架构包含的内容 对于传统工程而言,分层的依据是按照包来区分.由于在相同的工程中,所以服务的提供和调用可以方便的实现. 但是对于分布式架构而言,服务的提供者负责服务具体的实现和接口规范,服务的消费者只关心接口规范即可.但是 无论是服务的提供者还是服务的消费者都会涉及到诸如公共工具类.接口.DO.VO.等公共代码,因此一个简单的 dubbo服务架构模式如下: 服务提供者:提供服务接口的实现,发布服务地址,提供服务 服务消费者:获取服务地址,使用服务接口调用服务,处理服务调用结果

win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)

原文:http://www.cnblogs.com/naniannayue/archive/2012/11/19/2776948.html 要想成功架设SSL安全站点关键要具备以下几个条件. 1.需要从可信的证书办法机构CA获取服务器证书. 2.必须在WEB服务器上安装服务器证书. 3.必须在WEB服务器上启用SSL功能. 4.客户端(浏览器端)必须同WEB服务器信任同一个证书认证机构,即需要安装CA证书. 下面,我们对照上面的四部,进行一步一步的操作 1:需要从可信的证书办法机构CA获取服务器

win10系统iis下部署https (ssl/tls)本地测试环境

有时想要把公司的某些XX项目部署成https站点,是为了在传输层加密传输,防止他人嗅探站点重要数据信息,平常我们使用的http方式都是明文方式传输的很不安全,容易被他人窃取.而有些时候要在本地搭建https环境用来测试,下面看具体在本地搭建https测试站点. 首先要去证书认证机构申请一个证书用来测试,认证机构很多,如              1.http://www.symantec.com/zh/cn/ 2.https://www.geotrust.com/  3.https://cn.g

在本地测试一次成功的AJAX请求

要在本地测试AJAX,首先是环境的搭建,下面以wamp为例. 1.先在wamp的官网下载wamp的安装包,网址 http://www.wampserver.com/. 2.安装wamp.如果安装过程中提示丢失VCRUNTIME140.DLL缺失,请看这篇文章:http://www.jb51.net/article/81595.htm. 3.安装完wamp后,双击桌面上wamp的快捷方式启动wamp. 如果wamp正常启动,任务栏右下角有绿色的w图标,如图: 接下来是代码的编写. 在wamp安装目

如何本地测试例如QQ登录等第三方接口

前言:现在基本是个网站就会集成第三方的一些接口,比如QQ登录.分享等等.但是在开发的时候,尤其是没有这方面经验的开发人员来说,调试流程时会显得迷茫,不知道怎么调试.这里就个人的这方面学习摸索做一个总结. 如题,本篇只是总结 如何本地测试例如QQ登录等第三方接口. 特别说明:1.本文以集成QQ登录接口为例.2.因为是NET程序猿,所以以VS举例说明 关于如何成为QQ开发者,如何申请AppID以及AppKey,不再赘述!百度百科上都有了,还说什么呢!呵呵~ 关于如何集成,这个官网上都有各种SDK,而

搭建可调试的微信公众平台本地测试环境

背景: 最近在筹建一个协同开发的开源项目NWechat,项目开始前,有几样事情要准备. 1)项目管理系统的选定: 2)源码版本控制系统的选定: 3)开发环境的搭建. 4)团队的建设. 开发环境搭建便是项目启动前,要做的几件事情之一. 一.问题是这样的 在微信开发的时候,必须要输入URL,而该URL必须是外网域名. 这就造成了一个问题,我们在开发环境下不能测试代码,更谈不上调试代码了. 二.大家是这么做的 我问过一些开发者正在使用的方案: 1)搭建测试服务器. 在开发环境编码后,提交到测试服务器测

java.lang.IllegalArgumentException: SessionContext must be an HTTP compatible implementation.:模块化本地测试shiro的一些总结

项目由于是多模块的,所以,测试的时候我想现将shiro框架进行本地测试,然后再放入框架里面,但是这个困扰我了两天了都,其实我应该想到的,只是想多试试,最后还不如多想想 先说一下系统的基本情况,项目是多模块协同开发的,我负责的用户管理模块和权限认证模块,权限认证使用的是shiro框架,然后我就在网上学习了这个框架以及这个框架和ssm的整合,问题就出现在这里:学习的是和ssm框架进行整合,而这个整合用到了web的内容,而我只是本地化单元测试,所以我在写test cases的时候就出现了很多异常,让我

友言评论框本地测试问题

友言评论框在本地测试的时候,如果你的域名是localhost/***,在友言后台是直接验证不通过的. 因为他的验证是通过域名验证,而localhost如果大家都用的话是没法分清楚谁是谁的,所以理论上友言之类的社会化评论框只支持线上使用. 但是问题来了,友言怎么能分清楚写的是本地还是线上的域名呢?答案是,它根本不用分清楚. 友言只是会进行唯一性验证,如果这个域名或者ip之前没有出现过,它就会给你验证通过,如果出现过,就会让你用其他方式,比如嵌入meta标签,修改html等方式验证. 所以说如果想本

谷歌浏览器报错:跨域问题处理( Access-Control-Allow-Origin)_ 用于本地测试的快捷解决方法

报错提示如下: XMLHttpRequest cannot load http://www.xxxx.com/264/Data/GetScreenInfo. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 今天需要做一个本地测试,html中的js效果涉及跨域拉取数据的问题,Chrome报错并拒绝数

用java开发微信公众号:测试公众号与本地测试环境搭建(一)

俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境. 测试公众号 微信公众号有订阅号.服务号.企业号,在注册的时候看到这样的信息,只有订阅号可以个人申请,服务号和企业号要有企业资质才可以.这里所说的微信公众号开发指的是订阅号和服务号. 另外,未认证的个人订阅号有一些接口是没有权限的,并且目前个人订阅号已不支持微信认证,也就是说个人订阅号无法调用一些高级的权限接口,下图就是一个未认证的个人订阅号所具备权限列表,像生成二