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
- コネクタサーバーを起動できない場合。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, 2013, Oracle and/or its affiliates. All rights reserved.