モジュール jdk.attach
パッケージ com.sun.tools.attach.spi

クラスAttachProvider

java.lang.Object
com.sun.tools.attach.spi.AttachProvider

public abstract class AttachProvider extends Object
Java仮想マシンに接続するための接続プロバイダ・クラスです。

接続プロバイダは、ゼロ引数コンストラクタを持ち、次の抽象メソッドを実装する、このクラスの具象サブクラスです。

接続プロバイダの実装は、通常、Java仮想マシンの実装、バージョン、または操作のモードにも関係しています。 つまり、特定のプロバイダ実装は、通常、特定のJava仮想マシンの実装またはバージョンにしか接続できません。 たとえば、Oracle JDK実装には、Oracle HotSpot仮想マシンにのみアタッチできるプロバイダ実装が同梱されています。 通常、さまざまなバージョンのさまざまなベンダー製のJava仮想マシンで環境が構成される場合は、実装またはバージョンのファミリごとに接続プロバイダ実装が存在します。

接続プロバイダは、そのnametypeによって識別されます。 名前は、通常はVMベンダーに対応する名前ですが、必ずしもそうである必要はありません。 たとえば、Oracle JDKの実装には、パッケージ名"日" (履歴上の理由)を使用するアタッチ・プロバイダが同梱されています。 タイプは、通常は接続メカニズムに対応します。 たとえば、Doorsプロセス間通信メカニズムを使用する実装は、「doors」というタイプを使用する場合があります。 名前とタイプの目的は、複数のプロバイダがインストールされている環境でプロバイダを識別することです。

AttachProvider実装は、providersメソッドの最初の呼出し時にロードされ、そのインスタンスが生成されます。 このメソッドは、プラットフォーム上にインストールされているすべてのプロバイダ実装をロードしようとします。

このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。

導入されたバージョン:
1.6
  • コンストラクタの詳細

    • 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 - idnullである場合
    • attachVirtualMachine

      Java仮想マシンに接続します。

      Java仮想マシンは、VirtualMachineDescriptorを使用して記述できます。 このメソッドは、記述子のprovider()メソッドを呼び出して、このプロバイダと等しいかどうかをチェックします。 そのあと、Java仮想マシンへの接続を試みます。

      パラメータ:
      vmd - 仮想マシン記述子
      戻り値:
      ターゲット仮想マシンを表すVirtualMachine。
      例外:
      SecurityException - セキュリティ・マネージャがインストールされていて、AttachPermission ("attachVirtualMachine")、または実装で必要とされる他の許可が拒否された場合。
      AttachNotSupportedException - 記述子のprovider()メソッドがこのプロバイダではないプロバイダを返す場合、またはこのプロバイダで接続できるJava仮想マシンに対応しない場合。
      IOException - その他の入出力エラーが発生した場合
      NullPointerException - vmdnullである場合
    • listVirtualMachines

      public abstract List<VirtualMachineDescriptor> listVirtualMachines()
      このプロバイダで認識されているJava仮想マシンのリストを表示します。

      このメソッドは、VirtualMachineDescriptor要素のリストを返します。 VirtualMachineDescriptorは、このプロバイダが接続できる可能性がある Java仮想マシンを表します。 リスト内の各記述子のattachVirtualMachineの呼出しが成功するという保証はありません。

      戻り値:
      このプロバイダで認識されているJava仮想マシンを記述する、仮想マシン記述子のリスト。空の場合もある
    • プロバイダ

      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実装は、このメソッドの最初の呼出し時にロードされ、引数なしのコンストラクタを使用してインスタンスが生成されます。 このメソッドの最初の呼出しによって返されるリストは、プロバイダのリストです。 このメソッドの後続呼出し時には、その同じプロバイダのリストが返されます。 リストは変更不可能です。

      戻り値:
      インストールされている接続プロバイダのリスト。