meizhiwen84 发表于 2013-1-15 08:14:41

rmi练习

第一:建立一个接口,这个接口继承Remote。
接口里定义的每一个方法都要抛出RemoteException异常。
第二:定义一个实现类继承UnicastRemoteObject类和实现上面的接口。
第三:建立一个rmi Server进程服务器,使用Naming.bing("rmi://localhost:1099/类名",对象名)
第四:建立一个客户端,使用(接口名)Naming.loop("rmi://localhost:1099/类名");
 
在第三步在dos窗口进入到建立的服务器类的根目录下,然后运行rmiregistry命令启动rmi注册程序。
然后先运行第三步的类,然后运行第四步创建的类.
 
实例 :
package com.testRMI;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface TestRemote extends Remote {
 public String add() throws RemoteException;
 
 public String add(int a ,int b)throws RemoteException;
}
//////////////////////////////
package com.testRMI;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class TestRemoteImpl extends UnicastRemoteObject implements TestRemote {
 protected TestRemoteImpl() throws RemoteException {
  super();
  // TODO Auto-generated constructor stub
 }
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 @Override
 public String add() {
  // TODO Auto-generated method stub
  return "hello world";
 }
 @Override
 public String add(int a, int b) {
  // TODO Auto-generated method stub
  return "相加了"+(a+b);
 }
}
*****************************
package com.testRMI;
import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
public class Server {
 public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException{
  TestRemote testRemote=new TestRemoteImpl();
  /**
   * 将要被别人远程访问的对象绑定到类名称
   */
  Naming.bind("rmi://localhost:1099/fdsfdsa", testRemote);
  System.out.println("服务器正在启动中。。。。。。");
 }
}
**********************************
package com.testRMI;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class Client {
 /**
  * @param args
  * @throws NotBoundException
  * @throws RemoteException
  * @throws MalformedURLException
  */
 public static void main(String[] args) throws MalformedURLException, RemoteException, NotBoundException {
  // TODO Auto-generated method stub
  TestRemote testRemote=(TestRemote) Naming.lookup("rmi://localhost:1099/fdsfdsa");
  System.out.println(testRemote.add());
 }
}
然后在dos下,进入到Server类的class文件的根目录下:运行rmiregistry命令
然后分别运行Server和Client类。
页: [1]
查看完整版本: rmi练习