クラスTransportService

java.lang.Object
com.sun.jdi.connect.spi.TransportService

public abstract class TransportService extends Object
デバッガとターゲットVM間の接続のためのトランスポート・サービスです。

トランスポート・サービスは、引数を取らないコンストラクタを持ち、その下で指定されている抽象メソッドを実装するこのクラスの、具象サブクラスです。 トランスポート・サービスは、デバッガとターゲットVM間の接続のため、Transportで使用される基になるサービスです。

トランスポート・サービスは、デバッガとターゲットVM間の接続を確立するためと、基になる通信プロトコルでJava Debug Wire Protocol (JDWP)パケットを転送するために使用されます。 基本的に、トランスポート・サービスの実装はJDWP仕様で規定されているJDWPを基になる通信プロトコルにバインドします。 トランスポート・サービスの実装は信頼性の高いJDWPパケット・トランスポート・サービスを提供します。 JDWPパケットは、複製やデータ損失なしにターゲットVMに対して送受信されます。 トランスポート・サービスの実装は、基になる通信プロトコルの信頼性の有無に左右される可能性があります。 基になる通信プロトコルの信頼性が高い場合、トランスポート・サービスの実装は比較的簡素になり、基になる通信プロトコルのペイロードとしてJDWPパケットを転送する必要があるだけになります。 信頼性のない通信プロトコルの場合、パケットが複製されないようにしたり、データ損失がないようにしたりするために、追加のプロトコル・サポートをトランスポート・サービス実装に含めることができます。 このような追加のプロトコルの詳細は実装に固有ですが、Transmission Control Protocol (TCP)などのプロトコルで使用される再送式肯定確認応答技術といった技術が必要になる可能性があります(「RFC 793」を参照)。

トランスポート・サービスを使用して、ターゲットVMへの接続を開始できます。 これを行うには、attach(String, long, long)メソッドを呼び出します。 または、トランスポート・サービスはターゲットVMが開始した接続を待機して受け入れることができます。 これは、startListening(String)メソッドを呼び出してトランスポートを待機モードにすることで実行されます。 次に、accept(TransportService.ListenKey, long, long)メソッドを使用して、ターゲットVMによって開始された接続を受け入れます。

