モジュール java.management.rmi

クラスRMIServerImpl

  • すべての実装されたインタフェース:
    Closeable, AutoCloseable, Remote, RMIServer
    直系の既知のサブクラス:
    RMIIIOPServerImpl, RMIJRMPServerImpl

    public abstract class RMIServerImpl
    extends Object
    implements Closeable, RMIServer

    コネクタ・サーバーを表すRMIオブジェクトです。 リモート・クライアントは、newClient(Object)メソッドを使って接続を行えます。 このメソッドは、接続を表すRMIオブジェクトを返します。

    ユーザー・コードは、必ずしもこのクラスを直接参照しません。 通常、RMI接続サーバーは、RMIConnectorServerクラスで作成されます。 リモート・クライアントは、通常、JMXConnectorFactoryを使用するか、RMIConnectorをインスタンス化することによって接続を作成します。

    これは抽象クラスです。 具体的なサブクラスは、クライアント接続オブジェクトの詳細を定義します。

    導入されたバージョン:
    1.5
    • コンストラクタの詳細

      • RMIServerImpl

        public RMIServerImpl​(Map<String,​?> env)

        新しいRMIServerImplを構築します。

        パラメータ:
        env - 新しいRMIServerImplの属性を含む環境。 nullも可、その場合は空マップと同等。
    • メソッドの詳細

      • export

        protected abstract void export()
                                throws IOException

        このRMIオブジェクトをエクスポートします。

        例外:
        IOException - このRMIオブジェクトをエクスポートできない場合。
      • toStub

        public abstract Remote toStub()
                               throws IOException
        このサーバー・オブジェクトのリモート処理可能なスタブを返します。
        戻り値:
        リモート処理可能なスタブ。
        例外:
        IOException - スタブを取得できない場合。たとえば、RMIServerImplがまだエクスポートされていない場合など。
      • setDefaultClassLoader

        public void setDefaultClassLoader​(ClassLoader cl)

        このコネクタ・サーバーのデフォルトのClassLoaderを設定します。 新しいクライアント接続は、このクラス・ローダーを使用します。 既存のクライアント接続に影響はありません。

        パラメータ:
        cl - このコネクタ・サーバーで使用される新しいClassLoader
        関連項目:
        getDefaultClassLoader()
      • getDefaultClassLoader

        public ClassLoader getDefaultClassLoader()

        このコネクタ・サーバーで使用されるデフォルトのClassLoaderを取得します。

        戻り値:
        このコネクタ・サーバーで使用されるデフォルトのClassLoader
        関連項目:
        setDefaultClassLoader(java.lang.ClassLoader)
      • setMBeanServer

        public void setMBeanServer​(MBeanServer mbs)

        このコネクタ・サーバーの接続先のMBeanServerを設定します。 新しいクライアント接続は、このMBeanServerと相互に作用します。 既存のクライアント接続に影響はありません。

        パラメータ:
        mbs - 新しいMBeanServer nullでもよいが、その場合、新しいクライアント接続は拒否される。
        関連項目:
        getMBeanServer()
      • newClient

        public RMIConnection newClient​(Object credentials)
                                throws IOException

        新しいクライアント接続を作成します。 このメソッドは、makeClientを呼び出し、返されたクライアント接続オブジェクトを内部リストに追加します。 close()メソッドにより、このRMIServerImplが終了した場合、リスト内に残っている各オブジェクトのclose()メソッドが呼び出されます。

        この内部リスト内にクライアント接続オブジェクトが存在していても、このクライアント接続オブジェクトがガベージ・コレクションの対象から除外されるわけではありません。

        定義:
        newClient、インタフェース: RMIServer
        パラメータ:
        credentials - このオブジェクトは、RMIConnectionを作成する前に、呼出し側の認証用としてサーバーに渡されるユーザー定義の証明書を指定する。 nullも可。
        戻り値:
        新しく生成されたRMIConnection これは通常、makeClientによって作成されたオブジェクトであるが、実装では、RMIConnectionを実装する別のオブジェクトにこのオブジェクトをラップできる。
        例外:
        IOException - 新しいクライアント・オブジェクトを作成またはエクスポートできない場合。
        SecurityException - 指定された証明書では、サーバーがユーザーを認証できない場合。
        IllegalStateException - getMBeanServer()がnullである場合。
      • makeClient

        protected abstract RMIConnection makeClient​(String connectionId,
                                                    Subject subject)
                                             throws IOException

        新しいクライアント接続を作成します。 このメソッドは、公開メソッドnewClient(Object)によって呼び出されます。

        パラメータ:
        connectionId - 新しい接続のID。 このコネクタ・サーバーによって開かれたすべての接続は、それぞれ異なるIDを持つ。 このパラメータがnullの場合の動作は不定。
        subject - 認証済みのサブジェクト。 nullも可。
        戻り値:
        新しく生成されたRMIConnection
        例外:
        IOException - 新しいクライアント・オブジェクトを作成またはエクスポートできない場合。
      • closeClient

        protected abstract void closeClient​(RMIConnection client)
                                     throws IOException

        makeClientで作成されたクライアント接続を終了します。

        パラメータ:
        client - 以前にmakeClientによって返された、closeClientメソッドがまだ1回も呼び出されていない接続。 clientがnullの場合を含めて、何らかの条件違反があった場合、動作は不定になる。
        例外:
        IOException - クライアント接続を終了できない場合。
      • getProtocol

        protected abstract String getProtocol()

        このオブジェクトのプロトコル文字列を返します。 文字列はRMI/JRMPの場合はrmiです。

        戻り値:
        このオブジェクトのプロトコル文字列。
      • clientClosed

        protected void clientClosed​(RMIConnection client)
                             throws IOException

        makeClientによって作成されたクライアント接続の終了時に呼び出されるメソッドです。 makeClientを定義するサブクラスは、生成されたオブジェクトのcloseメソッドが呼び出されたとき、このメソッドが呼び出されるように配置する必要があります。 これにより、RMIServerImplの接続リストからの削除が可能になります。 このリスト内にclientが存在していなくても、エラーではありません。

        このメソッドは、接続リストからclientを削除したあと、closeClient(client)を呼び出します。

        パラメータ:
        client - 終了したクライアント接続。
        例外:
        IOException - closeClient(javax.management.remote.rmi.RMIConnection)がこの例外をスローする場合。
        NullPointerException - clientがnullである場合。
      • close

        public void close()
                   throws IOException

        この接続サーバーを終了します。 このメソッドは、新しいクライアント接続をこれ以上受け付けないようにするため、最初にcloseServer()メソッドを呼び出します。 すると、makeClientによって返された残りのRMIConnectionオブジェクトのそれぞれに対して、そのcloseメソッドが呼び出されます。

        このメソッドが2回以上呼び出されたときの動作は指定されていません。

        closeServer()IOExceptionをスローした場合、個々の接続は終了します。その後、このメソッドからIOExceptionがスローされます。

        closeServer()は正常に復帰したが、1つ以上の接続がIOExceptionをスローした場合、すべての接続が終了したあと、これらのIOExceptionのうちの1つがこのメソッドからスローされます。 1つ以上の接続がIOExceptionをスローした場合、このメソッドからスローされる内容は不定になります。

        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Closeable
        例外:
        IOException - closeServer()またはいずれかのRMIConnection.close()呼出しがIOExceptionをスローした場合。
      • closeServer

        protected abstract void closeServer()
                                     throws IOException

        close()によって呼び出され、コネクタ・サーバーを終了します。 このメソッドの終了後、コネクタ・サーバーは新しい接続を一切受け付けなくなります。

        例外:
        IOException - コネクタ・サーバーの終了に失敗した場合。