Dubbo本地存根
在远程调用服务提供者的实现之前,如果需要做一些参数验证、缓存、判断、小功能等等,满足要求再调用服务提供者的远程服务,则我们可以通过编写一个本地存根来实现这种功能。
(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本地存根的更多相关文章
- Dubbo本地存根是什么,Dubbo本地伪装又是什么?
真正的大师永远怀着一颗学徒的心 哈喽!大家好,我是小奇,一位程序员界的学徒 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 前言 书接上回,昨天打了 ...
- dubbo的本地存根(Stub)
dubbo的本地存根的原理是:远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,那么就在服务消费者这一端提供了一个Stub类,然后当消费者调用provid ...
- dubbo之本地存根
本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 ...
- 【2020-03-21】Dubbo本地环境搭建-实现服务注册和消费
前言 本周主题:加班工作.本周内忙于CRUD不能自拔,基本每天都是九点半下班,下周上线,明天还要加班推进进度.今天是休息日,于是重拾起了dubbo,打算近期深入了解一下其使用和原理.之所以说是重拾,是 ...
- dubbo的本地存根
在消费者创建存根类 修改消费者XML 也可以修改消费者注解
- DUBBO本地搭建及小案例
DUBBO的介绍部分我这里就不介绍了,大家可参考官方文档. DUBBO的注册中心安装 DUBBO的注册中心支持好几种,公司用到zookeeper注册中心,所以我这边只说明zookeeper注册中心如何 ...
- dubbo本地服务化实现(dubbo三)
一.dubbo服务化架构包含的内容 对于传统工程而言,分层的依据是按照包来区分.由于在相同的工程中,所以服务的提供和调用可以方便的实现. 但是对于分布式架构而言,服务的提供者负责服务具体的实现和接口规 ...
- Dubbo本地开发技巧
背景 作为后端服务负载.前后分离的主要手段,dubbo在业界中使用率还比较高.随着Dubbo系统的增多,本地开发.调试就出现了麻烦之处 直接在开发本地起同样一份服务 由于Dubbo采用负载均衡的策略, ...
- dubbo本地搭建实例
项目文件下载地址:http://download.csdn.net/detail/aqsunkai/9552711 概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服 ...
随机推荐
- 上传大数据到SharePoint 2010
今天终于把近5G的数据上传到了SharePoint2010站点上,上传过程中发现几个要注意的问题: 1. 用360浏览器打开SP 2010站点,发现在workspace同步和windows explo ...
- 洛谷 P2725 邮票 Stamps 解题报告
P2725 邮票 Stamps 题目背景 给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K -- 表示信封上能够贴 K 张邮票.计算从 1 到 M 的最大连续可贴出的邮资. 题目描 ...
- codeblocks下的汇编语言
Debug->Debugging windows->Disassembly F4+F7 每条语句的调试,查看变量 可以通过两者的比较来互相学习 1.通过查看汇编代码学习c如何改进,减少代码 ...
- ffmpeg在asp.net 视频转换
ffmpeg是一个源于Linux的工具软件,是FLV视频转换器,可以轻易地实现FLV向其它格式avi.asf. mpeg的转换或者将其它格式转换为flv.在视频播客中,我们通常使用它把我们上传的视频转 ...
- linux之sleep
linux中的sleep为库调用(library calls),其声明文件为unistd.h. unsigned int sleep(unsigned int seconds); 如果进程或者线程调用 ...
- JAVA记录-消息队列介绍
1.JMS概述 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消 ...
- DBA记录-数据库管理员需要掌握的内容
1.Linux 2.ORACLE/MySQL/SQLSERVER 3.NOSQL 4.环境部署.用户及权限管理.表空间.表.视图.索引.过程.触发器.分区.函数.查询.性能调优.迁移备份.集群.日志分 ...
- 绕过/*,web.xml直接访问jsp【转】
web.xml中如果配置了/* 全匹配,那么不能用servet去响应页面返回了,因为全都被会/*拦截. <servlet> <servlet-name>validateAuth ...
- PHP7 学习笔记(六)403 Forbidden - WAMP Server 2.5
今天在wamp目录下有一个项目:comment 我在我的Windows 7机器上安装了WAMP版本2.5. 当浏览器浏览到本地主机时,WAMP服务器页面是可见的. 但是当我浏览到我的本地主机在我的移动 ...
- 转--python 编码规范
编程规范 1.1. 命名规范 1.1.1. [强制] 命名不能以下划线或美元符号开始和结尾 反例: name / __name / $Object / name / name$ / Object$ 1 ...