spring 作为一个基础框架,最remoting(远程调用)有多种支持。
- 对传统RMI方式的支持 ,RMI是java 平台上最传统的 远程调用方法,这种方法基于Java Remote Method Protocol ,而这个协议的底层是TCP。实现传统RMI的核心类为RmiProxyFactoryBean 和 RmiServiceExporter,传统RMI使用Java平台默认的序列化方法序处理对象,同时因其底层为TCP,故易被某些防火墙拦截。由于属于传统的远程调用方法,所以被放在spring-context这个jar中。使用范例
- 使用HTTP 协议进行remoting.由于传统的RMI方式存在协议可能被拦截等问题,spring增加了http方式的remoting,也就是说使用HTTP协议取代了JRMP协议。这种方式有优点为只要防火墙允许HTTP协议即可运行。其他方面依旧使用Java平台默认的序列化方法序处理对象。由于使用了HTTP协议,服务器端需要运行在web服务器中,同时核心类HttpInvokerServiceExporter和HttpInvokerProxyFactoryBean也被放在spring-web这个jar中.
- 使用http协议和Hessian序列化进行remoting.这种方式使用Hessian序列化取代Java平台的默认序列化方法,依旧使用HTTP协议。核心类HessianProxyFactoryBean和HessianServiceExporter被放在spring-web这个jar中.hessian具有更快的序列化速度和更小的体积。
- 使用http协议和Burlap序列化进行remoting.这种方式使用Burlap序列化取代Java平台的默认序列化方法,依旧使用HTTP协议。核心类BurlapProxyFactoryBean和BurlapServiceExporter被放在spring-web这个jar中.这种方法已经在spring 4.0 版本中被列为过时。
- 使用AMQP消息服务协议和JAVA序列化进行remoting.这种方法的优势是使用消息队服务器作为中间件,消息队列作为请求的缓存层,可以实现多个服务端在统一接口提供同样的服务。核心类AmqpProxyFactoryBean和AmqpInvokerServiceExporter被放在spring-amqp这个jar中.使用范例