常用接口

接口和类

所有的远程接口都继承自 java.rmi.Remote 接口。例如:

  1. public interface bankaccount extends Remote
  2. {
  3. public void deposit(float amount)
  4. throws java.rmi.RemoteException;
  5. public void withdraw(float amount)
  6. throws OverdrawnException,
  7. java.rmi.RemoteException;
  8. }

注意,每个方法必须在 throws 里面声明 java.rmi.RemoteException 。 只要客户端调用远程方法出现失败,这个异常就会抛出。

远程对象类

Java.rmi.server.RemoteObject 类提供了远程对象实现的语义包括hashCode、equals 和 toString。 java.rmi.server.RemoteServer 及其子类提供让对象实现远程可见。java.rmi.server.UnicastRemoteObject 类定义了客户机与服务器对象实例建立一对一的连接.

存根

Java RMI 通过创建存根函数来工作。存根由 rmic 编译器生成。自 Java 1.5 以来,Java 支持在运行时动态生成存根类。编译器 rmic 会提供各种编译选项。

定位对象

引导名称服务提供了用于存储对远程对象的命名引用。一个远程对象引用可以存储使用类 java.rmi.Naming 提供的基于 URL 的方法。例如,

  1. BankAccount acct = new BankAcctImpl();
  2. String url = "rmi://java.sun.com/account";
  3. // bind url to remote object
  4. java.rmi.Naming.bind(url, acct);
  5. // look up account
  6. acct = (BankAccount)java.rmi.Naming.lookup(url);

Java RMI 工作流程