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, 2013, Oracle and/or its affiliates. All rights reserved.