学习RMI的一些疑问

我目前有如下的一些疑问:

1. 为什么我的服务器端、客户端运行时,看不到***_stub类文件,不设定codebase也成功了?

我用本机和虚拟机做试验(本机为server、虚拟机为client),环境JDK1.6。

根据JDK文档,JDK1.6不再像以前那样(用rmic编译server端类文件,预先生成_stub然后部署在客户端再运行),而是运行时动态下载,但我在客户端的类目录下面没有看见下载的_stub类;而且我在启动服务器时,故意没有设定codebase属性,运行也成功了!

那么客户端到底有没有去服务端下载stub类?为什么不像文档中说的那样,启动服务器时设定java.rmi.server.codebase,客户端从这个地址下载接口文件和stub,然后用下载到本地的stub,完成对远程方法的调用?

 

2.接口文件需要从服务器端下载吗?

文档中说:客户端根据名称查询注册表、请求一个远程对象的参考,这个参考的类定义如果本地找不到,会根据注册表中的codebase去下载;这里面远程对象的参考,类型为远程接口。

这个接口客户端本地应该就有,否则只是服务器端有,客户端的源代码如何能编译通过呢(因为里面要引用接口类型,并调用远程方法)。为什么文档里面说要下载接口定义文件呢?应该不需要啊?

 

3.注册服务器如何能知道codebase的呢?

按照JDK“Getting Started Using JavaTM RMI”的文档,步骤是这样的:

1)编写并编译客户端、服务端代码;

2)启动rmiregistry;

3)运行服务器类文件(加参数-Djava.rmi.server.codebase);

   这一步进行远程对象的创建、注册,是否就是在这一步,创建的远程对象与给定名字绑定,并把命令行里的参数(codebase)记录到该对象的注释中了?

4)运行客户端类文件;

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值