在远程调用服务提供者的实现之前,如果需要做一些参数验证、缓存、判断、小功能等等,满足要求再调用服务提供者的远程服务,则我们可以通过编写一个本地存根来实现这种功能。

(1)、在公共项目中或服务消费者项目中编写一个远程接口的本地存根实现。

 package cn.coreqi.service.stub;

 import cn.coreqi.entities.User;
import cn.coreqi.service.UserService; import java.util.List; public class UserServiceStub implements UserService {
private final UserService userService; //存储远程接口的代理实现 //必须有一个有参构造器,传入的是远程接口的代理实现
public UserServiceStub(UserService userService) {
//构造函数传入的是UserService的远程代理对象
this.userService = userService;
} @Override
public void addUser(User user) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(user != null) {
userService.addUser(user);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
}
} @Override
public void delById(Integer id) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(id != 0 || id != null){
userService.delById(id);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
}
} @Override
public void modifyUser(User user) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(user != null){
userService.modifyUser(user);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
}
} @Override
public User getById(Integer id) {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
if(id != 0 || id != null){
return userService.getById(id);
}
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
return null;
}
return null;
} @Override
public List<User> getList() {
try {
//在此处进行缓存、参数验证等等
//如果通过验证则调用远程代理实现的方法
return userService.getList();
}
catch (Exception e){
//可以在此处进行容错等任何AOP拦截事项
return null;
}
}
}

(2)、在服务消费者配置文件中配置本地存根

     <!--3、声明需要调用的远程服务接口,生成远程服务代理,可以和本地Bean一样使用-->
<dubbo:reference id="userService" interface="cn.coreqi.service.UserService" stub="cn.coreqi.service.stub.UserServiceStub"/>

Dubbo本地存根的更多相关文章

  1. Dubbo本地存根是什么,Dubbo本地伪装又是什么?

    真正的大师永远怀着一颗学徒的心 哈喽!大家好,我是小奇,一位程序员界的学徒 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 前言 书接上回,昨天打了 ...

  2. dubbo的本地存根(Stub)

    dubbo的本地存根的原理是:远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,那么就在服务消费者这一端提供了一个Stub类,然后当消费者调用provid ...

  3. dubbo之本地存根

    本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 ...

  4. 【2020-03-21】Dubbo本地环境搭建-实现服务注册和消费

    前言 本周主题:加班工作.本周内忙于CRUD不能自拔,基本每天都是九点半下班,下周上线,明天还要加班推进进度.今天是休息日,于是重拾起了dubbo,打算近期深入了解一下其使用和原理.之所以说是重拾,是 ...

  5. dubbo的本地存根

    在消费者创建存根类 修改消费者XML 也可以修改消费者注解

  6. DUBBO本地搭建及小案例

    DUBBO的介绍部分我这里就不介绍了,大家可参考官方文档. DUBBO的注册中心安装 DUBBO的注册中心支持好几种,公司用到zookeeper注册中心,所以我这边只说明zookeeper注册中心如何 ...

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

    一.dubbo服务化架构包含的内容 对于传统工程而言,分层的依据是按照包来区分.由于在相同的工程中,所以服务的提供和调用可以方便的实现. 但是对于分布式架构而言,服务的提供者负责服务具体的实现和接口规 ...

  8. Dubbo本地开发技巧

    背景 作为后端服务负载.前后分离的主要手段,dubbo在业界中使用率还比较高.随着Dubbo系统的增多,本地开发.调试就出现了麻烦之处 直接在开发本地起同样一份服务 由于Dubbo采用负载均衡的策略, ...

  9. dubbo本地搭建实例

    项目文件下载地址:http://download.csdn.net/detail/aqsunkai/9552711 概述     Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服 ...

随机推荐

  1. day28 反射 属性操作 getattr hasattr setattr delattr

    反射 用字符串来对应其同名的属性或者方法,通过某种方法调用这个字符串来执行方法或者获取属性 网络编程的时候非常好用,是很重要的内容 先看个示例吧: class Teather: dic = { &qu ...

  2. Java 8 的 Metaspace

    Java 8 的 Metaspace https://www.cnblogs.com/xrq730/p/8688203.html 被废弃的持久代 想起之前面试的时候有面试官问起过我一个问题:Java ...

  3. c# 对象存cookie

    下载并引用Newtonsoft.Json.dll 对象转json,然后存cookies string xxx= Newtonsoft.Json.JsonConvert.SerializeObject( ...

  4. MT【42】抛物线不常见性质1.

    评:特别的,当$PP'$为切线时,$\angle PSK=90^0$ 注:S为抛物线焦点.

  5. 11 Zabbix Item类型之Zabbix Calculated 计算型Item类型

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 11 Zabbix Item类型之Zabbix Calculated 计算型Item类型 计算类型 ...

  6. Android Support Library 是什么?

    这两天刚开始学习安卓,这里记录下这两天遇到的一些小问题. 首先先贴一个安卓 API 等级. 官方地址:https://developer.android.com/about/dashboards/ ( ...

  7. kindeditor上传图片的大小在哪控制

    请修改修改了multiimage.js 的imageSizeLimit = K.undef(self.imageSizeLimit, '3MB') 大小设置级可以

  8. CalISBN.java

    /****************************************************************************** * Compilation: javac ...

  9. Create ISO library over NFS for XEN server templates

    Based on Ubuntu – Server – install NFS on Ubuntu  – aptitude -y install nfs-kernel-server create a “ ...

  10. Redis和Memcached对比【转】

    Redis和Memcached对比 这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来.关于Redis与Memcached的比较更是比比皆是.然而,Redis ...