Java RMI入门教程中,如何实现跨网络对象调用?

摘要:介绍 想要java程序成为可调用的远端服务,需要implements(实现)java.rmi.Remote接口即可。javaDOC是这样描述java.rmi.Remote的: Remote接口哟用于标识方法可以从非本地虚拟机调用。任何物体远
介绍   想要java程序成为可调用的远端服务,需要implements(实现)java.rmi.Remote接口即可。javaDOC是这样描述java.rmi.Remote的: Remote接口哟用于标识方法可以从非本地虚拟机调用。任何物体远程对象必须直接或间接实现此接口。只有在"remote interface"中指定方法,即实现java.rmi.Remote接口,才能实现远程使用。 宗旨   远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。 步骤   完成远程调用的步骤如下:     1. 定义一个远程接口,用以实现Remote接口     2. 开发远程接口的实现类     3. 创建一个server,并把远程对象注册到端口     4. 创建一个client查找远程对象,调用远程方法 1.定义远程接口 package rmi; import java.rmi.Remote; public interface IHello extends Remote {   public String sayHello(String name) throws java.rmi.RemoteException; } 2.远程接口实现类 package rmi.impl; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import rmi.IHello; public class HelloImpl extends UnicastRemoteObject implements IHello {   protected HelloImpl() throws RemoteException {     super();   }   @Override   public String sayHello(String name) throws RemoteException {     System.out.println("调用sayHello方法");     return name+"说:hello";   } } 3.创建server,注册对象 package rmi.server; import java.rmi.registry.LocateRegistry; import rmi.IHello; import rmi.impl.HelloImpl; public class HelloServer { public static void main(String[] args) {   try {     IHello hello = new HelloImpl();     /*     在主机ip上创建并提供一个“注册表”实例,用来接收指明“端口”的请求     */     LocateRegistry.createRegistry(8888);     /*     给一个远程对象重新绑定一个“给定”的名字     @param name:必须为一个URI形式     这个方法会覆盖之前已经绑定的名字     */     java.rmi.Naming.rebind("rmi://127.0.0.1:8888/hello", hello);     System.out.print("Ready");   } catch (Exception e) {     System.out.println("提供远程对象失败,原因是:"+e.getMessage());   }  } } 4.创建客户端,请求远程对象 package rmi.client; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import rmi.IHello; public class HelloClient { public static void main(String[] args) {   try {     /*     返回指定名字的远程 对象的一个引用     */     IHello hello = (IHello) Naming.lookup("rmi://127.0.0.1:8888/hello");     System.out.println("调用远程对象,开始交谈:"+hello.sayHello("韩梅梅"));   } catch (Exception e) {     System.out.println("调用远程对象失败,原因是:"+e.getMessage());   }  } } 5.结果 调用远程对象,开始交谈:韩梅梅说:hello