Spring 远程调用:Hessian、Burlap 与 HTTP Invoker 详解
1. Spring 远程调用通用配置风格
Spring 的远程调用支持涵盖了多种方式,包括对远程 EJB 的支持,它们共享一种通用的访问风格,主要由两部分组成:
1.1 代理工厂
要将远程服务“导入”到客户端的 Spring 上下文中,需要为特定协议定义一个特殊的工厂 Bean。在工厂 Bean 上定义所需的配置,如要使用的服务接口和目标服务的 URL,它会暴露一个实现指定服务接口的代理。
1.2 代理行为
远程服务的代理会将代理上的每个方法调用委托给远程服务。目标服务抛出的任何异常都会通过代理传播。如果远程调用本身失败,无论底层使用哪种远程解决方案,代理都会一致地抛出 Spring 的通用 RemoteAccessException
。
Spring
的 org.springframework.remoting.RemoteAccessException
是一个通用的未检查异常,表示远程调用失败。由于其未检查的性质,它不必在服务接口上声明,但客户端可以一致地捕获和处理它,或者在认为是致命错误时直接抛出。
Spring 的远程调用支持主要针对普通 Java 业务接口,不声明任何远程异常。通过抛出未检查的 RemoteAccessException
来处理远程调用失败,这由特定协议的代理管理,完全不会影响服务器端的服务实现。这种模式与 Hessian、Burlap 和 HTTP 调用器无缝