浏览 3677 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-05
最后修改:2011-03-05
1、我承认是标题党 2、这不是在这重复讲轮子的故事,最近空闲中研读了一下hessian源码,只是在借助例子分析一下RPC原理,通过例子更容易理解一些,对于程序员来讲,源码就是最好的文档 言归正传,分布式服务架构中,一个最基础的问题就是服务器之间的通信,java有很多实现远程通信的技术,如RMI、MINA、WebService、Hessian、PHPRPC(这名起的有点白痴)等 具体原理描述不在本文范围内,但每个RPC技术都离不开这两点:传输的数据格式、传输协议,本文主要是通过具体实践来理解RPC原理,刚刚说到数据格式和传输协议,Hessian自己定义了一套二进制传输格式,本例子没有花费精力去定制一套格式,偷个懒捡个现成的json格式,将所有的请求、返回都转换成json格式,以字符串的形式与远程服务交互,与RPC-XML类似,以后哪天也试试二进制格式,呵呵,至于传输协议和hessian一样也是基于http协议 源码、例子都在附件当中,时间仓促只在jdk1.6、tomcat6环境下测试的,也难免存在bug,不过基本例子绝对能够跑通,对于理解RPC原理还是足够用的 呵呵 在这里也算是抛砖引玉吧,供有兴趣的朋友一起讨论 使用方法与hession类似,本例子使用步骤如下: 1、将war发布到tomcat下,启动tomcat 2、运行TestClient即可 3、自己定制新的服务(例子提供的HelloImpl)与hession类似,在web.xml里进行配置 //测试代码 import oasis.client.OasisProxyFactory; public class TestClient { public static void main(String[] args) throws Exception { //别忘记换成自己tomcat的端口啊 String url = "http://localhost:8090/oasis_rpc/test.oasis"; //通过OasisProxyFactory生产远程调用的服务 OasisProxyFactory factory = new OasisProxyFactory(); Hello hello = (Hello) factory.create(Hello.class, url); TestBean bean = new TestBean(); //调用远程服务 System.out.println("远程调用结果: " + hello.seeHello(bean).getName()); System.out.println("name:" + bean.getName()); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-08
最后修改:2011-03-08
可以尝试使用一下开源项目bbossgroups中的rpc框架和mvc框架,都有rpc的很好实现,呵呵:
bboss group project sourceforge site url: http://sourceforge.net/projects/bboss/files/ |
|
返回顶楼 | |
发表时间:2011-03-08
也介绍一个
http://code.google.com/p/rpcfx/ |
|
返回顶楼 | |