| 目次|前|次 | Java Remote Method Invocation |

java.rmi.Remoteインタフェースjava.rmi.Remoteインタフェースを直接または間接的に継承する。java.rmi.RemoteException (またはjava.io.IOExceptionやjava.lang.Exceptionなどのjava.rmi.RemoteExceptionのスーパー・クラスの1つ)が含まれている。ただし、アプリケーション固有の例外は、java.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は、リモート・メソッドおよびjava.rmi.Remoteインタフェースを持つ非リモート・インタフェースAlphaを継承しています。
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のスーパー・クラス)を指定する必要があります。
例外java.rmi.RemoteExceptionは、リモート・メソッド呼出しがなんらかの理由で失敗したときにスローされます。リモート・メソッド呼出しは、次のような理由で失敗することがあります。
RemoteExceptionクラスは、チェック例外(リモート・メソッドの呼出し側が処理する必要があり、コンパイラによってチェックされる例外)で、RuntimeExceptionではありません。
RemoteObjectクラスとそのサブクラス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クラスは、リモート・メソッドの呼出し時に実行を開始し、必要に応じて自身を終了することができるactivatableリモート・オブジェクトを定義する抽象クラスである。