JavaTM 2 Platform
Standard Ed. 5.0

javax.management.remote.rmi
クラス RMIServerImpl

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

public abstract class RMIServerImpl
extends Object
implements 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 の場合、空の Map と同等
メソッドの詳細

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 をスローした場合、このメソッドからスローされる内容は不定になります。

例外:
IOException - closeServer() または RMIConnection.close() 呼び出しが IOException をスローした場合

closeServer

protected abstract void closeServer()
                             throws IOException

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

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

JavaTM 2 Platform
Standard Ed. 5.0

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

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