RMI 自己创建的 过程

文件包testrmi  里有四个文件

(1)HelloInterface.java(远程接口)

 

(2)HelloImplementor.java(服务器类,实现远程接口)

public class HelloImplementor extends UnicastRemoteObject implements HelloInterface

 

无法逐一编译,直接全部编译

(3)生成存根  rmic –v1.2 testrmi.HelloImplementor

  

(4)编写主类HelloHelper  实例化服务器类,生成远程对象,并且向注册库命名注册远程对象。

  (编写完了,一起注册了)

(这个 start  rmiregistry  ,  运行的是哪个文件下的程序)

 

服务器端的HelloClient

 

为什么都在一个文件夹下,如果不是在一个文件下,不是在一个机器上呢???

HelloInterface h=(HelloInterface)Naming.lookup("rmi://localhost:1099/2-3");

HelloInterface:定了要在一个包里,要不然这个就识别不了,

localhost: 定了在一台机器上,要不然写IP地址。

这个包的问题,可以去掉

首先将,所有的package  去掉 ,让包 不在一个包里,但是编译的时候还是要一起编译,否则还是通过不了 ,

(1)       一起编译

     运行rmic   (1.2之后,不在生成skeleton)

 

(2)建立两个文件夹:

Server:

(网上一篇文章说,包含HelloImplementor_Stub,和HelloImplementor_Skel ,而不包含HelloImplementor.class。但是后者不在生成了,如果只包含前者,不包含HelloImplementor.class,运行出现错误,包含了HelloImplementor.class而不包含Stub,运行没有问题。)

Client:

 

(3)启动RMI注册:

 

是start rmiregistry ,而不是直接rmiregistry ( 换高版本后,命令样式改了??)

(4)在Server下启动 实现远程接口的对象的实例(里面同时运行的是向注册库 命名注册远程对象实例  hi)

 

(5) 在Client  下启动 访问程序

 

原文地址:https://www.cnblogs.com/gongyu/p/3962635.html