目次|| Java Remote Method Invocation


2.4 RMIインタフェースとクラスの概要

RMIシステムのリモート動作を決定するインタフェースとクラスは、java.rmiパッケージの階層で定義されます。次の図は、このうちいくつかのインタフェースとクラスの関係を示します。
いくつかのインタフェースとクラスの関係

2.4.1 java.rmi.Remoteインタフェース

RMIにおいて、リモートインタフェースは、リモートJava仮想マシンから呼び出される可能性があるメソッドのセットを宣言するインタフェースです。リモート・インタフェースは、次の要件を満たしている必要があります。 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;
}


2.4.2 RemoteExceptionクラス

java.rmi.RemoteExceptionクラスは、リモート・メソッド呼出しの間にRMIランタイムがスローする例外のスーパー・クラスです。RMIシステムを使うアプリケーションの安定性を保つために、リモート・インタフェースで宣言される各リモート・メソッドはthrows節の中でjava.rmi.RemoteException (またはjava.io.IOExceptionjava.lang.Exceptionなどのjava.rmi.RemoteExceptionのスーパー・クラス)を指定する必要があります。

例外java.rmi.RemoteExceptionは、リモート・メソッド呼出しがなんらかの理由で失敗したときにスローされます。リモート・メソッド呼出しは、次のような理由で失敗することがあります。

RemoteExceptionクラスは、チェック例外(リモート・メソッドの呼出し側が処理する必要があり、コンパイラによってチェックされる例外)で、RuntimeExceptionではありません。


2.4.3 RemoteObjectクラスとそのサブクラス

RMIサーバー関数はjava.rmi.server.RemoteObjectとそのサブクラス、java.rmi.server.RemoteServerjava.rmi.server.UnicastRemoteObject、およびjava.rmi.activation.Activatableが提供します。

目次||
Copyright 1997, 2010, Oracle and/or its affiliates. All rights reserved.