public abstract class AttachProvider extends Object
接続プロバイダは、ゼロ引数コンストラクタを持ち、次の抽象メソッドを実装する、このクラスの具象サブクラスです。
接続プロバイダの実装は、通常、Java 仮想マシンの実装、バージョン、または操作のモードにも関係しています。つまり、特定のプロバイダ実装は、通常、特定の Java 仮想マシンの実装またはバージョンにしか接続できません。たとえば、Sun の JDK 実装は、Sun の HotSpot 仮想マシンのみに接続できるプロバイダ実装とともに出荷されています。通常、さまざまなバージョンのさまざまなベンダー製の Java 仮想マシンで環境が構成される場合は、実装またはバージョンのファミリごとに接続プロバイダ実装が存在します。
接続プロバイダは、その name
と type
によって識別されます。名前は、通常は VM ベンダーに対応する名前ですが、必ずしもそうである必要はありません。たとえば、Sun JDK 実装は、「sun」という名前を使用する接続プロバイダとともに出荷されます。タイプは、通常は接続メカニズムに対応します。たとえば、Doors プロセス間通信メカニズムを使用する実装は、「doors」というタイプを使用する場合があります。名前とタイプの目的は、複数のプロバイダがインストールされている環境でプロバイダを識別することです。
AttachProvider 実装は、providers
メソッドの最初の呼び出し時にロードされ、そのインスタンスが生成されます。このメソッドは、プラットフォーム上にインストールされているすべてのプロバイダ実装をロードしようとします。
このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
AttachProvider()
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract VirtualMachine |
attachVirtualMachine(String id)
Java 仮想マシンに接続します。
|
VirtualMachine |
attachVirtualMachine(VirtualMachineDescriptor vmd)
Java 仮想マシンに接続します。
|
abstract List<VirtualMachineDescriptor> |
listVirtualMachines()
このプロバイダで認識されている Java 仮想マシンのリストを表示します。
|
abstract String |
name()
このプロバイダの名前を返します。
|
static List<AttachProvider> |
providers()
インストールされている接続プロバイダのリストを返します。
|
abstract String |
type()
このプロバイダのタイプを返します。
|
protected AttachProvider()
SecurityException
- セキュリティーマネージャーがインストールされていて、そのマネージャーが AttachPermission
(「createAttachProvider」) を拒否した場合public abstract String name()
public abstract String type()
public abstract VirtualMachine attachVirtualMachine(String id) throws AttachNotSupportedException, IOException
Java 仮想マシンは抽象識別子によって識別されます。この識別子の特性はプラットフォームによって異なりますが、多くの場合、プロセス識別子 (pid) の文字列表現になります。
このメソッドは、識別子を解析し、その識別子を Java 仮想マシンにマッピングします。方法は実装によって異なります。プロバイダが識別子を解析できない場合は、AttachNotSupportedException
がスローされます。解析後、このメソッドが Java 仮想マシンへの接続を試みます。プロバイダが、存在しない Java 仮想マシンに対する識別子であること、またはこのプロバイダによって実装された接続メカニズムをサポートしない Java 仮想マシンに対する識別子であることを検出した場合、あるいは、Java 仮想マシンがこのプロバイダでは接続できないバージョンであることを検出した場合は、AttachNotSupportedException
がスローされます。
id
- Java 仮想マシンを識別する抽象識別子。SecurityException
- セキュリティーマネージャーがインストールされていて、そのマネージャーが AttachPermission
("attachVirtualMachine")、または実装に必要なその他のアクセス権を拒否した場合。AttachNotSupportedException
- 識別子を解析できない場合、または存在しない Java 仮想マシンに対する識別子である場合、またはそのプロバイダでは接続できない Java 仮想マシンに対する識別子である場合。IOException
- その他の入出力エラーが発生した場合NullPointerException
- id
が null
である場合public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) throws AttachNotSupportedException, IOException
Java 仮想マシンは、VirtualMachineDescriptor
を使用して記述できます。このメソッドは、記述子の provider()
メソッドを呼び出して、このプロバイダと等しいかどうかをチェックします。そのあと、Java 仮想マシンへの接続を試みます。
vmd
- 仮想マシン記述子SecurityException
- セキュリティーマネージャーがインストールされていて、そのマネージャーが AttachPermission
("attachVirtualMachine")、または実装に必要なその他のアクセス権を拒否した場合。AttachNotSupportedException
- 記述子の provider()
メソッドがこのプロバイダではないプロバイダを返す場合、またはこのプロバイダで接続できる Java 仮想マシンに対応しない場合。IOException
- その他の入出力エラーが発生した場合NullPointerException
- vmd
が null
である場合public abstract List<VirtualMachineDescriptor> listVirtualMachines()
このメソッドは、Java VirtualMachineDescriptor
要素のリストを返します。各 VirtualMachineDescriptor
は、このプロバイダが接続できる可能性がある Java 仮想マシンを表します。リスト内の各記述子の attachVirtualMachine
の呼び出しが成功するという保証はありません。
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 実装は、このメソッドの最初の呼び出し時にロードされ、引数なしのコンストラクタを使用してインスタンスが生成されます。このメソッドの最初の呼び出しによって返されるリストは、プロバイダのリストです。このメソッドの後続呼び出し時には、その同じプロバイダのリストが返されます。このリストは変更不可能です。
Copyright © 2005, 2013, Oracle and/or its affiliates. All rights reserved.