SSM(十三) 将dubbo暴露出HTTP服务

本文介绍了如何将一个Dubbo服务通过HTTP接口对外提供,主要涉及Spring、Java反射和SpringMVC相关知识。通过创建HttpProviderConf配置类,定义HttpRequest和HttpResponse,然后在Controller中实现服务调用。这种方式适用于简单服务的对外测试和调试,提供了方便快捷的接口调用方式。

dubbo暴露为http服务.jpg

前言

通常来说一个dubbo服务都是对内给内部调用的,但也有可能一个服务就是需要提供给外部使用,并且还不能有使用语言的局限性。

比较标准的做法是对外的服务我们统一提供一个openAPI,这样的调用方需要按照标准提供相应的appID以及密钥来进行验签才能使用。这样固然是比较规范和安全,但复杂度也不亚于开发一个单独的系统了。

这里所讲到的没有那么复杂,就只是把一个不需要各种权限检验的dubbo服务对外提供为HTTP服务。

调用示例:
dubbo-http封面.jpg

准备工作

以下是本文所涉及到的一些知识点:
- Spring相关知识。
- Java反射相关知识。
- SpringMVC相关知识。

其实思路很简单,就是利用SpringMVC提供一个HTTP接口。
在该接口中通过入参进行反射找到具体的dubbo服务实现进行调用。

HttpProviderConf配置类

首先需要定义一个HttpProviderConf类用于保存声明需要对外提供服务的包名,毕竟我们反射时需要用到一个类的全限定名:

public class HttpProviderConf {
   
   

    /**
     * 提供http访问的包
     */
    private List<String> usePackage ;
    //省略getter setter方法
}

就只有一个usePackage成员变量,用于存放需要包名。
至于用List的原因是允许有多个。

请求响应入参、出参

HttpRequest入参

public class HttpRequest {
   
   
    private String param ;//入参
    private String service ;//请求service
    private String method ;//请求方法
    //省略getter setter方法
}

其中param是用于存放真正调用dubbo服务时的入参,传入json在调用的时候解析成具体的参数对象。

service存放dubbo服务声明的interface API的包名。

method则是真正调用的方法名称。

HttpResponse 响应

public class HttpResponse implements Serializable{
   
   

    private static final long serialVersionUID = -552828440320737814L;

    private boolean success;//成功标志

    private String code;//信息码

    private String description;//描述
    //省略getter setter方法
}

这里只是封装了常用的HTTP服务的响应数据。

暴露服务controller

最重要的则是controller里的实现代码了。

先贴代码:

@Controller
@RequestMapping("/dubboAPI")
public class DubboController implements 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值