JavaTM Platform
Standard Ed. 6

javax.management.remote.rmi
クラス RMIServerImpl

java.lang.Object
  上位を拡張 javax.management.remote.rmi.RMIServerImpl
すべての実装されたインタフェース:
Closeable, Remote, RMIServer
直系の既知のサブクラス:
RMIIIOPServerImpl, RMIJRMPServerImpl

public abstract class RMIServerImpl
extends Object
implements Closeable, RMIServer

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

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

これは抽象クラスです。具象サブクラスは、JRMP と IIOP のどちらを使用するかなど、クライアント接続オブジェクトの詳細を定義します。

導入されたバージョン:
1.5

コンストラクタの概要
RMIServerImpl(Map<String,?> env)
          新しい RMIServerImpl を構築します。
 
メソッドの概要
protected  void clientClosed(RMIConnection client)
          makeClient によって作成されたクライアント接続の終了時に呼び出されるメソッドです。
 void close()
          この接続サーバーを終了します。
protected abstract  void closeClient(RMIConnection client)
          makeClient で作成されたクライアント接続を終了します。
protected abstract  void closeServer()
          close() によって呼び出され、コネクタサーバーを終了します。
protected abstract  void export()
          この RMI オブジェクトをエクスポートします。
 ClassLoader getDefaultClassLoader()
          このコネクタサーバーで使用されるデフォルトの ClassLoader を取得します。
 MBeanServer getMBeanServer()
          このコネクタサーバーの接続先の MBeanServer です。
protected abstract  String getProtocol()
          このオブジェクトのプロトコル文字列を返します。
 String getVersion()
          このコネクタサーバーが認識する RMI コネクタプロトコルのバージョンです。
protected abstract  RMIConnection makeClient(String connectionId, Subject subject)
          新しいクライアント接続を作成します。
 RMIConnection newClient(Object credentials)
          新しいクライアント接続を作成します。
 void setDefaultClassLoader(ClassLoader cl)
          このコネクタサーバーのデフォルトの ClassLoader を設定します。
 void setMBeanServer(MBeanServer mbs)
          このコネクタサーバーの接続先の MBeanServer を設定します。
abstract  Remote toStub()
          このサーバーオブジェクトのリモート処理可能なスタブを返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

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()

getMBeanServer

public MBeanServer getMBeanServer()

このコネクタサーバーの接続先の MBeanServer です。これは、このオブジェクト上で setMBeanServer(javax.management.MBeanServer) に渡される最後の値です。 メソッド呼び出しがまだ行われていない場合は null になります。

戻り値:
このコネクタの接続先の MBeanServer
関連項目:
setMBeanServer(javax.management.MBeanServer)

getVersion

public String getVersion()
インタフェース RMIServer の記述:

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

 protocol-version implementation-name
 

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

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

定義:
インタフェース RMIServer 内の getVersion
戻り値:
ここで説明されている形式の文字列

newClient

public RMIConnection newClient(Object credentials)
                        throws IOException

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

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

定義:
インタフェース RMIServer 内の newClient
パラメータ:
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、RMI/IIOP の場合は iiop になります。

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

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 オブジェクト 1 つ 1 つに対して、その close メソッドが呼び出されます。

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

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

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

定義:
インタフェース Closeable 内の close
例外:
IOException - closeServer() または RMIConnection.close() 呼び出しが IOException をスローした場合

closeServer

protected abstract void closeServer()
                             throws IOException

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

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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。