導入されたバージョン:
1.5
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static class 
    トランスポート・サービス機能です。
    static class 
    待機キーです。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    サブクラスが呼び出すためのコンストラクタ。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract Connection
    accept(TransportService.ListenKey listenKey, long acceptTimeout, long handshakeTimeout)
    ターゲットVMからの接続を受け入れます。
    abstract Connection
    attach(String address, long attachTimeout, long handshakeTimeout)
    指定されたアドレスに接続します。
    トランスポート・サービスの機能を返します。
    abstract String
    トランスポート・サービスの説明を返します。
    abstract String
    トランスポート・サービスを識別するための名前を返します。
    トランスポート・サービスにより選択されたアドレス上で待機します。
    指定されたアドレス上で着信接続を待機します。
    abstract void
    着信接続の待機を停止します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • TransportService

      public TransportService()
      サブクラスが呼び出すためのコンストラクタ。
  • メソッドの詳細

    • name

      public abstract String name()
      トランスポート・サービスを識別するための名前を返します。
      戻り値:
      トランスポート・サービスの名前
    • description

      public abstract String description()
      トランスポート・サービスの説明を返します。
      戻り値:
      トランスポート・サービスの説明
    • capabilities

      public abstract TransportService.Capabilities capabilities()
      トランスポート・サービスの機能を返します。
      戻り値:
      トランスポート・サービスの機能
    • attach

      public abstract Connection attach(String address, long attachTimeout, long handshakeTimeout) throws IOException
      指定されたアドレスに接続します。

      指定されたアドレスに接続し、ターゲットVMへの双方向通信チャネルを表す接続を返します。

      ターゲットVMへの接続には、2つのステップが必要です。最初に、指定されたアドレスへの接続が確立されます。 その後に、ハンドシェークにより接続がターゲットVMへの接続であることを保証します。 ハンドシェークでは、Java Debug Wire Protocolの仕様に規定されているように、JDWP-Handshake文字列の交換を行います。

      パラメータ:
      address - ターゲットVMのアドレス。
      attachTimeout - このトランスポート・サービスがアタッチ・タイムアウトをサポートしており、attachTimeoutが正の場合、ターゲットVMに接続するときに使用するタイムアウトをミリ秒(多少)で指定します。 トランスポート・サービスが接続タイムアウトをサポートしない場合、またはattachTimeoutが0として指定されている場合は、タイムアウトなしで接続します。
      handshakeTimeout - このトランスポート・サービスがハンドシェイク・タイムアウトをサポートしており、handshakeTimeoutが正の場合、ターゲットVMとのハンドシェイク時に使用するタイムアウトをミリ秒(多少)で指定します。 タイム・アウトの厳密な使用法はトランスポート・サービスごとに異なる。 たとえば、ハンドシェーク・タイムアウトをターゲットVMからのJDWP-Handshakeメッセージを待っている間の文字間タイム・アウトとして使用するトランスポート・サービスもある。 handshakeTimeoutをハンドシェーク交換期間のタイム・アウトとして使用するトランスポート・サービスもある。 トランスポート・サービスがハンドシェイク・タイムアウトをサポートしていない場合、またはhandshakeTimeoutがゼロとして指定されている場合、ターゲットVMからのレスポンスがない場合、ハンドシェークはタイムアウトしません。
      戻り値:
      ターゲットVMへの双方向通信チャネルを表すConnection。
      スロー:
      TransportTimeoutException - 接続確立時にタイム・アウトが発生した場合。
      IOException - 入出力エラー(ハンドシェーク時のタイム・アウトも含む)が発生した場合。
      IllegalArgumentException - アドレスが無効な場合、あるいは接続タイム・アウトまたはハンドシェーク・タイムアウトの値が負の場合。
      関連項目:
    • startListening

      public abstract TransportService.ListenKey startListening(String address) throws IOException
      指定されたアドレス上で着信接続を待機します。

      このメソッドは、指定されたアドレス上でトランスポート・サービスの待機を開始します(そのあとで着信接続を受け入れることができます)。 着信接続が確立されるまでは待機しません。

      パラメータ:
      address - 接続のリスニングを開始するアドレス、またはトランスポート・サービスによって選択されたアドレスでリスニングするnull
      戻り値:
      以降のacceptメソッドまたはstopListeningメソッドの呼出しで使用される待機キー。
      スロー:
      IOException - 入出力エラーが発生した場合。
      IllegalArgumentException - 指定されたアドレスが無効な場合
    • startListening

      public abstract TransportService.ListenKey startListening() throws IOException
      トランスポート・サービスにより選択されたアドレス上で待機します。

      この簡易メソッドは、startListening(null)を呼び出す場合と同じように機能します。

      戻り値:
      以降のacceptメソッドまたはstopListeningメソッドの呼出しで使用される待機キー。
      スロー:
      IOException - 入出力エラーが発生した場合。
    • stopListening

      public abstract void stopListening(TransportService.ListenKey listenKey) throws IOException
      着信接続の待機を停止します。

      別のスレッドがacceptでブロックされている間にこのメソッドを呼び出し、同じ待機キーで接続の受け入れを待機すると、スレッドはIOExceptionをスローします。 acceptでブロックされたスレッドが、ターゲットVMからの接続をすでに受け入れていて、ターゲットVMとのハンドシェーク中である場合は、このメソッドを呼び出してもスレッドが例外をスローすることはありません。

      パラメータ:
      listenKey - 直前のstartListening(String)またはstartListening()呼び出しから取得された待機キー。
      スロー:
      IllegalArgumentException - 待機キーが無効な場合
      IOException - 入出力エラーが発生した場合。
    • accept

      public abstract Connection accept(TransportService.ListenKey listenKey, long acceptTimeout, long handshakeTimeout) throws IOException
      ターゲットVMからの接続を受け入れます。

      ターゲットVMからの接続を受け入れるために待機します(無制限またはタイム・アウトで)。 ターゲットVMへの双方向通信チャネルを表す接続を返します。

      ターゲットVMからの接続の受け入れには、2つのステップが必要です。 まず、トランスポート・サービスはターゲットVMからの接続の受け入れを待機します。 接続が確立されると、接続が間違いなくターゲットVMに対する接続であることを保証するためのハンドシェークが行われます。 ハンドシェークでは、Java Debug Wire Protocolの仕様に規定されているように、JDWP-Handshake文字列の交換を行います。

      パラメータ:
      listenKey - 直前のstartListening(String)またはstartListening()呼び出しから取得された待機キー。
      acceptTimeout - このトランスポート・サービスが受入れタイムアウトをサポートし、acceptTimeoutが正の場合、ターゲットVMの接続を待機している間、最大acceptTimeoutミリ秒以下でブロックします。 トランスポート・サービスが受入れタイムアウトをサポートしない場合、またはacceptTimeoutがゼロの場合、ターゲットVMが接続するために無期限にブロックします。
      handshakeTimeout - このトランスポート・サービスがハンドシェイク・タイムアウトをサポートしており、handshakeTimeoutが正の場合、ターゲットVMとのハンドシェイク時に使用するタイムアウトをミリ秒(多少)で指定します。 タイム・アウトの厳密な使用法はトランスポート・サービスごとに異なる。 たとえば、ハンドシェーク・タイムアウトをターゲットVMからのJDWP-Handshakeメッセージを待っている間の文字間タイム・アウトとして使用するトランスポート・サービスもある。 また、このタイム・アウトをハンドシェーク交換期間のタイム・アウトとして使用するトランスポート・サービスもある。 トランスポート・サービスがハンドシェイク・タイムアウトをサポートしていない場合、handshakeTimeoutがゼロとして指定されている場合、ターゲットVMからのレスポンスがない場合、ハンドシェークはタイムアウトしません。
      戻り値:
      ターゲットVMへの双方向通信チャネルを表すConnection。
      スロー:
      TransportTimeoutException - ターゲットVMの接続を待つ間にタイム・アウトが発生した場合。
      IOException - 入出力エラー(ハンドシェーク時のタイム・アウトも含む)が発生した場合。
      IllegalArgumentException - acceptTimeout引数の値またはhandshakeTimeoutの値が負の場合、あるいは無効な待機キーが提供された場合。
      IllegalStateException - stopListeningがこの待機キーを使ってすでに呼び出されていて、トランスポート・サービスがもう着信接続を待機していない場合。
      関連項目: