基于Spring实现远程服务编程 - 编程入门网
基于Spring实现远程服务编程时间:2011-02-14一.引言 从根本上分析,Remoting实际上是一种企业分布式计算的组件。在同一服务器(Java虚拟机)内进行调用的服务(或类)并不需要把自己暴露为一种远程服务;但是,如果你需要与一个外部程序(在不同的服务器上或在一个不同的组织中)进行通讯的话,那么,必须把它实现为一个远程服务。Spring框架为把业务类暴露为远程服务提供了一种独特而灵活的方式。 Spring Remoting架构的核心是服务对象,这些对象其实是一些POJO,也称作Spring bean。Spring框架能够把这些服务对象与基础结构细节(例如它们暴露为远程服务的方式)隔离开来;这样以来,开发者就可以专注于实现服务对象的业务接口而不是牵涉到这些细节中去。 这个Remoting模型提供了对业务服务的远程抽象。它负责编排和反编排方法参数并且还负责处理服务方法中抛出的任何异常—使用未检查的RemoteAccessException异常对它们进行包装。为了实现各种服务,Spring使用了若干设计模式。例如,它使用代理设计模式把你对HTTP POST请求的调用翻译成指向输出服务的URL。 本文将着重探讨如何使用Spring实现一个远程服务。也就是说,要展示使用Spring Remoting API把一个普通Java对象(POJO)转化成一个远程服务;这样以来,外部程序就可以从其业务实现中调用该服务。该演示使用一个示例贷款处理应用程序把一个业务服务实现为一个远程HTTP服务并且从一个测试客户端调用该类中的业务方法。 二.Spring Remoting工作机制 在本节中,让我们更为细致地分析Spring的Remoting工作机制。要把一个普通的Java类实现为一个远程服务,需要提供如下一些内容: 1.远程服务输出器(exporter)—这些类用于创建为客户端程序所调用的远程服务端点。服务导出器还管理任何用来查询远程服务的注册表。 2.代理工厂Bean—它们是用于创建代理的工厂类,客户端能够使用这些代理连接到远程服务。 3.HTTP Invoker—如前面所提及,Spring HTTP Invoker使用了一种Remoting模型,你可以使用这种模型实现跨HTTP的远程调用,同时使用Java串行化技术传递Java对象。这样使得从一个普通Java类中实现一个远程服务容易得多了,并且允许你专注于远程服务的业务接口而不必亲自考虑远程基础结构的实现细节。 该技术依赖于RMI Invoker的基础结构,但是使用HTTP作为传输协议。 在客户端方面,Spring HTTP Invoker提供两种类型的客户端:Java SE提供的标准API和Commons HttpClient API。默认情况下,它使用的是HttpClient。 接下来,让我们看一下Spring框架所支持的远程(Remoting)技术。 Spring框架支持的远程技术列举 Spring框架支持多种Remoting技术。下面,我们来对它们作逐一简单介绍。 ①远程方法调用(RMI) RMI是一种分布式Java技术,远程Java对象的方法能够从一个不同的Java虚拟机上进行调用。它基本上是远程过程调用(RPC)的Java版本,但是,它还提供了连同相应的请求一起传递多个对象的能力。RMI使用真正的对象串行化来编排与反编排方法的参数而不会截断其相应类型。 Spring以两种方式支持RMI:传统型RMI和使用RMI Invoker的远程技术。 ②Hessian Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议。它使用一种定制的串行化技术来实现跨网络发送Java对象。除了对Java支持外,Hessian还提供对于例如PHP,Python,C++和C#等其它语言的实现支持。 ③Burlap Burlap是一个轻量级的用于实现Web服务的XML-RPC协议。类似Hessian,它还使用一种专利性串行化机制来实现Java对象的串行化。有关Hessian/Burlap的更多信息,恕在此不多及。 基于Spring实现远程服务编程(2)时间:2011-02-14④HTTP Invoker Spring提供一种 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |