Spring 远程调用与 JMS 支持详解
1. Spring 远程调用策略概述
Spring 支持多种远程调用策略,涵盖了基于 HTTP 的轻量级协议(如 Hessian 和 Burlap)、Spring 自身的 HTTP 调用器,以及标准的 RMI 和 JAX - RPC。它将一致性和简单性融入到各种远程调用场景中,同时不牺牲功能。
Spring 尽可能为所有这些策略提供了统一的配置风格。代理可以一致地使用普通 Java 业务接口,并抛出 Spring 的未检查异常 RemoteAccessException
,不过也可以为 RMI 和 JAX - RPC 服务暴露传统的 RMI 服务接口。特别地,现有的 RMI 风格服务也可以通过普通 Java 业务接口进行代理,将每个方法调用委托给底层的 RMI 服务存根。
2. 服务器端导出机制
服务器端的导出机制取决于实际使用的协议:
- 轻量级 HTTP 协议 :Hessian、Burlap 和 HTTP 调用器允许通过为特定协议定义导出器,将现有的 Spring 管理的 Bean 作为远程服务暴露。还可以同时通过多个协议暴露同一个服务实例,只需为同一个目标 Bean 定义多个导出器,并将它们绑定到不同的 URL。
- RMI 导出器 :在没有冲突的 RMI 基础设施的情况下,使用 Spring 的 RMI 导出器通常是无缝的。但一般不建议在运行 EJB 容器的进程中使用 RMI 导出器,因为可能会导致冲突。不过,在 J2EE Web 容器(如 Tomcat、Jetty 或 Resin