public class RMIConnectorServer extends JMXConnectorServer
リモート・クライアントからのRMIベースの接続を作成するJMX APIコネクタ・サーバーです。通常、こうしたコネクタ・サーバーは、JMXConnectorServerFactory
で作成されます。しかし、RMIServerImpl
オブジェクトなど、このクラスを直接使用できる特殊なアプリケーションもあります。
修飾子と型 | フィールドと説明 |
---|---|
static String |
JNDI_REBIND_ATTRIBUTE
RMIコネクタ・サーバーを表す
RMIServer スタブが同じアドレスの既存のスタブをオーバーライドするかどうかを指定する属性の名前です。 |
static String |
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
作成されたRMIオブジェクトの
RMIClientSocketFactory をこのコネクタに指定する属性の名前です。 |
static String |
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
作成されたRMIオブジェクトの
RMIServerSocketFactory をこのコネクタに指定する属性の名前です。 |
AUTHENTICATOR
コンストラクタと説明 |
---|
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment)
RMIConnectorServer を作成します。 |
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer)
指定されたMBeanサーバーの
RMIConnectorServer を作成します。 |
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer)
指定されたMBeanサーバーの
RMIConnectorServer を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected void |
connectionClosed(String connectionId, String message, Object userData)
クライアント接続が正常に終了したときサブクラスによって呼び出されます。
|
protected void |
connectionFailed(String connectionId, String message, Object userData)
クライアント接続に失敗したときサブクラスによって呼び出されます。
|
protected void |
connectionOpened(String connectionId, String message, Object userData)
新しいクライアント接続が開かれるとサブクラスによって呼び出されます。
|
JMXServiceURL |
getAddress()
このコネクタ・サーバーのアドレス。
|
Map<String,?> |
getAttributes()
このコネクタ・サーバーの属性。
|
boolean |
isActive()
コネクタ・サーバーがアクティブかどうかを判定します。
|
void |
setMBeanServerForwarder(MBeanServerForwarder mbsf)
このコネクタ・サーバー経由で着信したMBeanサーバーへの要求を遮断するオブジェクトを挿入します。
|
void |
start()
アクティブになったコネクタ・サーバーは、クライアント接続の待機を開始します。
|
void |
stop()
コネクタ・サーバーを終了して、クライアント接続の待機を停止します。
|
JMXConnector |
toJMXConnector(Map<String,?> env)
このコネクタ・サーバーのクライアント・スタブを返します。
|
getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
public static final String JNDI_REBIND_ATTRIBUTE
RMIコネクタ・サーバーを表すRMIServer
スタブが同じアドレスの既存のスタブをオーバーライドするかどうかを指定する属性の名前です。この属性に値を関連付ける場合、"true"
または"false"
と同等の文字列(英字の大文字と小文字の区別はしない)を指定する必要があります。デフォルト値はfalseです。
public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
作成されたRMIオブジェクトのRMIClientSocketFactory
をこのコネクタに指定する属性の名前です。この属性にはRMIClientSocketFactory
型の値を関連付ける必要があり、その値はコネクタ・サーバーの作成時に指定されたMap
引数内にのみ指定できます。
public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
作成されたRMIオブジェクトのRMIServerSocketFactory
をこのコネクタに指定する属性の名前です。この属性にはRMIServerSocketFactory
型の値を関連付ける必要があり、その値はコネクタ・サーバーの作成時に指定されたMap
引数内にのみ指定できます。
public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment) throws IOException
RMIConnectorServer
を作成します。これは、RMIConnectorServer(directoryURL,environment,null,null)
の呼び出しと同等です。
url
- コネクタ・サーバーの作成方法を定義するURL。nullは不可。environment
- RMIオブジェクトの作成と格納を管理する属性。nullも可、その場合は空マップと同等。IllegalArgumentException
- url
がnullである場合。MalformedURLException
- url
がRMIコネクタの構文に準拠していない場合、またはそのプロトコルがこの実装で認識されない場合。このコンストラクタの使用時には、rmiとiiopのみが有効。IOException
- 何らかの理由でコネクタ・サーバーを作成できない場合、またはstart
メソッドの失敗を避けられない場合。public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer) throws IOException
指定されたMBeanサーバーのRMIConnectorServer
を作成します。これは、RMIConnectorServer(directoryURL,environment,null,mbeanServer)
の呼び出しと同等です。
url
- コネクタ・サーバーの作成方法を定義するURL。nullは不可。environment
- RMIオブジェクトの作成と格納を管理する属性。nullも可、その場合は空マップと同等。mbeanServer
- 新しいコネクタ・サーバーの接続先MBeanサーバー。このコネクタ・サーバーをMBeanサーバーに登録することによってMBeanサーバーに接続する場合はnull。IllegalArgumentException
- url
がnullである場合。MalformedURLException
- url
がRMIコネクタの構文に準拠していない場合、またはそのプロトコルがこの実装で認識されない場合。このコンストラクタの使用時には、rmiとiiopのみが有効。IOException
- 何らかの理由でコネクタ・サーバーを作成できない場合、またはstart
メソッドの失敗を避けられない場合。public RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer) throws IOException
指定されたMBeanサーバーのRMIConnectorServer
を作成します。
url
- コネクタ・サーバーの作成方法を定義するURL。nullは不可。environment
- RMIオブジェクトの作成と格納を管理する属性。nullも可、その場合は空マップと同等。rmiServerImpl
- urlに指定されたプロトコル型に準拠した、RMIServerインタフェースの実装。このパラメータの値がnull以外の場合、urlに指定されたプロトコル・タイプは強制されず、有効と見なされる。それ以外の場合、「rmi」と「iiop」のみが認識される。mbeanServer
- 新しいコネクタ・サーバーの接続先MBeanサーバー。このコネクタ・サーバーをMBeanサーバーに登録することによってMBeanサーバーに接続する場合はnull。IllegalArgumentException
- url
がnullである場合。MalformedURLException
- url
がRMIコネクタの構文に準拠していない場合、またはそのプロトコルがこの実装で認識されない場合。rmiServerImplがnullのときは、「rmi」と「iiop」のみが認識される。IOException
- 何らかの理由でコネクタ・サーバーを作成できない場合、またはstart
メソッドの失敗を避けられない場合。start()
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
このコネクタ・サーバーのクライアント・スタブを返します。クライアント・スタブは直列化可能なオブジェクトです。このオブジェクトのconnect
メソッドを使用して、このコネクタ・サーバーとの新しい接続を1つ確立できます。
toJMXConnector
、インタフェース: JMXConnectorServerMBean
toJMXConnector
、クラス: JMXConnectorServer
env
- JMXConnector.connect(Map)
に提供可能な同じ種類のクライアント接続パラメータ。nullも可、その場合は空マップと同等。UnsupportedOperationException
- このコネクタ・サーバーがクライアント・スタブの生成機能をサポートしない場合。IllegalStateException
- JMXConnectorServerが起動していない場合(isActive()
を参照)。IOException
- 通信障害により、スタブを作成できない場合。public void start() throws IOException
アクティブになったコネクタ・サーバーは、クライアント接続の待機を開始します。コネクタ・サーバーがすでにアクティブな場合は、このメソッドを呼び出しても何も起こりません。コネクタ・サーバーが停止している状態でこのメソッドを呼び出すと、IOException
が生成されます。
初期呼出し時のこのメソッドの動作は、次のように、構築時に指定されたパラメータに依存します。
まず、RMIからコネクタ・サーバーをエクスポートするため、RMIServerImpl
のサブクラスのオブジェクトが要求されます。
RMIServerImpl
が指定されていた場合は、これが使用されます。
JMXServiceURL
のプロトコル部分がiiop
であれば、RMIIIOPServerImpl
型のオブジェクトが作成されます。
JMXServiceURL
がnullであるか、そのプロトコル部分がrmi
であれば、RMIJRMPServerImpl
型のオブジェクトが作成されます。
RMIServerImpl
を作成できるか、またはMalformedURLException
をスローできます。
指定されたアドレスに、javax.management.remote.rmi
のパッケージ・ドキュメントに指定されたとおりのJNDIディレクトリURLが含まれる場合、このRMIConnectorServer
は、指定されたアドレスにRMIServerImpl
をバインドすることにより、ブートストラップします。
JMXServiceURL
のURLパス部分が空または単一のスラッシュ(/
)である場合、RMIオブジェクトはディレクトリにバインドされません。代わりに、その参照が、getAddress()
から返されるRMIConnectorServerアドレスのURLパス内にエンコードされます。rmi
およびiiop
のエンコーディングについては、javax.management.remote.rmi
のパッケージ・ドキュメントに記載されています。
URLパスが空でなく、JNDIディレクトリURLでもない場合、またはプロトコルがrmi
でもiiop
でもない場合の動作は、実装ごとに定義されており、コネクタ・サーバーの作成時または起動時にMalformedURLException
をスローする動作が含まれている場合もあります。
IllegalStateException
- コネクタ・サーバーがMBeanサーバーに接続されていない場合。IOException
- コネクタ・サーバーを起動できない場合、またはiiop
プロトコルでRMI/IIOPがサポートされていない場合。public void stop() throws IOException
コネクタ・サーバーを終了して、クライアント接続の待機を停止します。このメソッドを呼び出すと、このサーバーで作成されたすべてのクライアント接続が終了します。このメソッドが正常に終了した場合も、例外を生成して終了した場合も、コネクタ・サーバーは新しいクライアント接続を作成しなくなります。
いったん停止したコネクタ・サーバーを再度起動することはできません。
コネクタ・サーバーがすでに停止している場合は、このメソッドを呼び出しても何も起こりません。コネクタ・サーバーがまだ起動していない状態でこのメソッドを呼び出すと、コネクタ・サーバー・オブジェクトが永続的に無効化されます。
クライアント接続の終了時に生成された例外は、このメソッドからはスローされません。このMBeanからは、JMXConnectionNotification
と、終了できなかった接続の接続IDが発行されます。
コネクタ・サーバーの終了は、時間のかかるオペレーションです。たとえば有効な接続を持っているクライアント・マシンがクラッシュした場合、終了オペレーションはネットワーク・プロトコルのタイム・アウトまで中断される可能性があります。終了オペレーションの途中で待たされたくない場合は、別スレッドで実行してください。
このメソッドは、コネクタ・サーバーのRMIServerImpl
オブジェクト上でclose
メソッドを呼び出します。
start
メソッドでRMIServerImpl
がJNDIディレクトリにバインドされている場合、このメソッドでバインドが解除されます。
IOException
- サーバーを正常に終了できない場合、またはディレクトリからRMIServerImpl
のバインドを解除できない場合。この例外がスローされたとき、サーバーはすでにすべてのクライアント接続の終了(該当する場合)、RMIServerImpl.close()
の呼び出し、およびディレクトリからのRMIServerImpl
のバインド解除(該当する場合)を試行している。サーバーが終了を試行したとき例外が生成されたものを除いて、すべてのクライアント接続が終了している。public boolean isActive()
JMXConnectorServerMBean
コネクタ・サーバーがアクティブかどうかを判定します。start
メソッドが正常に終了すると、コネクタ・サーバーはアクティブになります。その後、stop
メソッドが呼び出されるか、障害が発生するまで、コネクタ・サーバーはアクティブな状態を維持します。
public JMXServiceURL getAddress()
JMXConnectorServerMBean
このコネクタ・サーバーのアドレス。
コネクタ・サーバーの作成時に指定されたアドレスが完全であるとは限らないため、返されるアドレスは元のJMXServiceURL
とは一致しない可能性があります。たとえば、ポート番号はコネクタ・サーバーの起動時に動的に割り当てられることがあります。このため、返されるアドレスはJMXConnectorServer
の実際のJMXServiceURL
です。これは、クライアントがJMXConnectorFactory.connect(JMXServiceURL)
に指定するアドレスです。
JMXConnectorServer
がまだactive
でない場合、返されるアドレスはnull
になります。
public Map<String,?> getAttributes()
JMXConnectorServerMBean
このコネクタ・サーバーの属性。
public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
JMXConnectorServerMBean
このコネクタ・サーバー経由で着信したMBeanサーバーへの要求を遮断するオブジェクトを挿入します。このオブジェクトは、このコネクタ・サーバーによって作成された新しい接続のMBeanServer
として指定されます。既存の接続に影響はありません。
このメソッドは、異なるMBeanServerForwarder
オブジェクトを使って繰返し呼び出すことができます。結果はフォワーダのチェーンになります。最後に追加されたフォワーダが、チェーンの先頭になります。詳細は次のとおりです。
このコネクタ・サーバーがすでにMBeanServer
オブジェクトに関連付けられている場合は、mbsf.setMBeanServer
にこのオブジェクトが渡されます。この処理で例外が生成された場合、このメソッドはその例外をスローします。
このコネクタがまだMBeanServer
オブジェクトに関連付けられていない場合、またはmbsf.setMBeanServer
呼出しが成功した場合、mbsf
がこのコネクタ・サーバーのMBeanServer
になります。
setMBeanServerForwarder
、インタフェース: JMXConnectorServerMBean
setMBeanServerForwarder
、クラス: JMXConnectorServer
mbsf
- 新しいMBeanServerForwarder
。protected void connectionOpened(String connectionId, String message, Object userData)
JMXConnectorServer
新しいクライアント接続が開かれるとサブクラスによって呼び出されます。JMXConnectorServer.getConnectionIds()
によって返されるリストにconnectionId
を追加し、JMXConnectionNotification.OPENED
型のJMXConnectionNotification
を発行します。
connectionOpened
、クラス: JMXConnectorServer
connectionId
- 新しい接続のID。以前にこのコネクタ・サーバーによって開かれた接続のIDとは異なる必要がある。message
- 発行されたJMXConnectionNotification
のメッセージ。nullも可。Notification.getMessage()
を参照してください。userData
- 発行されたJMXConnectionNotification
のuserData
。nullも可。Notification.getUserData()
を参照してください。protected void connectionClosed(String connectionId, String message, Object userData)
JMXConnectorServer
クライアント接続が正常に終了したときサブクラスによって呼び出されます。JMXConnectorServer.getConnectionIds()
によって返されるリストからconnectionId
を削除し、JMXConnectionNotification.CLOSED
型のJMXConnectionNotification
を発行します。
connectionClosed
、クラス: JMXConnectorServer
connectionId
- 終了した接続のID。message
- 発行されたJMXConnectionNotification
のメッセージ。nullも可。Notification.getMessage()
を参照してください。userData
- 発行されたJMXConnectionNotification
のuserData
。nullも可。Notification.getUserData()
を参照してください。protected void connectionFailed(String connectionId, String message, Object userData)
JMXConnectorServer
クライアント接続に失敗したときサブクラスによって呼び出されます。JMXConnectorServer.getConnectionIds()
によって返されるリストからconnectionId
を削除し、JMXConnectionNotification.FAILED
型のJMXConnectionNotification
を発行します。
connectionFailed
、クラス: JMXConnectorServer
connectionId
- 失敗した接続のID。message
- 発行されたJMXConnectionNotification
のメッセージ。nullも可。Notification.getMessage()
を参照してください。userData
- 発行されたJMXConnectionNotification
のuserData
。nullも可。Notification.getUserData()
を参照してください。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.