RMI是Java平台实现远程调用的规范,下面是一个小例子,本机测试通过


一共有三个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();

}


}

}


执行服务端程序前在命令行方式下启动rmi的注册程序: start rmiregistry


客户端程序:


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("//fengl/hello");

for(int i=0;i<10;i++){

System.out.println(hi.sayHello());

}

}

catch(Exception e){

e.printStackTrace();

}

}

}


执行客户端程序前先用 rmic Hello 生成Stub 和 Skeleton 的class,它们

实际上是远程调用的底层的实现。


最后执行java Helloworld 控制台打印出 Hello,World,成功调用.