(thinking in java)
15.8.3 创建根与干
若编译和运行PerfectTime.java,即使rmiregistry正确运行,它也无法工作。这是由于RMI的框架尚未就位。首先必须创建根和干,以便提供网络连接操作,并使我们将远程对象伪装成自己机器内的某个本地对象。
所有这些幕后的工作都是相当复杂的。我们从远程对象传入、传出的任何对象都必须“implement Serializable”(如果想传递远程引用,而非整个对象,对象的参数就可以“implement Remote”)。因此可以想象,当根和干通过网络“汇集”所有参数并返回结果的时候,会自动进行序列化以及数据的重新装配。幸运的是,我们根本没必要了解这些方面的任何细节,但根和干却是必须创建的。一个简单的过程如下:在编译好的代码中调用rmic,它会创建必需的一些文件。所以唯一要做的事情就是为编译过程新添一个步骤。
然而,rmic工具与特定的包和类路径有很大的关联。PerfectTime.java位于包c15.Ptime中,即使我们调用与PerfectTime.class同一目录内的rmic,rmic都无法找到文件。这是由于它搜索的是类路径。因此,我们必须同时指定类路径,就象下面这样:
rmic c15.PTime.PerfectTime
执行这个命令时,并不一定非要在包含了PerfectTime.class的目录中,但结果会置于当前目录。
若rmic成功运行,目录里就会多出两个新类:
PerfectTime_Stub.class
PerfectTime_Skel.class
它们分别对应根(Stub)和干(Skeleton)。现在,我们已准备好让服务器与客户互相沟通了。
15.8.3 创建根与干
若编译和运行PerfectTime.java,即使rmiregistry正确运行,它也无法工作。这是由于RMI的框架尚未就位。首先必须创建根和干,以便提供网络连接操作,并使我们将远程对象伪装成自己机器内的某个本地对象。
所有这些幕后的工作都是相当复杂的。我们从远程对象传入、传出的任何对象都必须“implement Serializable”(如果想传递远程引用,而非整个对象,对象的参数就可以“implement Remote”)。因此可以想象,当根和干通过网络“汇集”所有参数并返回结果的时候,会自动进行序列化以及数据的重新装配。幸运的是,我们根本没必要了解这些方面的任何细节,但根和干却是必须创建的。一个简单的过程如下:在编译好的代码中调用rmic,它会创建必需的一些文件。所以唯一要做的事情就是为编译过程新添一个步骤。
然而,rmic工具与特定的包和类路径有很大的关联。PerfectTime.java位于包c15.Ptime中,即使我们调用与PerfectTime.class同一目录内的rmic,rmic都无法找到文件。这是由于它搜索的是类路径。因此,我们必须同时指定类路径,就象下面这样:
rmic c15.PTime.PerfectTime
执行这个命令时,并不一定非要在包含了PerfectTime.class的目录中,但结果会置于当前目录。
若rmic成功运行,目录里就会多出两个新类:
PerfectTime_Stub.class
PerfectTime_Skel.class
它们分别对应根(Stub)和干(Skeleton)。现在,我们已准备好让服务器与客户互相沟通了。
解决方案 »
- IoC容器+Web层框架+ORM框架的实现
- 有没有谁有用java写的torrent的解析工具啊?
- 我写的断言那里错了呢? 为什么出红线??
- 急:java中如何实现uncode的小字节序的高低位转码?
- 想问一个图形放大算法及java实例或相关文档。
- JAVA交流区 `~希望大家参与!
- 请问rowset和resultset有什么区别?它都使用在什么情况下,谢谢,给分。
- 菜鸟问题,急!(在线)
- 一个关于Java高级应用的问题。
- Exception in thread "main" java.lang.StackOverflowError
- 如何实现前一日,后一日的移动?
- 有谁知道JAVA下在后台实现键盘监听的方法?
HelloWorld.class :远程接口类
HelloWorldImpl.class :远程接口实现类
HelloWorldImpl_Stub.class :系统自动生成的干
HelloWorldImpl_Skel.class :系统自动生成的根
HelloWorldService.class :发布远程接口类
在执行过程中,就会产生上述错误……??