Hessian 基本原理分析

此处不是对Hessian配置的描述,只对其基本原理分析。

1.创建代理类:

在前端一般调用
HessianProxyFactory.create(Class serviceInterface,String url)
,获取对后台service的一个代理访问类对象;
HessianProxyFactory.create方法的内部是这样做的:

 URL url = new URL(urlName);
handler = new HessianProxy(this, url);

return Proxy.newProxyInstance(loader, new Class[] { api,
HessianRemoteObject.class }, handler);


其中 Proxy.newProxyInstance 为Jdk提供的创建动态代理的工具类,
api即为我们传入的,后端会实现的service的接口,
loader为加载api,和HessianRemoteObject.class两个类所需要的ClassLorder,
handler其实为回调类,重点其实在这里,完成了相应远程方法的调用,以及参数的序列化;

2.远程方法调用:

第一步创建完动态代理类后,我们就得到了一个貌似对与后端类的引用,其实只是一个披着serviceInterface外衣的动态代理对象而已,当调用serviceInterface接口定义的相应方法时,
动态代理类就会去调用HessianProxy中定义的方法:

 public Object invoke(Object proxy, Method method, Object[] args)


在这个方法中,有调用
conn = sendRequest(mangleName, args);

在sendRequest方法中完成一次对后台的请求:如下

URLConnection conn = this._factory.openConnection(this._url);
os = conn.getOutputStream();
AbstractHessianOutput out = this._factory.getHessianOutput(os);

out.call(methodName, args);
out.flush();

3.过滤器拦截请求:

我们在web.xml里已经定义的过滤器,会拦截此次请求,然后调用相应的后端程序,然后,将结果序列化,返回。


4.前端 HessianProxy 中对返回结果进行反序列化,返回给业务程序

所以最重要的过程,对通讯过程的封装都是由 HessianProxy 完成,形成了前端调用后端程序,如后端调用后端一样简单的效果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值