java .stub 用法_使用 JavaRMI 步骤及Stub not found 等问题解决方法 | 学步园

转载请表明出处: http://blog.csdn.net/jiangsq12345

对JavaRMI的介绍我就省略了,本文主要是帮助大家解决一个常见的在运行RMI过程中出现的烦人Exception(特别是Stub not found)。

开始前先提醒几点:

1对于.编写代码,我想大家差不多都用的是Eclipse这个IDE,但是对于运行RMI用IDE反而麻烦,所以先做好用命令编译运行java程序的准备 (一般要3个命令窗口,分别是服务器

+客户端

+RMI注册程序rmiregistry

)

2.网上有很多教程是写一部分代码编译最后再运行,而我觉得编写代码需要连贯性,因此我提倡先写代码,然后运行RMI; j建议大家先从最简单的例子开始:

4个类(3个在服务器端,1个在客户端); 将这3个类放在同一个包下面,或者如果你不太懂包的含义干脆就默认不用包

先了解一下RMI的大致步骤:

1. 创建远程接口及声明远程方法(HelloInterface.java)

2. 实现远程接口及远程方法(继承UnicastRemoteObject)(Hello.java)

3. 客户端查找远程对象,并调用远程方法(HelloClient)

4. 启动RMI注册服务,并注册远程对象(HelloServer.java)

5. 执行程序:启动服务HelloServer;运行客户端HelloClient进行调用

代码参考 http://topic.csdn.net/u/20090306/22/060e1a70-8d4a-47e9-987c-11637d6d7e7f.html

,我省略

我们重点来说一下编译和运行中的步骤及注意点:

假设我们代码的结构是这样的

+projet

+src

+test(包)

- HelloInterface.java

- Hello.java

- HelloServer.java

-HelloClient.java

1. 编译代码

进入到 ....../workspace/projet/src

文件夹下 (省略号表示你的系统的绝对路径),先给环境变量加一条默认的classpath,

Linux下: export CLASSPATH='....../workspace/projet/src

';

Windows 下可以考虑用手动右击我的电脑手动设置

然后 用命令(前提是你的电脑已经设置好java虚拟机的路径,否则先把这个设置好):

$Javac *.java

2. 用RMIC生成一个stub类

命令(注意到包与类名用.

连接,而且不用.class):

$rmic test.Hello

3. 运行rmiregistry,

用另一个窗口运行命令:

$rmiregistry

4. 运行服务器(我记得早些版本不用再设置路径就可以直接找到stub的,但是现在好像不行了,不管怎么样加个路径中没有错的)

要在....../workspace/projet/src目录下

$java  -Djava.rmi.server.codebase=file:/....../workspace/projet/src/  test.HelloServer

5. 运行客户端

要在....../workspace/projet/src目录下

$java test.HelloClient

如果没有其他意外的话,应该可以看到helloworld了。如还有问题可以给在我留言

注:

1. 用RMI传递对象时,必须将对象序列化

2.

rmiregistry

默认端口是1099,因此注意服务器端发布服务是端口必须要于此端口一致,否则无法完成注册;会有Connection refuse的exception

3. 如果项目比较大,代码大时,可以用Ant

, 例子

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值