快速业务通道

基于Spring实现远程服务编程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
专门的Remoting策略—HTTP Invoker,它使用标准的Java串行化机制并通过HTTP协议来暴露服务。这是一个很重要的特征,特别是当你想传递给服务的方法参数是复杂的类型对象而不仅是简单的文本消息时尤为重要。

⑤EJB

Spring还支持EJB组件模型。EJB组件还提供其它的J2EE/Java EE服务,例如基于角色的认证和授权以及声明性和编程性事务管理。然而,EJB模型是一个重量级的组件模型,所以大多数业务应用程序往往敬而远之。

⑥Java消息服务(JMS)

JMS API是一种消息发送标准—允许Java应用程序异步地创建、发送、接收和处理消息。它提供了松耦合的和可靠的分布式通信。默认情况下,JMS Remoting使用Java串行化,但是一个JMS提供者(例如,WebLogic JMS或JBossMQ)能够使用另外一个不同的机制(例如XStream API)以便允许通过其它技术实现消息发送。

⑦Web服务

借助于开源Web服务引擎Apache Axis并通过JAX-RPC技术,Spring为实现基于SOAP的Web服务提供支持。Web服务提供真正的平台独立的远程技术,但是它们的建立非常复杂,而且与常规HTTP远程调用相比还需要额外的SOAP消息处理的开销。因此,在不是真正需要平台独立性的情况下,你应该尽可能避免使用Web服务。另外,你还能够使用XFire(由Codehaus开发的一个轻量级SOAP库)对Web服务进行暴露。

其实,每一种远程技术都有其优点与不足,表格1对它们进行了简单的对比。

框架 优点 缺点
RMI 全面支持Java对象串行化。因此,你能够通过网络发送复杂数据类型。 RMI仅是一种Java到Java型远程方案。如果你拥有任何非Java客户端的话,那么你无法使用它。另外,你还无法通过HTTP协议存取对象,除非你有专门的“通道”实现RMI通讯。注意,它需要一个RMI编译器(为了生成代理和框架)和一个外部注册表(用于查询服务)。
Hessian/Burlap 防火墙工作良好 它们使用一种专利对象串行化机制。其中,Burlap仅支持Java客户端。它们能够串行化Hibernate对象,但是对集合对象执行“惰式”加载。
HTTP Invoker 基于HTTP的Java到Java Remoting;通过HTTP实现Java串行化;容易建立。 服务器和客户端应用程序都需要使用Spring。仅是一种Java方案。
EJB 支持Remoting J2EE服务,应用程序安全以及事务处理 EJB是一种重量级技术。它要求使用一个J2EE容器。
Web服务 平台和语言独立 要付出SOAP操作所带来的开销,并且要求使用一个Web服务引擎。

表格1:各种Spring Remoting技术优缺点比较

如你所见,每一种Spring Remoting技术都有各自的优缺点,但是大多数实际的应用程序都会要求使用一种轻量级Remoting技术。当实现远程服务时,使用例如EJB这样的重量级远程组件模型需要其它额外的开销。通常情况下,使用一种支持对象串行化能力的HTTP服务就足够了。

基于Spring实现远程服务编程(3)

时间:2011-02-14

三.远程应用程序编程举例

现在,让我们开始讨论本文相应的示例程序。这个程序的设计目的如下:

◆基于接口的设计:一个基于接口的设计使客户端不必了解远程服务的实现细节;而且该实现能够在不需要对客户端代码进行任何修改的情况下作出改变。

◆测试驱动开发:该应用程序中的所有组件都应该是容器外可测试的。这个示例将使用JUnit来编写简单的单元测试以便对你编写代码时产生的每一个类的设计作出验证。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号