一.引言
spring remoting架构的核心是服务对象,这些对象其实是一些pojo,也称作spring bean。spring框架能够把这些服务对象与基础结构细节(例如它们暴露为远程服务的方式)隔离开来;这样以来,开发者就可以专注于实现服务对象的业务接口而不是牵涉到这些细节中去。 【相关文章:坚守Windows XP:我们真需要Vi】
从根本上分析,remoting实际上是一种企业分布式计算的组件。在同一服务器(java虚拟机)内进行调用的服务(或类)并不需要把自己暴露为一种远程服务;但是,如果你需要与一个外部程序(在不同的服务器上或在一个不同的组织中)进行通讯的话,那么,必须把它实现为一个远程服务。spring框架为把业务类暴露为远程服务提供了一种独特而灵活的方式。 【扩展阅读:评论Vista RC1的软硬件兼容性(1】
本文将着重探讨如何使用spring实现一个远程服务。也就是说,要展示使用spring remoting api把一个普通java对象(pojo)转化成一个远程服务;这样以来,外部程序就可以从其业务实现中调用该服务。该演示使用一个示例贷款处理应用程序把一个业务服务实现为一个远程http服务并且从一个测试客户端调用该类中的业务方法。 【扩展信息:Windows Vista体验报告探秘】
这个remoting模型提供了对业务服务的远程抽象。它负责编排与反编排方法参数并且还负责处理服务方法中抛出的任何异常—使用未检查的remoteaccessexception异常对它们进行包装。为了实现各种服务,spring使用了若干设计模式。例如,它使用代理设计模式把你对http post请求的调用翻译成指向输出服务的url。
二.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。... 下一页