public abstract class JMXConnectorServer extends NotificationBroadcasterSupport implements JMXConnectorServerMBean, MBeanRegistration, JMXAddressable
すべてのコネクタ・サーバーのスーパー・クラスです。コネクタ・サーバーはMBeanサーバーに接続されます。コネクタ・サーバーはクライアント接続要求を待機し、要求ごとに1つずつ接続を作成します。
コネクタ・サーバーとMBeanサーバーの関連付けは、コネクタ・サーバーをMBeanサーバーに登録するか、MBeanサーバーをコネクタ・サーバーのコンストラクタに渡すことによって行われます。
コネクタ・サーバーは作成された時点では非アクティブであり、start
メソッドが呼び出された時点でクライアント接続の待機を開始します。その後、stop
メソッドが呼び出されるか、MBeanサーバーから登録解除されると、コネクタ・サーバーはクライアント接続の待機を停止します。
コネクタ・サーバーを停止しても、MBeanサーバーから登録解除されることはありません。いったん停止したコネクタ・サーバーを再起動することはできません。
クライアント接続が確立または終了するたびに、JMXConnectionNotification
クラスの通知が発行されます。
修飾子と型 | フィールドと説明 |
---|---|
static String |
AUTHENTICATOR
コネクタ・サーバーのオーセンティケータを指定する属性の名前です。
|
コンストラクタと説明 |
---|
JMXConnectorServer()
接続先のMBeanサーバーにMBeanとして登録されるコネクタ・サーバーを構築します。
|
JMXConnectorServer(MBeanServer mbeanServer)
指定されたMBeanサーバーに接続するコネクタ・サーバーを構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
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)
新しいクライアント接続が開かれるとサブクラスによって呼び出されます。
|
String[] |
getConnectionIds()
このコネクタ・サーバーへの現在開いている接続のIDのリストです。
|
MBeanServer |
getMBeanServer()
このコネクタ・サーバーの接続先MBeanサーバーを返します。
|
MBeanNotificationInfo[] |
getNotificationInfo()
このMBeanから送信される通知を示す配列を返します。
|
void |
postDeregister()
MBeanサーバーから登録解除したあと、MBeanが必要なオペレーションを実行できるようにします。
|
void |
postRegister(Boolean registrationDone)
MBeanサーバーへの登録が成功または失敗したあと、MBeanが必要なオペレーションを実行できるようにします。
|
void |
preDeregister()
このコネクタ・サーバーがMBeanサーバーから登録解除されるとき、そのMBeanサーバーによって呼び出されます。
|
ObjectName |
preRegister(MBeanServer mbs, ObjectName name)
このコネクタ・サーバーがMBeanサーバーに登録されているとき、登録先のMBeanサーバーによって呼び出されます。
|
void |
setMBeanServerForwarder(MBeanServerForwarder mbsf)
このコネクタ・サーバー経由で着信したMBeanサーバーへの要求を遮断するオブジェクトを挿入します。
|
JMXConnector |
toJMXConnector(Map<String,?> env)
このコネクタ・サーバーのクライアント・スタブを返します。
|
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getAddress, getAttributes, isActive, start, stop
getAddress
public static final String AUTHENTICATOR
コネクタ・サーバーのオーセンティケータを指定する属性の名前です。この属性に値が関連付けられている場合、その値は、JMXAuthenticator
インタフェースを実装するオブジェクトである必要があります。
public JMXConnectorServer()
接続先のMBeanサーバーにMBeanとして登録されるコネクタ・サーバーを構築します。このコンストラクタは、通常、リモートで利用できるコネクタ・サーバーがMBeanサーバー内で作成されるとき、いずれかのcreateMBean
メソッドによって呼び出されます。
public JMXConnectorServer(MBeanServer mbeanServer)
指定されたMBeanサーバーに接続するコネクタ・サーバーを構築します。この方法で作成されたコネクタ・サーバーを別のMBeanサーバーに登録することもできます。または、いずれのMBeanサーバーにも登録しないこともできます。
mbeanServer
- このコネクタ・サーバーの接続先MBeanサーバー。このコネクタ・サーバーをMBeanサーバーに登録することによってMBeanサーバーに接続する場合はnull。public MBeanServer getMBeanServer()
このコネクタ・サーバーの接続先MBeanサーバーを返します。
public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
JMXConnectorServerMBean
このコネクタ・サーバー経由で着信したMBeanサーバーへの要求を遮断するオブジェクトを挿入します。このオブジェクトは、このコネクタ・サーバーによって作成された新しい接続のMBeanServer
として指定されます。既存の接続に影響はありません。
このメソッドは、異なるMBeanServerForwarder
オブジェクトを使って繰返し呼び出すことができます。結果はフォワーダのチェーンになります。最後に追加されたフォワーダが、チェーンの先頭になります。詳細は次のとおりです。
このコネクタ・サーバーがすでにMBeanServer
オブジェクトに関連付けられている場合は、mbsf.setMBeanServer
にこのオブジェクトが渡されます。この処理で例外が生成された場合、このメソッドはその例外をスローします。
このコネクタがまだMBeanServer
オブジェクトに関連付けられていない場合、またはmbsf.setMBeanServer
呼出しが成功した場合、mbsf
がこのコネクタ・サーバーのMBeanServer
になります。
setMBeanServerForwarder
、インタフェース: JMXConnectorServerMBean
mbsf
- 新しいMBeanServerForwarder
。public String[] getConnectionIds()
JMXConnectorServerMBean
このコネクタ・サーバーへの現在開いている接続のIDのリストです。
getConnectionIds
、インタフェース: JMXConnectorServerMBean
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
このコネクタ・サーバーのクライアント・スタブを返します。クライアント・スタブは直列化可能なオブジェクトです。このオブジェクトのconnect
メソッドを使用して、このコネクタ・サーバーとの新しい接続を1つ確立できます。
指定されたコネクタが、クライアント・スタブの生成機能をサポートしない場合もあります。ただし、JMXリモートAPIによって指定されたコネクタ(JMXMPコネクタとRMIコネクタ)は、この機能をサポートします。
このメソッドのデフォルト実装は、JMXConnectorServerMBean.getAddress()
とJMXConnectorFactory
を使って、次のようなコードのスタブを生成します。
JMXServiceURL addr =getAddress()
; returnJMXConnectorFactory.newJMXConnector(addr, env)
;
これが適切でないコネクタ・サーバーは、適切なロジックを実装するか、UnsupportedOperationException
をスローするために、このメソッドをオーバーライドする必要があります。
toJMXConnector
、インタフェース: JMXConnectorServerMBean
env
- JMXConnector.connect(Map)
に提供可能な同じ種類のクライアント接続パラメータ。nullも可、その場合は空マップと同等。UnsupportedOperationException
- このコネクタ・サーバーがクライアント・スタブの生成機能をサポートしない場合。IllegalStateException
- JMXConnectorServerが起動していない場合(JMXConnectorServerMBean.isActive()
を参照)。IOException
- 通信障害により、スタブを作成できない場合。public MBeanNotificationInfo[] getNotificationInfo()
このMBeanから送信される通知を示す配列を返します。JMXConnectorServer
内の実装は、要素1個の配列を返します。これは、JMXConnectionNotification
クラスの通知(そのクラスにタイプが定義される)を発行できることを示します。その他の通知を発行できるサブクラスは、この要素とその他の通知の説明を含む配列を返します。
getNotificationInfo
、インタフェース: NotificationBroadcaster
getNotificationInfo
、クラス: NotificationBroadcasterSupport
protected void connectionOpened(String connectionId, String message, Object userData)
新しいクライアント接続が開かれるとサブクラスによって呼び出されます。getConnectionIds()
によって返されるリストにconnectionId
を追加し、JMXConnectionNotification.OPENED
型のJMXConnectionNotification
を発行します。
connectionId
- 新しい接続のID。以前にこのコネクタ・サーバーによって開かれた接続のIDとは異なる必要がある。message
- 発行されたJMXConnectionNotification
のメッセージ。nullも可。Notification.getMessage()
を参照してください。userData
- 発行されたJMXConnectionNotification
のuserData
。nullも可。Notification.getUserData()
を参照してください。NullPointerException
- connectionId
がnullである場合。protected void connectionClosed(String connectionId, String message, Object userData)
クライアント接続が正常に終了したときサブクラスによって呼び出されます。getConnectionIds()
によって返されるリストからconnectionId
を削除し、JMXConnectionNotification.CLOSED
型のJMXConnectionNotification
を発行します。
connectionId
- 終了した接続のID。message
- 発行されたJMXConnectionNotification
のメッセージ。nullも可。Notification.getMessage()
を参照してください。userData
- 発行されたJMXConnectionNotification
のuserData
。nullも可。Notification.getUserData()
を参照してください。NullPointerException
- connectionId
がnullである場合。protected void connectionFailed(String connectionId, String message, Object userData)
クライアント接続に失敗したときサブクラスによって呼び出されます。getConnectionIds()
によって返されるリストからconnectionId
を削除し、JMXConnectionNotification.FAILED
型のJMXConnectionNotification
を発行します。
connectionId
- 失敗した接続のID。message
- 発行されたJMXConnectionNotification
のメッセージ。nullも可。Notification.getMessage()
を参照してください。userData
- 発行されたJMXConnectionNotification
のuserData
。nullも可。Notification.getUserData()
を参照してください。NullPointerException
- connectionId
がnullである場合。public ObjectName preRegister(MBeanServer mbs, ObjectName name)
このコネクタ・サーバーがMBeanサーバーに登録されているとき、登録先のMBeanサーバーによって呼び出されます。このコネクタ・サーバーがMBeanサーバーに接続され、そのgetMBeanServer()
メソッドはmbs
を返します。
このコネクタ・サーバーがすでにMBeanサーバーに接続されている場合、このメソッドは何も実行しません。接続先のMBeanサーバーが、登録先のMBeanサーバーに一致している必要はありません。
preRegister
、インタフェース: MBeanRegistration
mbs
- このコネクタ・サーバーの登録先MBeanサーバー。name
- MBeanのオブジェクト名。NullPointerException
- mbs
またはname
がnullの場合。public void postRegister(Boolean registrationDone)
MBeanRegistration
このメソッドの実装がRuntimeException
またはError
をスローする場合、MBeanサーバーはRuntimeMBeanException
またはRuntimeErrorException
の内部でこれらをそれぞれ再スローします。ただし、postRegister
で例外をスローしてもMBeanの状態は変化しません。MBeanがすでに登録されている(registrationDone
がtrue
である)場合、MBeanの登録は解除されません。
createMBean()
またはregisterMBean()
を呼び出すコードでは、このような例外が発行されたときにMBeanの登録が失敗したとみなされることがあるため、これによって混乱が生じる可能性があります。したがって、回避できる場合はpostRegister
の実装で実行時例外またはエラーをスローしないことをお勧めします。
postRegister
、インタフェース: MBeanRegistration
registrationDone
- MBeanがMBeanサーバーに正常に登録されたかどうかを示す。登録に失敗した場合の値はfalse。public void preDeregister() throws Exception
このコネクタ・サーバーがMBeanサーバーから登録解除されるとき、そのMBeanサーバーによって呼び出されます。登録によってMBeanサーバーに接続していたコネクタ・サーバーがまだアクティブな場合、登録を解除するとstop
メソッドが呼び出されます。stop
メソッドが例外をスローした場合、登録解除は失敗します。stop
メソッドは、MBeanの登録解除前に、明示的に呼び出すことをお勧めします。
preDeregister
、インタフェース: MBeanRegistration
IOException
- stop
メソッドによってスローされた場合。Exception
- この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationException
として再スローされる。public void postDeregister()
MBeanRegistration
このメソッドの実装がRuntimeException
またはError
をスローする場合、MBeanサーバーはRuntimeMBeanException
またはRuntimeErrorException
の内部でこれらをそれぞれ再スローします。ただし、postDeregister
で例外をスローしてもMBeanの状態は変化しません。MBeanはすでに正常に登録解除されており、その状態のままになります。
unregisterMBean()
を呼び出すコードでは、MBeanの登録解除が失敗したとみなされることがあるため、これによって混乱が生じる可能性があります。したがって、回避できる場合はpostDeregister
の実装で実行時例外またはエラーをスローしないことをお勧めします。
postDeregister
、インタフェース: MBeanRegistration
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.