1.何为client

公司内部的系统调用,如果采用http直接调用,会非常不方便,而且不规范,接口升级或者变动,系统间的改动也是相当麻烦。所以在系统间采用client的互相调用,调用简单,如下:

获取用户信息:

UserRequserReq userReq = new UserReq();
//填充需要的字段
...
UserClient.getUserInfo(userReq);

是不是简单,规范很多。

2.如何优雅的实现

包结构

client
|-controller
| |_UserController.java
|-entity
| |-User.java
|-util
| |-HttpClientUtil.java
|-UserClient.java

controller:请求地址,接收请求的action。(不需要打包)

entity:主要是request和response的请求常量类

util:一些需要的工具类,HttpClientUtil、PropertyUtil等等

xxxClient:入口,实现调用的封装。

3.json传输的具体实现

controller的实现,就是一个简单的接口,保存用户信息:

@RequestMapping(value = "/addUser.in")
public @ResponseBody String addUser(String para)throws Exception{
UserRsp rsp=new UserRsp();
LogUtil.info("添加用户参数:"+para);
User User=JsonUtil.string2Object(para, User.class);
try {
boolean isSuccess =UserService.insertUser(User);
if (isSuccess) {
rsp.setReturnCode(UserConstants.RESPONSE_SUCCESS);
rsp.setReturnMessage("用户添加成功");
}
} catch (Exception e) {
LogUtil.error("添加用户接口异常"+e.getMessage());
rsp.setReturnCode(UserConstants.RESPONSE_FAIL);
rsp.setReturnMessage("添加用户接口异常");
e.printStackTrace();
}
}

client的实现:

public class ShopItemClient {

    public static UserRsp addUser(User req){
UserRsp rsp=new UserRsp();
try {
String url=UserConstants.USER_ADDRESS.replace(" ", "") + "/userClient/addUser.in";
Map<String, String> para=new HashMap<String, String>();
para.put("para", JsonUtil.object2String(req));
String res = HttpClientUtil.requestAsHttpPOST(url,
para,
UserConstants.INPUT_CHARSET,
10000,20000);
rsp=JsonUtil.string2Object(res, UserRsp.class);
return rsp;
} catch (Exception e) {
LogUtil.error(e.getMessage());
rsp.setReturnCode(UserConstants.RESPONSE_FAIL);
rsp.setReturnMessage(e.getMessage());
}
return rsp;
}
}

Client就是对请求针对业务的再一次封装,将不同的业务规范化。

使用的时候,直接打包成相应业务的jar包,其他系统的就可以直接调用啦。

好像很简单的样子,O(∩_∩)O哈哈哈~

内部系统间调用client包的封装方法的更多相关文章

  1. Python调用jar包中的方法

    [本文出自天外归云的博客园] 需求 最近在后台项目代码中一段自定义的AES加解密的程序在平时的测试工作中应用频繁.因为写脚本经常会需要使用,而经过各种尝试,比如jpype等,都不尽如人意.最后转换思路 ...

  2. C#调用java包里的方法

    用IKVM,步骤: 下载ikvmbin-7.2.4630.5.zip,解压,把bin目录所在路径加到环境变量path里 2.电脑开始->CMD,输入ikvmc –out:”输出dll文件的路径” ...

  3. spring boot项目使用swagger-codegen生成服务间调用的jar包

    swagger-codegen的github:https://github.com/swagger-api/swagger-codegen 需要的环境:jdk > 1.7   maven > ...

  4. 如何制作Jar包并在android中调用jar包

    android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...

  5. jmeter 调用jar包 本地加密

    1.因为加密接口是有我们自己加密方式,所有加密包由开发提供,获得加密包后方式jmeter目录/lib/ext文件夹中 2.选择引入加密包 3.添加BeanShell Sampler和Debug Sam ...

  6. WebService与RMI(远程调用方式实现系统间通信)

    前言 本文是<分布式java应用基础与实践>读书笔记:另外参考了此博客,感觉讲的挺好的,尤其是其中如下内容: 另外,消息方式实现系统间通信本文不涉及.RMI则只采用spring RMI框架 ...

  7. 系统间通信(10)——RPC的基本概念

    1.概述 经过了详细的信息格式.网络IO模型的讲解,并且通过JAVA RMI的讲解进行了预热.从这篇文章开始我们将进入这个系列博文的另一个重点知识体系的讲解:RPC.在后续的几篇文章中,我们首先讲解R ...

  8. 系统间通信——RPC架构设计

    架构设计:系统间通信(10)——RPC的基本概念 1.概述经过了详细的信息格式.网络IO模型的讲解,并且通过JAVA RMI的讲解进行了预热.从这篇文章开始我们将进入这个系列博文的另一个重点知识体系的 ...

  9. 系统间通信(9)——通信管理与RMI 下篇

    接上文<架构设计:系统间通信(8)--通信管理与RMI 上篇>.之前说过,JDK中的RMI框架在JDK1.1.JDK1.2.JDK1.5.JDK1.6+几个版本中做了较大的调整.以下我们讨 ...

随机推荐

  1. WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]

    摘 自: http://blog.sina.com.cn/s/blog_72b7a82d0100yyp8.html WebService基于SoapHeader实现安全认证[webservice][. ...

  2. 转: 加快Android编译速度

    转: http://timeszoro.xyz/2015/11/25/%E5%8A%A0%E5%BF%ABandroid%E7%BC%96%E8%AF%91%E9%80%9F%E5%BA%A6/ 加快 ...

  3. 转:mac 设置root 密码

    终端中输:sudo passwd rootpasswd root是修改root的命令,unix下sudo是以当前用户的身份执行root的命令,以避免输入root的密码但是sudo依赖于配置文件/etc ...

  4. [Tools] Batch Create Markdown Files from a Template with Node.js and Mustache

    Creating Markdown files from a template is a straightforward process with Node.js and Mustache. You ...

  5. 基于jQuery的TreeGrid组件

    /** * @author 陈举民 * @version 1.0 * @link http://chenjumin.iteye.com/blog/419522 */ TreeGrid = functi ...

  6. 利用U盘启动,全新安装Mac操作系统.

    利用U盘启动,全新安装Mac操作系统. OS_X_Yosemite_DP7.dmg Install OS X Yosemite.dmg 简单制作 OS X Yosemite 10.10 正式版U盘US ...

  7. JMeter 四:建立高级web测试计划

    发送带有Header的请求 参考:http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html#header_manager Jme ...

  8. MySQL数据迁移问题

    最近尝试了一下小型数据迁移.本地迁移,windows平台,修改配置文件中的data_dir项,然后将旧的data文件下的数据文件全部拷贝过去. 之后登陆数据库,竟然1145错误.可以看到数据库的结构, ...

  9. Oracle 导入导出SQL 查看登录用户表个数

    导出 : --注意结尾不能加分号; 导入 IMP HLMARKET/HLMARKET@192.168.1.22:1521/orcl file=e:/db/HLMARKET_20150729.dmp f ...

  10. 【转贴】J2EE中的13种技术规范

    J2EE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单 ...