目次 | 前へ | 次へ 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.