クラスRMIServerImpl

java.lang.Object
javax.management.remote.rmi.RMIServerImpl
すべての実装されたインタフェース:
Closeable, AutoCloseable, Remote, RMIServer
直系の既知のサブクラス:
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

      public ClassLoader getDefaultClassLoader()

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

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

      public void setMBeanServer(MBeanServer mbs)

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

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

      public MBeanServer getMBeanServer()

      このコネクタ・サーバーの接続先のMBeanServerです。 これは、このオブジェクトのsetMBeanServer(MBeanServer)に渡される最後の値です。このメソッドがコールされていない場合はnullです。

      戻り値:
      このコネクタの接続先のMBeanServer
      関連項目:
    • getVersion

      public String getVersion()
      次のインタフェースからコピーされた説明: RMIServer

      このコネクタ・サーバーが認識するRMIコネクタ・プロトコルのバージョンです。 次の形式の文字列になります。

      protocol-version implementation-name
      

      protocol-versionはゼロ以上の複数の整数をピリオド(.)で区切った形式になります。 このドキュメントに記載されているバージョンの実装では、文字列1.0を使用します。

      プロトコル・バージョンと実装名の間には空白文字を1つ入力する必要があります。 実装名の形式は特定されていませんが、 実装のバージョン番号を含めることをお薦めします。 セキュリティ上の理由などにより、実装名として空文字列を指定することもできます。

      定義:
      getVersion、インタフェースRMIServer
      戻り値:
      ここで説明されている形式の文字列。
    • 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(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 - コネクタ・サーバーの終了に失敗した場合。