15.4.1 将 bean 导出为 HTTP 服务
Last updated
Last updated
要将 bean 导出为 RMI 服务,我们需要使用 RmiServiceExporter;要将 bean 导出为 Hessian 服务,我们需要使用 HessianServiceExporter;要将 bean 导出为 Burlap 服务,我们需要使用 BurlapServiceExporter。把这种千篇一律的用法带到 HTTP invoker 上,应该也不会有任何意外的事情发生,那就是导出 HTTP invoker 服务,我们需要使 用 HttpInvokerServiceExporter。
为了把 Spitter 服务导出为一个基于 HTTP invoker 的服务,我们需要像下面的配置一样声明一个 HttpInvokerServiceExporter bean:
是否有点似曾相识的感觉?我们很难找出这个 bean 的定义和那些在 15.3.2 小节中所声明的 bean 有什么不同。唯一的区别在于类名:HttpInvokerServiceExporter。否则的话,这个导出器和其他的远程服务的导出器就没有任何区别了。
如图 15.8 所示,HttpInvokerServiceExporter 的工作方式与 HessianServiceExporter 和 BurlapServiceExporter 很相似。HttpInvokerServiceExporter 也是一个 Spring 的 MVC 控制器,它通过 DispatcherServlet 接收来自于客户端的请求,并将这些请求转换成对实现服务的 POJO 的方法调用。
因为 HttpInvokerServiceExporter 是一个 Spring MVC 控制器,我们需要建立一个 URL 处理器,映射 HTTP URL 到对应的服务上,就像 Hessian 和 Burlap 导出器所做的一样:
同样,像之前一样,我们需要确保匹配了 DispatcherServlet,这样才能处理对 “*.service” 扩展的请求。参考 15.3.1 小节了解如何设置映射。 我们已经知道如何访问由 RMI、Hessian 或 Burlap 所创建的远程服务,现在我们再次让 Spitter 客户端使用刚才所导出的基于 HTTP invoker 的服务。