RMI示例
下面以一个例子说明怎么使用RMI技术。这个例子演示了怎样将一个文件上传到服务器和怎样将一个文件从服务器上下载下来。
利用RMI for Eclipse插件开发RMI需要以下步骤:
(1)定义和实现远端接口中的参数
(2) 定义和实现远端接口
(3) 编写服务端代码
(4)编写客户端代码
部署按以下步骤:
(1)点击Start Local registry
(2)右键点击项目,选择RMI,点击Enable Stubs Generation
(3)运行服务器,run as-->run RMI Application:设置:RMI VM Properties:codebase 选择compute from classpath
(4)运行客户端,run as-->run RMI Application:设置:RMI VM Properties:security.policy新建一个即可。
下面是示例代码:
定义和实现远端接口中的参数
(1)定义远端接口中的参数
每一个远端接口中的参数都必须是可序列化的。那么,如何定义一个序列化的接口呢,简单,只需从java.io.Serializable继承即可,如下所示:
import java.io.Serializable;
public interface FileInformation extends Serializable {
String getName();
byte[] getContent();
void setInformation(String name , byte[] content);
};
(2)实现远端接口中的参数。
实现远端接口中的参数的接口跟与实现其他任何接口没什么不一样的地方,如下所示
public class FileInformationSev implements FileInformation {
private String name = null ;
private byte[] content = null ;
public String getName() {
return name ;
}
public byte[] getContent() {
return content;
}
public void setInformation(String name, byte[] content) {
this.name = name ;
this.content = content ;
}
}
那么,为什么要序列化远端接口中的参数(返回值) ?这是因为需要将客户端的对象(参数)转化成byte stream,通过网络协议传输到服务端,再还原成服务端的对象进行调用。或者是需要将服务端的对象(返回值)转化成byte stream,通过网络协议传输到服务端,再还原成客户端的对