byte buffer[] = new byte[(int)file.length()];
BufferedInputStream input = new
BufferedInputStream(new FileInputStream(fileName));
input.read(buffer,0,buffer.length);
input.close();
return(buffer);
} catch(Exception e){
System.out.println("FileImpl: "+e.getMessage());
e.printStackTrace();
return(null);
}
}
}
开发服务器
第三个步骤是开发服务器。服务器需要做三件事:
创建 RMISecurityManager 的一个实例并安装它
创建远程对象(在本例中是 FileImpl)的一个实例
在 RMI 注册表中登记这个创建的对象。实现的范例见代码范例 3。
代码范例 3: FileServer.java
import java.io.*;
import java.rmi.*;
public class FileServer {
public static void main(String argv[]) {
if(System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
FileInterface fi = new FileImpl("FileServer");
Naming.rebind("//127.0.0.1/FileServer", fi);
} catch(Exception e) {
System.out.println("FileServer: "+e.getMessage());
e.printStackTrace();
}
}
}
语句 Naming.rebind("//127.0.0.1/FileServer", fi)假定 RMI 注册表在缺省的端口
号 1099 上运行。但是,如果 RMI
注册表在其他端口号上运行, 就必须在这一句中指定
端口号。例如,如果 RMI 注册表在端口 4500
上运行,那么 这一句就变成:
Naming.rebind("//127.0.0.1:4500/FileServer", fi)
另外,在这里要着重指出,我们假定 rmi
注册表和服务器是在同一台电脑上运 行。