负责指定 RMI 系统远程行为的接口和类在 java.rmi 包层次结构中定义。下图显示了其中几个接口和类之间的关系:

java.rmi.Remote接口在 RMI 中,远程 接口是一个接口,它声明一组可以从远程 Java 虚拟机调用的方法。远程接口必须满足以下要求:
java.rmi.Remote。java.rmi.RemoteException(或其超类之一,例如java.io.IOException或 )。java.lang.Exceptionjava.rmi.RemoteException该接口java.rmi.Remote是一个没有定义任何方法的标记接口:
public interface Remote {}远程接口必须至少扩展接口java.rmi.Remote(或扩展 的 另一个远程接口java.rmi.Remote)。但是,在以下情况下,远程接口可以扩展非远程接口:
例如,以下接口BankAccount 定义了一个用于访问银行帐户的远程接口。它包含向帐户存款、获取帐户余额和从帐户中取款的远程方法:
public interface BankAccount extends java.rmi.Remote {
public void deposit(float amount)
throws java.rmi.RemoteException;
public void withdraw(float amount)
throws OverdrawnException, java.rmi.RemoteException;
public float getBalance()
throws java.rmi.RemoteException;
}下一个示例显示了一个有效的远程接口Beta,它扩展了Alpha具有远程方法的非远程接口和接口java.rmi.Remote:
public interface Alpha {
public final String okay = "constants are okay too";
public Object foo(Object obj)
throws java.rmi.RemoteException;
public void bar() throws java.io.IOException;
public int baz() throws java.lang.Exception;
}
public interface Beta extends Alpha, java.rmi.Remote {
public void ping() throws java.rmi.RemoteException;
}RemoteException类的 java.rmi.RemoteException类是一个远程方法调用期间由RMI运行时抛出的异常的超类。为了确保使用 RMI 系统的应用程序的健壮性,在远程接口中声明的每个远程方法都必须在其 throws 子句中指定java.rmi.RemoteException(或其超类之一,例如java.io.IOException或 java.lang.Exception)。
唯一的例外 java.rmi.RemoteException,当一个远程方法调用由于某种原因失败时抛出。远程方法调用失败的一些原因包括:
该类RemoteException是已检查异常(必须由远程方法的调用者处理并由编译器检查的异常),而不是RuntimeException.
RemoteObject类及其子类RMI 服务器功能由java.rmi.server.RemoteObject及其子类提供,java.rmi.server.RemoteServer以及 java.rmi.server.UnicastRemoteObject和 java.rmi.activation.Activatable。
java.rmi.server.RemoteObject提供了实现的java.lang.Object,方法 hashCode,equals和 toString。UnicastRemoteObject和Activatable. 子类标识远程引用的语义,例如服务器是一个简单的远程对象还是一个可激活的远程对象(一个在调用时执行的对象)。java.rmi.server.UnicastRemoteObject类定义了一个单(单播)的远程对象,其引用仅在服务器进程是活有效。java.rmi.activation.Activatable是一个抽象类,它定义了一个可激活的远程对象,该对象在其远程方法被调用时开始执行,并在必要时自行关闭。