第18章使用Spring进行远程访问与Web服务
优质
小牛编辑
126浏览
2023-12-01
第 18 章 使用Spring进行远程访问与Web服务
目录
- 18.1. 简介
- 18.2. 使用RMI暴露服务
- 18.2.1. 使用
RmiServiceExporter
暴露服务 - 18.2.2. 在客户端链接服务
- 18.2.1. 使用
- 18.3. 使用Hessian或者Burlap通过HTTP远程调用服务
- 18.3.1. 为Hessian配置DispatcherServlet
- 18.3.2. 使用HessianServiceExporter暴露你的bean
- 18.3.3. 客户端连接服务
- 18.3.4. 使用Burlap
- 18.3.5. 对通过Hessian或Burlap暴露的服务使用HTTP基础认证
- 18.4. 使用HTTP调用器暴露服务
- 18.4.1. 暴露服务对象
- 18.4.2. 在客户端连接服务
- 18.5. Web服务
- 18.5.1. 使用JAXI-RPC暴露服务
- 18.5.2. 访问Web服务
- 18.5.3. 注册bean映射
- 18.5.4. 注册自己的处理方法
- 18.5.5. 使用XFire来暴露Web服务
- 18.6. 对远程接口不提供自动探测
- 18.7. 在选择这些技术时的一些考虑
18.1. 简介
Spring为各种远程访问技术的集成提供了工具类。Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易。目前,Spring支持四种远程技术:
远程方法调用(RMI)。通过使用
RmiProxyFactoryBean
和RmiServiceExporter
,Spring同时支持传统的RMI(使用java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的透明远程调用(支持任何Java接口)。Spring的HTTP调用器。Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是
HttpInvokerProxyFactoryBean
和HttpInvokerServiceExporter
。Hessian。通过
HessianProxyFactoryBean
和HessianServiceExporter
,可以使用Caucho提供的基于HTTP的轻量级二进制协议来透明地暴露服务。Burlap。 Burlap是Caucho的另外一个子项目,可以作为Hessian基于XML的替代方案。Spring提供了诸如
BurlapProxyFactoryBean
和BurlapServiceExporter
的支持类。JAX RPC。Spring通过JAX-RPC为远程Web服务提供支持。
JMS(待实现)。
在讨论Spring对远程访问的支持时,我们将使用下面的域模型和对应的服务:
// Account domain object public class Account implements Serializable{ private String name; public String getName(); public void setName(String name) { this.name = name; } }
// Account service public interface AccountService { public void insertAccount(Account acc); public List getAccounts(String name); }
// Remote Account service public interface RemoteAccountService extends Remote { public void insertAccount(Account acc) throws RemoteException; public List getAccounts(String name) throws RemoteException; }
// ... and corresponding implement doing nothing at the moment public class AccountServiceImpl implements AccountService { public void insertAccount(Account acc) { // do something } public List getAccounts(String name) { // do something } }
我们将从使用RMI把服务暴露给远程客户端开始并探讨使用RMI的一些缺点。然后我们将演示一个使用Hessian的例子。