- java.lang.Object
-
- javax.management.remote.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(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()
このオブジェクトのプロトコル文字列を返します。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
-
インタフェース javax.management.remote.rmi.RMIServerで宣言されたメソッド
getVersion
-
-
-
-
メソッドの詳細
-
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)
に渡される最後の値です。そのメソッドが1回も呼び出されていない場合はnullになります。- 戻り値:
- このコネクタの接続先の
MBeanServer
。 - 関連項目:
setMBeanServer(javax.management.MBeanServer)
-
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
- コネクタ・サーバーの終了に失敗した場合。
-
-