关于RMI的问题: http://java.sun.com/docs/books/tutorial/rmi/创建根与干 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 from(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.classPerfectTime_Skel.class它们分别对应根(Stub)和干(Skeleton)。现在,我们已准备好让服务器与客户互相沟通了。 我已经生成根与干了,我说过了,在本地可以运行的。 谢谢你的回答。 我不太清楚应该怎么设置那个路径,应该把 stub放在哪儿呢? 是不是应该放在一个公共的目录?例如 /usr/local/apache/htdocs/ 下? 我试过放那儿也是不行。 真是头大! 比喻:xxx_stub.class 包名是example.xxx_stub.class那么在htdocs下,当前目录有example建立一个目录example,把xxx_stub.class copy 到里面。 建议指定"java.rmi.server.codebase"(在服务器端), 再将根和干放到codebase所指的uri(通常采用http协议)中, 这样client就可以根据你所指定的codebase自动download所需的东西乐 :) 顺序数组中二分查找法式查找某数最快的方法????? 谁能帮忙写个例子,谢谢! 请问,垃圾回收的时候会不会自动进行内存碎片整理啊? 求教一个关于界面的问题 怎样提取jsp中的图像? 显示A表中B表没有的数据这句SQL怎么写 Exception in thread "main" 什么错误啊? 如何监视文件的变动 求助!一个easy的…… 一个初学者的迷惑 有没有人能详细介绍一下JAVA的好处的? SCO OpenServer下的Java问题 请指教java doc 中的applet demo Animator
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)。现在,我们已准备好让服务器与客户互相沟通了。
我不太清楚应该怎么设置那个路径,应该把 stub放在哪儿呢? 是不是应该放在一个公共的目录?例如 /usr/local/apache/htdocs/ 下? 我试过放那儿也是不行。 真是头大!