public abstract class RMIServerImpl extends Object implements Closeable, RMIServer
コネクタ・サーバーを表すRMIオブジェクトです。リモート・クライアントは、newClient(Object)
メソッドを使って接続を行えます。このメソッドは、接続を表すRMIオブジェクトを返します。
ユーザー・コードは、必ずしもこのクラスを直接参照しません。通常、RMI接続サーバーは、RMIConnectorServer
クラスで作成されます。リモート・クライアントは、通常、JMXConnectorFactory
を使用するか、RMIConnector
をインスタンス化することによって接続を作成します。
これは抽象クラスです。具象サブクラスは、JRMPとIIOPのどちらを使用するかなど、クライアント接続オブジェクトの詳細を定義します。
コンストラクタと説明 |
---|
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()
このサーバー・オブジェクトのリモート処理可能なスタブを返します。
|
protected abstract void export() throws IOException
このRMIオブジェクトをエクスポートします。
IOException
- このRMIオブジェクトをエクスポートできない場合。public abstract Remote toStub() throws IOException
IOException
- スタブを取得できない場合。たとえば、RMIServerImplがまだエクスポートされていない場合など。public void setDefaultClassLoader(ClassLoader cl)
このコネクタ・サーバーのデフォルトのClassLoader
を設定します。新しいクライアント接続は、このクラス・ローダーを使用します。既存のクライアント接続に影響はありません。
cl
- このコネクタ・サーバーで使用される新しいClassLoader
。getDefaultClassLoader()
public ClassLoader getDefaultClassLoader()
このコネクタ・サーバーで使用されるデフォルトのClassLoader
を取得します。
ClassLoader
。setDefaultClassLoader(java.lang.ClassLoader)
public void setMBeanServer(MBeanServer mbs)
このコネクタ・サーバーの接続先のMBeanServer
を設定します。新しいクライアント接続は、このMBeanServer
と相互に作用します。既存のクライアント接続に影響はありません。
mbs
- 新しいMBeanServer
。nullでもよいが、その場合、新しいクライアント接続は拒否される。getMBeanServer()
public MBeanServer getMBeanServer()
このコネクタ・サーバーの接続先のMBeanServer
です。これは、このオブジェクト上でsetMBeanServer(javax.management.MBeanServer)
に渡される最後の値です。そのメソッドが1回も呼び出されていない場合はnullになります。
MBeanServer
。setMBeanServer(javax.management.MBeanServer)
public String getVersion()
RMIServer
このコネクタ・サーバーが認識するRMIコネクタ・プロトコルのバージョンです。次の形式の文字列になります。
protocol-version implementation-name
protocol-version
はゼロ以上の複数の整数をピリオド(.
)で区切った形式になります。このドキュメントに記載されているバージョンの実装では、文字列1.0
を使用します。
プロトコル・バージョンと実装名の間には空白文字を1つ入力する必要があります。実装名の形式は特定されていませんが、実装のバージョン番号を含めることをお薦めします。セキュリティ上の理由などにより、実装名として空文字列を指定することもできます。
getVersion
、インタフェース: RMIServer
public RMIConnection newClient(Object credentials) throws IOException
新しいクライアント接続を作成します。このメソッドは、makeClient
を呼び出し、返されたクライアント接続オブジェクトを内部リストに追加します。close()
メソッドにより、このRMIServerImpl
が終了した場合、リスト内に残っている各オブジェクトのclose()
メソッドが呼び出されます。
この内部リスト内にクライアント接続オブジェクトが存在していても、このクライアント接続オブジェクトがガベージ・コレクションの対象から除外されるわけではありません。
newClient
、インタフェース: RMIServer
credentials
- このオブジェクトは、RMIConnection
を作成する前に、呼出し側の認証用としてサーバーに渡されるユーザー定義の証明書を指定する。nullも可。RMIConnection
。これは通常、makeClient
によって作成されたオブジェクトであるが、実装では、RMIConnection
を実装する別のオブジェクトにこのオブジェクトをラップできる。IOException
- 新しいクライアント・オブジェクトを作成またはエクスポートできない場合。SecurityException
- 指定された証明書では、サーバーがユーザーを認証できない場合。IllegalStateException
- getMBeanServer()
がnullである場合。protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException
新しいクライアント接続を作成します。このメソッドは、公開メソッドnewClient(Object)
によって呼び出されます。
connectionId
- 新しい接続のID。このコネクタ・サーバーによって開かれたすべての接続は、それぞれ異なるIDを持つ。このパラメータがnullの場合の動作は不定。subject
- 認証済みのサブジェクト。nullも可。RMIConnection
。IOException
- 新しいクライアント・オブジェクトを作成またはエクスポートできない場合。protected abstract void closeClient(RMIConnection client) throws IOException
makeClient
で作成されたクライアント接続を終了します。
client
- 以前にmakeClient
によって返された、closeClient
メソッドがまだ1回も呼び出されていない接続。client
がnullの場合を含めて、何らかの条件違反があった場合、動作は不定になる。IOException
- クライアント接続を終了できない場合。protected abstract String getProtocol()
このオブジェクトのプロトコル文字列を返します。返される文字列は、RMI/JRMPの場合はrmi
、RMI/IIOPの場合はiiop
になります。
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である場合。public void close() throws IOException
この接続サーバーを終了します。このメソッドは、新しいクライアント接続をこれ以上受け付けないようにするため、最初にcloseServer()
メソッドを呼び出します。すると、makeClient
によって返された残りのRMIConnection
オブジェクトのそれぞれに対して、そのclose
メソッドが呼び出されます。
このメソッドが2回以上呼び出されたときの動作は指定されていません。
closeServer()
がIOException
をスローした場合、個々の接続は終了します。その後、このメソッドからIOException
がスローされます。
closeServer()
は正常に復帰したが、1つ以上の接続がIOException
をスローした場合、すべての接続が終了したあと、これらのIOException
のうちの1つがこのメソッドからスローされます。1つ以上の接続がIOException
をスローした場合、このメソッドからスローされる内容は不定になります。
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
IOException
- closeServer()
またはいずれかのRMIConnection.close()
呼出しがIOException
をスローした場合。protected abstract void closeServer() throws IOException
close()
によって呼び出され、コネクタ・サーバーを終了します。このメソッドの終了後、コネクタ・サーバーは新しい接続を一切受け付けなくなります。
IOException
- コネクタ・サーバーの終了に失敗した場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.