基于Spring实现远程服务编程 - 编程入门网
ing实现远程服务编程(4)
时间:2011-02-14
既然远程服务充当进入一个企业的业务域模型的入口点,那么把服务层作为一个整体进行设计还是很重要的。下列是在设计远程服务时你需要牢记的一些问题: 1.远程调用类型(远程调用是无状态的还是有状态的?) 2.远程调用激活类型(同步还是异步调用?) 3.客户端类型(Java,.NET或一些其它类型的客户端) 4.操作系统(Windows,Unix或另一种OS) 5.事务(你是否需要该远程服务是事务性的以便在服务方法中实现任何数据库或JMS队列更新时都能够作为一个独立的工作单位被提交或回滚?) 为了实现此用例的所有以上要求,本文中的示例贷款处理应用程序需要使用下列技术和框架: ◆Tomcat 5.5 ◆Spring 2.0 ◆JUnit ◆Commons HttpClient ◆Eclipse ◆Ant Spring配置 本文中的HTTP Invoker Remoting示例使用了两个配置XML文件,这两个文件中定义了相应于你编写的实现水灾远程服务的类的Spring bean;它们分别是loanapp-servlet.xml和loanapp-client.xml。 实现 下列是基于HTTP Invoker技术针对示例贷款处理应用程序实现一个远程服务所需的步骤: 1.创建一个HTTP Invoker服务输出器类(HttpInvokerServiceExporter)。 2.创建一个HTTP代理(使用HttpInvokerProxyFactoryBean)。你需要在这个类中指定如serviceUrl和serviceInterface等参数。 3.定义一个URL映射,以便客户端调用远程HTTP服务。 4.在loanapp-servlet.xml文件中配置Spring bean。 5.在web.xml文件中配置Spring Web层(DispatcherServlet)。 6.编写客户端类(使用HTTP或Commons HttpClient)。 7.编写一个JUnit测试用例来调用客户端类中的方法。 测试 本文下载源码文件中包含了一个JUnit测试客户程序(FloodCertClientTest)用于测试调用水灾远程服务的客户端类。它通过若干不同的测试贷款应用程序(使用不同的邮政区码属性)来调用客户端。凭借提交的邮政区码属性,水灾服务就能够返回水灾认证分析的结果。 四.总结 Spring远程技术为把业务域服务暴露为远程服务提供了一种简单而灵活的方案。同时,它还为暴露多种协议(当然,位于不同的URL处)之下的相同服务提供了相当的灵活性。例如,你可以把本文示例程序中的水灾认证检查服务实现为一种RMI服务(对于Java客户,应该利用更快速的Java到Java远程技术,而对于非Java客户则宜使用一种HTTP服务)。这样以来,你可以仅在一处编写业务服务逻辑,但是最终可以把该服务暴露为两个远程服务端点。 HTTP Invoker框架为普通Java服务接口提供了必要的代理;同时,还为把Java类实现为远程服务提供一致的用法和配置风格。这是一种把两个世界的实现达到最佳结合的远程方案—把HTTP通讯的简单性与Java内置对象串行化技术结合在一起。这使得HTTP Invoker无论对RMI还是对Hessian/Burlap都成为一种优秀的选择。 当然,HTTP Invoker的一个重要局限性就是它仅为Spring框架所提供—这意味着,客户端和服务应用程序都必须使用Spring框架实现。但是,当你需要一种轻量级的易于安装而灵活的方案时,这是一种不错的选择。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |