服务分离的方式有时候显得很高深,总是觉得API的方式不那么靠谱,所以,玩玩远程调用来让系统显得性感一点。性感的装扮有多种,总得找个适合自己的玩 法,虽然本人不善打扮,对打扮系统的方法还是知道那么几个滴。Spring做了远程调用的封装,为了假装自己不是一个轮子的重复制造者,还是让系统在 Sping框架上实现了。
Spring的远程调用大概有以下几种:RMI,HttpInvoker,Hessian,Burlap,JAX RPC,JAX-WS,JMS,Jetty+Servlet 。偶只玩过RMI,HttpInvoker,JMS。其他几种也是听说了下。当然,同集群内的的服务,用 RMI,HttpInvoker,Jetty+Servlet都是较好选择(限本人了解的情况)。
Spring RMI:
推荐你去看文档了解具体的配置细节,这种玩法的优点是:在远程启动服务后,你可以像调用本地bean一样调用远程的bean,如果考虑下安全问题加一个 taken或密钥,简单,实用,满足同集群的多数需求。
Spring HttpInvoker:
继续去看文档吧!这个需要依赖HttpClient包,有个依赖,总是觉得不爽,而且在web.xml中也需要配置相关的servlet的信息,所以总是 感觉有点麻烦,然后还需要在远程调用的时候返回做相关的bean,能用,不够简洁。
Spring + Jetty:
Ya!这个不是我想出来的,这样玩只是孙*的建议。启动Spring的时候,就能把相关的servlet服务暴露出去。当然,返回的就是 HttpServlet了,没有你渴望的bean,我有点忽悠你了,可是如果返回一个流行的json,是不是也算玩远程调用了。玩嘛……
首先你还是需要到jetty的官网上去下载个jetty来,把lib/jetty-6.1.24.jar,jetty-util- 6.1.24.jar,servlet-api-2.5-20081211.jar加入到你的工程的编译目录下面,如果你用maven的话,在 pom.xml配置一下:
建一个servlet,简单的如下:
Hello " + name + "
");然后配置一把spring的xml,把相关的配置信息加上去。
打开你的浏览器,输入:http://localhost:8080/hello ,恭喜,看到了hello longhao 。什么原因,你懂滴!
由于个人不太喜欢用HttpInvoker的方式调用,所以推荐的排序是:RMI > Jetty + Servlet > HttpInvoker。环肥燕瘦啊!如果你的爱好不同,请低调的告诉我,保持低调。