|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
参照先:
説明
インタフェースの概要 | |
---|---|
RMIConnection | クライアントからサーバ側の MBeanServer 実装へ MBeanServer 要求を送信するために使用される RMI オブジェクトです。 |
RMIServer | RMI コネクタとの接続の確立に使用される RMI オブジェクトです。 |
クラスの概要 | |
---|---|
RMIConnectionImpl | RMIConnection インタフェースの実装です。 |
RMIConnectionImpl_Stub | |
RMIConnector | リモート RMI コネクタへの接続です。 |
RMIConnectorServer | リモートクライアントからの RMI ベースの接続を作成する JMX API コネクタサーバです。 |
RMIIIOPServerImpl | IIOP からエクスポートされ、IIOP からエクスポートされた RMI オブジェクトとしてクライアント接続を作成する RMIServerImpl です。 |
RMIJRMPServerImpl | JRMP からエクスポートされ、JRMP からエクスポートされた RMI オブジェクトとしてクライアント接続を作成する RMIServer オブジェクトです。 |
RMIServerImpl | コネクタサーバを表す RMI オブジェクトです。 |
RMIServerImpl_Stub |
RMI コネクタは、RMI を使ってクライアント要求をリモート MBean サーバへ転送する、JMX リモート API 用のコネクタです。このパッケージでは、RMI コネクタのユーザが、クライアント側およびサーバ側で直接参照する必要があるクラスを定義します。ユーザが直接参照しないクラスも定義しますが、これらの クラスは、RMI コネクタの実装が異なる場合も相互運用できるように定義する必要があります。
RMI コネクタは、RMI の JRMP および IIOP トランスポートをサポートします。
JMX リモート API のほとんどのコネクタと同様に、RMI もアドレスとして JMXServiceURL
を持っているのが普通です。このアドレスのプロトコル部分は、デフォルトの RMI トランスポート (JRMP) を使用するコネクタの場合 rmi
、
RMI/IIOP を使用するコネクタの場合 iiop
になります。
RMI コネクタアドレスには、次の 2 つの形式があります。
RMIServer
型 Java オブジェクトである。このアドレス形式を使用して、URL 内の外部ディレクトリエントリから RMI
スタブが取得される。外部ディレクトリは、JNDI
によって認識されるディレクトリのどれかで、通常は
RMI レジストリ、LDAP、または COS
アドレスの詳細は以下で説明します。
通常、RMI コネクタサーバを作成するには、JMXConnectorServerFactory.newJMXConnectorServer
メソッドに RMI
コネクタアドレスを指定します。コネクタサーバの接続先 MBean
サーバも、このメソッドのパラメータとして指定できます。別の方法として、コネクタサーバを MBean として MBean
サーバに登録する方法もあります。
RMI コネクタサーバは、RMIConnectorServer
のインスタンスを照会しても作成できます。この照会は、明示的に行なっても MBean サーバの createMBean
メソッドを介して行なってもかまいません。
RMI トランスポート (JRMP または IIOP) を選択するには、コネクタサーバの作成時に、serviceURL
の protocol
部分に rmi
または iiop
を指定します。RMIServerImpl
の適切なサブクラスをインスタンス化し、RMIConnectorServer
コンストラクタに指定することによって、特別なコネクタサーバを作成することもできます。
指定した serviceURL
の URL パスが空の場合
(オプションのホストとポートに続く部分)、または serviceURL
を指定しなかった場合、コネクタサーバにより、クライアントが接続のために使用できる新しい JMXServiceURL
が作成されます。
次のような serviceURL
の場合:
service:jmx:rmi://host:port
コネクタサーバは RMIJRMPServerImpl
を生成する。次のような JMXServiceURL
が返される:
service:jmx:rmi://host:port/stub/XXXX
XXXX
は生成されたオブジェクトのスタブの直列化形式。改行文字なしで
BASE64 符号化処理されている
次のような serviceURL
の場合:
service:jmx:iiop://host:port
コネクタサーバは RMIIIOPServerImpl
を生成する。次のような JMXServiceURL
が返される:
service:jmx:iiop://host:port/ior/IOR:XXXX
IOR:XXXX
は、生成されたオブジェクトの IOR
(Interoperable Object Reference) の標準 CORBA 符号化
serviceURL
が存在しない場合、ユーザ指定の RMIServerImpl
が必要になる。このオブジェクト上の toStub
メソッドが Stub
のインスタンスを返す場合、コネクタサーバは上記の iiop
形式を使用して JMXServiceURL
を生成する。その他の場合、rmi
形式を使用して JMXServiceURL
を生成する
ユーザ指定の serviceURL
内の host
はオプションです。存在する場合、生成された JMXServiceURL
にコピーされますが、存在しない場合は無視されます。存在しない場合、生成された JXMServiceURL
はローカルホスト名を持ちます。
ユーザ指定の serviceURL
内の port
もオプションです。存在する場合、生成された JMXServiceURL
にコピーされます。存在しない場合、生成された JMXServiceURL
はポートを持ちません。rmi
プロトコルを使用する serviceURL
では、port
が存在する場合、生成されたリモートオブジェクトがエクスポートされるポートを示します。それ以外の影響はありません。
ユーザが JMXServiceURL
ではなく RMIServerImpl
を指定した場合、生成された JMXServiceURL
の host
部分にローカルホスト名が入ります。port
部分はありません。
コネクタサーバの作成時に指定される serviceURL
アドレスには、生成されたアドレス (上記)
の代わりに、指定または生成された RMIServer
スタブの格納先となる「ディレクトリアドレス」を指定することもできます。この場合、クライアントでもサーバでも、このディレクトリアドレスが使用されま
す。
この場合、serviceURL
は次のいずれかの形式を取ります。
service:jmx:rmi://host:port/jndi/jndi-name
service:jmx:iiop://host:port/jndi/jndi-name
jndi-name
は、javax.naming.InitialContext.bind
に指定可能な文字列です。
ここでも、host
と :port
は省略可能です。
コネクタサーバは、プロトコル (rmi
または iiop
) に基づいて RMIServerImpl
を生成します。rmi
の場合、port
が指定されていれば使用されます。コネクタサーバは、起動時に、toStub
メソッドを使ってこのオブジェクトからスタブを派生し、指定された jndi-name
を使ってオブジェクトを格納します。例のように、JNDI API. によって定義されたプロパティが照会されます。
たとえば、次のような JMXServiceURL
の場合:
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
コネクタサーバは RMIJRMPServerImpl
を生成し、下記 JNDI
名を使ってそのスタブを格納します。
rmi://myhost/myname
これは、ホスト myhost
のデフォルトポートで実行されている RMI レジストリ内のエントリ myname
です。RMI レジストリは、ローカルホストからの接続を許可するだけです。したがって、この場合、myhost
は、コネクタサーバが実行されているホストの名前になります。
この JMXServiceURL
では、最初の rmi:
で RMI
コネクタ、2 番目の rmi:
で RMI レジストリが指定されています。
もう 1 つ例を挙げます。次のような JMXServiceURL
の場合:
service:jmx:iiop://ignoredhost/jndi/ldap://dirhost:9999/cn=this,ou=that
コネクタサーバは RMIIIOPServerImpl
を生成し、下記 JNDI
名を使ってそのスタブを格納します。
ldap://dirhost:9999/cn=this,ou=that
これは、ホスト dirhost
のポート 9999 で実行されている LDAP ディレクトリ内のエントリ
cn=this,ou=that
です。
次のような JMXServiceURL
の場合:
service:jmx:iiop://ignoredhost/jndi/cn=this,ou=that
コネクタサーバは RMIIIOPServerImpl
を生成し、下記 JNDI
名を使ってそのスタブを格納します。
cn=this,ou=that
この場合、JNDI API を適切に構成して、使用するディレクトリの情報を指定する必要があります。
これらの例では、コネクタサーバ、コネクタクライアントともに、ホスト名 ignoredhost
を使用しません。このホスト名は省略可能です。次の例を参照してください。
service:jmx:iiop:///jndi/cn=this,ou=that
それでも、コネクタサーバが実行されているホストの名前を使用することをお勧めします。通常、このホスト名は、ディレクトリホスト名とは異なり ます。
デフォルトの JRMP トランスポートの使用時は、RMIConnectorServer
コンストラクタの environment
の jmx.remote.rmi.client.socket.factory
および jmx.remote.rmi.server.socket.factory
属性を使って、RMI ソケットファクトリを指定できます。これらの属性の値は、それぞれ RMIClientSocketFactory
型または RMIServerSocketFactory
型でなければなりません。これらのファクトリは、コネクタに関連付けられた RMI オブジェクトを作成するとき使用されます。
通常、RMI コネクタクライアントの構築には、JMXConnectorFactory
と、プロトコル rmi
または iiop
を持つ JMXServiceURL
を使用します。
JMXServiceURL
がサーバで生成された場合 (上記の「サー
バによって生成されたコネクタアドレス」を参照)、クライアントは、この URL
を直接または間接的にサーバから取得する必要があります。通常、サーバは、JMXServiceURL
を使用可能にするため、この URL をファイルまたは検索サービスに格納します。
JMXServiceURL
がディレクトリ構文を使用する場合 (上記の「ディレクトリエントリに基づくコネクタアドレス」を参照)、これはクライアントに提供されます。また
は、クライアントとサーバの両方がどのディレクトリエントリを使用するべきかを認識しています。たとえば、Whatsit
エージェントのコネクタサーバは、ホスト myhost
上の RMI レジストリに格納されているエントリ whatsit-agent-connector
を使用するとします。この場合、クライアントとサーバの両方が下記のような適切な JMXServiceURL
を認識できます。
service:jmx:rmi:///jndi/rmi://myhost/whatsit-agent-connector
RMI スタブの型が RMIServer
である場合は、RMIConnector
の適切なコンストラクタを使って直接 RMI 接続を構築できます。
IIOP トランスポートを使用する場合、クライアントとサーバは、属性 java.naming.corba.orb
を使って、使用する ORB を指定できます。ORB との接続は、コネクタサーバの場合は start
実行時、コネクタクライアントの場合は connect
実行時に確立されます。java.naming.corba.orb
属性が環境 Map
に含まれる場合、IIOP スタブの接続にはこの属性値 (ORB
)
が使用されます。それ以外の場合、org.omg.CORBA.ORB.init((String[])null,(Properties)null)
が呼び出され、新しい
org.omg.CORBA.ORB が作成されます。この ORB は、同じ JVM 内の後続の RMI
コネクタクライアントまたはサーバで再利用できます。同じ手順で新しい ORB を作成することもできます。
指定された java.naming.corba.orb
属性が ORB
をポイントしていない場合、
がスローされます。IllegalArgumentException
IIOP リモートオブジェクト (スタブまたはサーバ) が手動で作成され、ORB に接続されたあと RMIConnector および RMIConnectorServer に渡される場合、ここで説明した機構は適用されません。
@see Java Naming and Directory InterfaceTM (JNDI)
@see RFC 2045, section 6.8, "Base64 Content-Transfer-Encoding"
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のパッケージ 次のパッケージ | フレームあり フレームなし |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。