二:rmi相关类
rmi由5个包和3个应用工具组成:
java.rmi 组织客户端的rmi类,接口和异常
java.rmi.sever 组织服务器端的rmi类,接口和异常
java.rmi.registry 组织用于管理rmi命名服务的类
java.rmi.dgc 组织用于管理分布式垃圾收集的类
java.rmi.activation 组织用于实现按需缉获的rmi服务的类
rmic 编译器,生成stub和sketon
rmiregistry 一个为rmi提供命名服务的服务器,这项服务把名字和对象关联在一起
rmid 一个支持rmi激活框架的服务器
但是大多数情况下,我们只需要使用每个包的一部分方法和接口就可以成功的实现一个使用rmi分布式解决方案.
三:步骤
要完成以上步骤需要有以下几个步骤:
1、生成一个远程接口
2、实现远程对象(服务器端程序)
3、生成占位程序和骨干网(服务器端程序)
4、编写服务器程序
5、编写客户程序
6、注册远程对象
7、启动远程对象
四:一个简单应用
一共有三个java类,远程接口,服务端程序,客户端程序
远程接口:
import java.rmi.*;
public interface HelloIn extends java.rmi.Remote{
String sayHello() throws RemoteException;
}
服务端程序:
import java.rmi.*;
import java.net.*;
import java.rmi.registry.*;
import java.rmi.server.*;
public class Hello extends java.rmi.server.UnicastRemoteObject implements HelloIn{
public Hello() throws RemoteException{
super();
}
public String sayHello() throws RemoteException{
return "Hello,World!";
}
public static void main(String[] args){
//System.setSecurityManager(new java.rmi.RMISecurityManager());
try{
Hello h=new Hello();
java.rmi.Naming.rebind("hello",h);
System.out.print("Ready......");
}
catch(Exception e){
e.printStackTrace();
}
}
}
rmic Hello 生成Stub 和 Skeleton
rmiregistry 执行服务端程序前在命令行方式下启动rmi的注册程序
java Hello 启动服务器
客户端程序:
import java.rmi.*;
import java.rmi.registry.*;
public class Helloworld{
public static void main(String[] args){
//System.setProperty( "java.security.policy", "client.policy" );
//System.setSecurityManager(new java.rmi.RMISecurityManager());
try{
HelloIn hi=(HelloIn)Naming.lookup("//127.0.0.1/hello");
for(int i=0;i<10;i++){
System.out.println(hi.sayHello());
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
编译:javac Helloworld.java
最后执行java Helloworld 控制台打印出 Hello,World,成功调用.