- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Command模式执行流程.doc
支付宝数字证书系统中的远程调用模式
目前,在支付宝证书(SBS)系统中存在三种远程调用方式,即‘HttpClient’、‘Hessian’和‘XFire’。其中,‘HttpClient’和‘Hessian’是以前就存在的调用方式,‘XFire’是在双证书项目(正在开发)中引入的。本文简要的介绍这三种方式在支付宝数字证书系统(SBS)中的运用。
HttpClient
HttpClient应该是最早在证书系统中引入的远程调用技术,目前证书系统仍有许多地方在使用该技术。HttpClient是Apache组织的一个比较成熟的远程调用类库,提供了基于Http方式的简单的远程访问功能。HttpClient类库提供了非常简单的API,客户端只需要定义一个PostMethod和一个HttpClient对象,然后调用PostMethod的addParameter方法设置几个参数,最后调用HttpClient的executeMethod(PostMethod)就可以了。参照如下代码:
PostMethod method = new PostMethod(“/query_user.htm”);
Method.addParameter(“cmd”,”getUserInfo”);
Method.addParameter(“userId”,”20062587965208”);
HttpClient client = new HttpClient();
int status = client.executeMethod(method); 注意上面代码中红色的部分,/query_user.htm这个参数代表HttpClient要调用的“远程接口”,是必须的参数;参数是可选的,可以根据业务的需要添加任意数量的参数。status 代表执行的结果,是Http状态码,如果执行成功会返回200。可以用method.getResponseBodyAsStream()方法取得HttpClient执行的返回值,然后再按照约定的方式解析成需要的格式。
这个方式的优点是简单、不需要配置(URL最好是以配置的方式提供),但是功能也非常的有限。由于采用Http方式调用,因此无论是传递的参数还是返回的结果都是“String” 形式的。在处理复杂请求的时候,这种方式就无能为力了(即便是能做到,也要付出相当大的努力,付出和回报不成正比)。例如,需要调用远程方法,返回一个列表,这样一个“普通”的需求,如果用HttpClient去做,就需要在服务端和客户端定义一种契约来规范数据传输格式,在服务端将结果集转换成契约规定的格式(如XML),然后在客户端再按照契约将结果集转换成列表。为了这样一个“普通”的请求,需要作许多额为的工作(如XML解析器)。而且这样做的风险也比较大,很难保证Http的传输过程中不会出问题(尤其当列表很大的时候)。由于采用Http方式进行调用,在安全性上存在很大的隐患,因此我们采取在请求中添加一个由MD5加密的签名串的方式,在客户端发出请求时生成一个按照某种契约生成的MD5加密的签名串添加到请求中;服务段接收到该请求后,首先按照契约对请求中的签名串进行验证,如果验证通过就处理该请求,否则拒绝该请求。
由此一来,HttpClient便不再“简单”了,每一次操作都要做许多额外的工作。
Hessian
Hessian也是一个比较成熟的远程调用框架,在传输过程中把数据序列化成字节码形式。Hessian本身提供了丰富的API供客户端调用,Spring框架对Hessian进行了良好的集成。可以通过非常简单的几步配置,把服务端的一个接口(POJO)Export成一个外部可以访问的Service。使用Hessian,需要配置的地方很多。首先,需要在web.xml文件中配置一个Servlet处理Hessian请求,代码片断如下:
servlet
servlet-nameRemoteServlet/servlet-name
servlet-classorg.springframework.DispatcherServlet/servlet-class
init-param
param-namecontextConfigLocation/param-name
param-valueclasspath/appContext.xml/param-value
/init-param
load-on-startup2/load-on-startup
/servlet
servlet-mapping
servle
文档评论(0)