接続プロバイダは、ゼロ引数コンストラクタを持ち、次の抽象メソッドを実装する、このクラスの具象サブクラスです。
接続プロバイダの実装は、通常、Java仮想マシンの実装、バージョン、または操作のモードにも関係しています。 つまり、特定のプロバイダ実装は、通常、特定のJava仮想マシンの実装またはバージョンにしか接続できません。 たとえば、Oracle JDK実装には、Oracle HotSpot仮想マシンにのみアタッチできるプロバイダ実装が同梱されています。 通常、さまざまなバージョンのさまざまなベンダー製のJava仮想マシンで環境が構成される場合は、実装またはバージョンのファミリごとに接続プロバイダ実装が存在します。
接続プロバイダは、そのname
とtype
によって識別されます。 名前は、通常はVMベンダーに対応する名前ですが、必ずしもそうである必要はありません。 たとえば、Oracle JDKの実装には、パッケージ名"日" (履歴上の理由)を使用するアタッチ・プロバイダが同梱されています。 タイプは、通常は接続メカニズムに対応します。 たとえば、Doorsプロセス間通信メカニズムを使用する実装は、「doors」というタイプを使用する場合があります。 名前とタイプの目的は、複数のプロバイダがインストールされている環境でプロバイダを識別することです。
AttachProvider実装は、providers
メソッドの最初の呼出し時にロードされ、そのインスタンスが生成されます。 このメソッドは、プラットフォーム上にインストールされているすべてのプロバイダ実装をロードしようとします。
このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。
- 導入されたバージョン:
- 1.6
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明Java仮想マシンに接続します。abstract VirtualMachine
Java仮想マシンに接続します。abstract List<VirtualMachineDescriptor>
このプロバイダで認識されているJava仮想マシンのリストを表示します。abstract String
name()
このプロバイダの名前を返します。static List<AttachProvider>
インストールされている接続プロバイダのリストを返します。abstract String
type()
このプロバイダのタイプを返します。
-
コンストラクタの詳細
-
AttachProvider
protected AttachProvider()このクラスの新しいインスタンスを初期化します。- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、AttachPermission
("createAttachProvider
")を拒否した場合
-
-
メソッドの詳細
-
name
public abstract String name()このプロバイダの名前を返します。- 戻り値:
- このプロバイダの名前
-
type
public abstract String type()このプロバイダのタイプを返します。- 戻り値:
- このプロバイダのタイプ
-
attachVirtualMachine
public abstract VirtualMachine attachVirtualMachine(String id) throws AttachNotSupportedException, IOException Java仮想マシンに接続します。Java仮想マシンは抽象識別子によって識別されます。 この識別子の特性はプラットフォームによって異なりますが、多くの場合、プロセス識別子(pid)の文字列表現になります。
このメソッドは、識別子を解析し、その識別子をJava仮想マシンにマッピングします。方法は実装によって異なります。 プロバイダが識別子を解析できない場合は、
AttachNotSupportedException
がスローされます。 解析後、このメソッドがJava仮想マシンへの接続を試みます。 プロバイダが、存在しないJava仮想マシンに対する識別子であること、またはこのプロバイダによって実装された接続メカニズムをサポートしないJava仮想マシンに対する識別子であることを検出した場合、あるいは、Java仮想マシンがこのプロバイダでは接続できないバージョンであることを検出した場合は、AttachNotSupportedException
がスローされます。- パラメータ:
id
- Java仮想マシンを識別する抽象識別子。- 戻り値:
- ターゲット仮想マシンを表すVirtualMachine。
- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、AttachPermission
("attachVirtualMachine
")、または実装で必要とされる他の許可が拒否された場合。AttachNotSupportedException
- 識別子を解析できない場合、または存在しないJava仮想マシンに対する識別子である場合、またはそのプロバイダでは接続できないJava仮想マシンに対する識別子である場合。IOException
- その他の入出力エラーが発生した場合NullPointerException
-id
がnull
である場合
-
attachVirtualMachine
public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) throws AttachNotSupportedException, IOException Java仮想マシンに接続します。Java仮想マシンは、
VirtualMachineDescriptor
を使用して記述できます。 このメソッドは、記述子のprovider()
メソッドを呼び出して、このプロバイダと等しいかどうかをチェックします。 そのあと、Java仮想マシンへの接続を試みます。- パラメータ:
vmd
- 仮想マシン記述子- 戻り値:
- ターゲット仮想マシンを表すVirtualMachine。
- 例外:
SecurityException
- セキュリティ・マネージャがインストールされていて、AttachPermission
("attachVirtualMachine
")、または実装で必要とされる他の許可が拒否された場合。AttachNotSupportedException
- 記述子のprovider()
メソッドがこのプロバイダではないプロバイダを返す場合、またはこのプロバイダで接続できるJava仮想マシンに対応しない場合。IOException
- その他の入出力エラーが発生した場合NullPointerException
-vmd
がnull
である場合
-
listVirtualMachines
public abstract List<VirtualMachineDescriptor> listVirtualMachines()このプロバイダで認識されているJava仮想マシンのリストを表示します。このメソッドは、
VirtualMachineDescriptor
要素のリストを返します。 各VirtualMachineDescriptor
は、このプロバイダが接続できる可能性がある Java仮想マシンを表します。 リスト内の各記述子のattachVirtualMachine
の呼出しが成功するという保証はありません。- 戻り値:
- このプロバイダで認識されているJava仮想マシンを記述する、仮想マシン記述子のリスト。空の場合もある
-
providers
public static List<AttachProvider> providers()インストールされている接続プロバイダのリストを返します。AttachProviderは、次のような場合はプラットフォームにインストールされています。
- AttachProviderタイプの定義に用いるクラス・ローダー(通常は
system class loader
だが、これである必要はない)で表示するJARファイルにインストールされている場合。 - JARファイルのリソース・ディレクトリ
META-INF/services
内にcom.sun.tools.attach.spi.AttachProvider
というプロバイダ構成が含まれている場合。 - プロバイダ構成ファイルに、AttachProvider実装の完全指定クラス名のリストがある場合。
プロバイダ構成ファイルの形式は、行ごとに1つの完全指定クラス名が示された形式です。 各クラス名を囲む空白文字とタブ文字ばかりでなく空白行も無視されます。 コメント文字は
「#」
(0x23
)です。各行では、最初のコメント文字以降の文字はすべて無視されます。 ファイルはUTF-8で符号化されている必要があります。AttachProvider実装は、このメソッドの最初の呼出し時にロードされ、引数なしのコンストラクタを使用してインスタンスが生成されます。 このメソッドの最初の呼出しによって返されるリストは、プロバイダのリストです。 このメソッドの後続呼出し時には、その同じプロバイダのリストが返されます。 リストは変更不可能です。
- 戻り値:
- インストールされている接続プロバイダのリスト。
- AttachProviderタイプの定義に用いるクラス・ローダー(通常は
-