话说现在的国产书真是高质量啊。讲的不怎么详细,各种长篇大论一复制,再加几个例子。就是一本【java高级网络编程】了。。。。。。幸好,他的例子都有问题,自己在琢磨例子、排除bug的时候,从网上各处找资料。总算是搞明白了自己想学的东西
RMI我另外一篇博文里面有解释的、虽然鄙人“语死早”吧,好歹都能从哪些胡言乱语中窥得一些RMI的运行机制吧。
再说CORBA、详细资料比如官方文档我也不从别的地方复制粘贴了(吐槽一下:现在的十篇帖子八篇都是抄袭的,大多挂着响当当的标题,内容千篇一律,甚至例子也一样。。。)
他就是一个Common Object Request Broker Architecture、说多了,咱也不太明白,就照着书做了几个测试。。。这个CORBA是完全的跨语言的,它的远程调用就是利用它自己的一种IDL语法,比如需要那种远程调用的需求的话,可以先使用CORBA的语法IDL定义一个接口(规范),然后使用java提供的idlj.exe将这个使用IDL语法定义的接口映射为一系列java的接口和类,然后使用这一系列的接口和类设计自己的服务器端实现类,然后使用JNDI服务将实现对象绑定在orbd服务上。 客户端就是获取绑定在服务器端orbd服务上的对象,然后进行远程调用。说真的,我在会使用之后,网上各种找资料、各种翻阅API文档。愣是没明白。。。API里面的org.omg.CORBA下面的东西真多,琢磨了半天,只好放弃。。。
在IIOP出现之前,RMI和CORBA就是一种竞争关系的,两者各有优缺点,互相弥补(网上说的。。。)
RMI-IIOP 很强大的功能之一是,它让您编写纯 Java 客户机/服务器实现而不丧失 RMI 类序列化的灵活性。RMI-IIOP 通过覆盖 Java 序列化并在导线上将 Java 类转换成 IIOP 做到这一点。在另一端,Java 类被作为 IIOP 从导线上读下来,接着创建这个类的一个新实例(使用反射),类的所有成员的值都完整无缺。瞧:这就是IIOP上的Java 序列化! (以上内容描述来自IBM)
看来上面觉得RMI-IIOP技术很牛,但是,为什么这么牛的技术在网上就没有一个完整的可运行实例呢,有一篇文章视乎可以运行,但是按照作者的操作结果总是报错。再回头看看SUN官方的文档,冠冕堂皇的给出了一个HelloWorld的例子,可是TNND,连编译都不能通过,Google一下,有几万个问及此问题的文章,可是没有一个解决方案。不信你试试!搜索关键字:tPOA.activate_object_with_id( id, tie )
对SUN的文档,只能用一个遗憾的感叹号来表达此刻的心情。(神啊,饶恕我吧,以上内容抄袭自某网友,感觉此人很有喜感)
<!--EndFragment-->
看文档上说的:IIOP是用Java封装了CORBA,CORBA是完全的跨语言远程调用,但是IIOP是使用Java实现规范(接口)定义,服务器端的实现也可以使用其他语言(C/C++等),也就是说CORBA是一种应用广泛的远程调用服务,而IIOP更好的面向Java开发者。
(在世界之窗下面JavaEye的编辑器怎么那么怪呢?先不编辑了,太麻烦了)
<!--EndFragment-->