import java.rmi.*;
import java.rmi.registry.*;
public class RmiSampleServer{
public static void main(String[] args){
/*
创建和安装一个安全管理器,令其支持
RMI.
作为
Java
开发包的一部分
*
适用于
RMI
唯一一个是
RMISecurityManager.
*
if(System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
*/
try{
LocateRegistry.createRegistry(8808);
RmiSampleImpl server=new RmiSampleImpl();
Naming.rebind("//localhost:8808/SAMPLE-SERVER",server);
System.out.println ("
远程对象注册成功,
RMI
服务已经启动,等待客户端调用
....");
}catch(java.net.MalformedURLException me){
System.out.println ("Malformed URL:"+me.toString());
}catch(RemoteException re){
System.out.println ("Remote exception:"+re.toString());
}catch(AlreadyBoundException abe){
System.out.println ("(AlreadyBound exception:"+ abe.toString());
}
}
}
代码范例
3
中将将远程对象名字绑定到对远程对象的引用上:
LocateRegistry.createRegistry(8808);
指定本
RMI
服务程序不使用默认端口
1099,
而
是使用自己指定的端口
8808
。
Naming.rebind("//localhost:8808/SAMPLE-SERVER" , Server);
将远程对象在服务器
上注册并指定了将查找远程对象引用的
URL
,
URL
格式为
//host:port/name
。其中
host
是注册表所在的主机(远程或本地),
port
是注册表接受调用的端口号,
name
是未经注
册表解释的简单字符串。
host
和
port
两者都是可选项。如果省略了
host
,则主机默认为
本地主机。如果省略了
port
,则端口默认为
1099
,该端口是
RMI
的注册表
rmiregistry
使用的“著名”端口。
代码范例
3
的运行结果如图所示:
图
14.1
代码范例
3
运行结果
4
、 编写使用远程服务的客户机类
客户机类的主要功能有两个,一是通过
Naming.lookup
方法来构造注册服务程序
stu
b
程序实例,二是调用服务器远程对象上的远程方法。
代码范例
4
package com.itjob.rmi;
import java.rmi.*;
相关文档
评论