|
Java Debug Interface | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object com.sun.jdi.connect.spi.TransportService
public abstract class TransportService
デバッガとターゲット VM 間の接続のためのトランスポートサービスです。
トランスポートサービスは、引数を取らないコンストラクタを持ち、下位で指定されている抽象メソッドを実装するこのクラスの具象サブクラスです。トランスポートサービスは、デバッガとターゲット VM 間の接続のための Transport
で使用される配下のサービスです。
トランスポートサービスは、デバッガとターゲット VM 間の接続を確立するためと、配下の通信プロトコル上で Java Debug Wire Protocol (JDWP) パケットを転送するために使用されます。基本的に、トランスポートサービスの実装は JDWP 仕様 で規定されている JDWP を配下の通信プロトコルに結合します。トランスポートサービスの実装は信頼性の高い JDWP パケットトランスポートサービスを提供します。JDWP パケットは、複製やデータ損失なしにターゲット VM で送受信されます。トランスポートサービスの実装は、配下の通信プロトコルの信頼性の有無に左右される可能性があります。配下の通信プロトコルの信頼性が高い場合、トランスポートサービスの実装は相対的に簡素になり、配下の通信プロトコルのペイロードとして JDWP パケットを転送する必要があるだけになります。信頼性のない通信プロトコルの場合、パケットが複製されないようにしたり、データ損失がないようにしたりするために、追加のプロトコルをトランスポートサービスの実装に含めることができます。このような追加のプロトコルの詳細は実装に固有ですが、Transmission Control Protocol (TCP) などのプロトコルで使用される再送式肯定確認応答技術といった技術が必要になる可能性があります (「RFC 793」 を参照)。
トランスポートサービスを使用して、ターゲット VM への接続を開始できます。接続は、attach(java.lang.String, long, long)
メソッドを呼び出して実行されます。または、トランスポートサービスはターゲット VM が開始した接続を待機して受け入れることができます。これは、startListening(String)
メソッドを呼び出して、転送を待機モードにして実現されます。つぎに、accept(com.sun.jdi.connect.spi.TransportService.ListenKey, long, long)
メソッドを使って、ターゲット VM により開始された接続を受け入れます。
入れ子のクラスの概要 | |
---|---|
static class |
TransportService.Capabilities
トランスポートサービスの機能です。 |
static class |
TransportService.ListenKey
待機キー。 |
コンストラクタの概要 | |
---|---|
TransportService()
|
メソッドの概要 | |
---|---|
abstract Connection |
accept(TransportService.ListenKey listenKey,
long acceptTimeout,
long handshakeTimeout)
ターゲット VM からの接続を受け入れます。 |
abstract Connection |
attach(String address,
long attachTimeout,
long handshakeTimeout)
指定されたアドレスに接続します。 |
abstract TransportService.Capabilities |
capabilities()
トランスポートサービスの機能を返します。 |
abstract String |
description()
トランスポートサービスの説明を返します。 |
abstract String |
name()
トランスポートサービスを識別するための名前を返します。 |
abstract TransportService.ListenKey |
startListening()
トランスポートサービスにより選択されたアドレス上で待機します。 |
abstract TransportService.ListenKey |
startListening(String address)
指定されたアドレス上で着信接続を待機します。 |
abstract void |
stopListening(TransportService.ListenKey listenKey)
着信接続の待機を停止します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public TransportService()
メソッドの詳細 |
---|
public abstract String name()
public abstract String description()
public abstract TransportService.Capabilities capabilities()
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 にゼロが指定されている場合は、タイムアウトなしで接続が行われるhandshakeTimeout
- このトランスポートサービスがハンドシェークタイムアウトをサポートする場合に、handshakeTimeout が正の場合は、ターゲット VM とのハンドシェーク時に使用するミリ秒単位のタイムアウトを指定する。タイムアウトの正確な使用法はトランスポートサービスに固有である。たとえば、あるトランスポートサービスでは、ターゲット VM からの JDWP-Handshake メッセージを待機している間の文字間タイムアウトとしてハンドシェークタイムアウトが使用される場合がある。または、あるトランスポートサービスでは、ハンドシェーク交換の期間のタイムアウトとして handshakeTimeout が使用される場合がある。トランスポートサービスがハンドシェークタイムアウトをサポートしない場合、または handshakeTimeout が 0 に指定されている場合は、ターゲット VM からの応答がなくても、ハンドシェーク時にタイムアウトは使用されない
TransportTimeoutException
- 接続の確立中にタイムアウトが発生した場合
IOException
- I/O エラーが発生した場合 (ハンドシェーク時のタイムアウトを含む)
IllegalArgumentException
- アドレスが無効な場合、または接続タイムアウトの値またはハンドシェークタイムアウトの値が負の場合TransportService.Capabilities.supportsAttachTimeout()
public abstract TransportService.ListenKey startListening(String address) throws IOException
このメソッドは、指定されたアドレス上でトランスポートサービスの待機を開始します。これにより、トランスポートサービスは、そのあとの着信接続を受け入れることができます。トランスポートサービスは、着信接続が確立されるまで待ちません。
address
- 接続の待機を開始するアドレス。トランスポートサービスにより選択されたアドレス上で待機する場合は null
accept
メソッドまたは stopListening
メソッドへの以降の呼び出しで使用される待機キー
IOException
- I/O エラーが発生した場合
IllegalArgumentException
- 特定のアドレスが無効な場合public abstract TransportService.ListenKey startListening() throws IOException
この簡易メソッドは、startListening(null)
を呼び出した場合と同様に機能します。
accept
メソッドまたは stopListening
メソッドへの以降の呼び出しで使用される待機キー
IOException
- I/O エラーが発生した場合public abstract void stopListening(TransportService.ListenKey listenKey) throws IOException
別のスレッドが accept
でブロックされ同じ待機キーで接続の受け入れを待っているときに、このメソッドを呼び出すとスレッドが IOException をスローする原因になります。accept でブロックされたスレッドが、ターゲット VM からの接続をすでに受け入れており、ターゲット VM とのハンドシェークのプロセスである場合にこのメソッドを呼び出しても、スレッドが例外をスローすることはありません。
listenKey
- startListening(String)
または startListening()
への前回の呼び出しから取得された待機キー
IllegalArgumentException
- 待機キーが無効な場合
IOException
- I/O エラーが発生した場合public abstract Connection accept(TransportService.ListenKey listenKey, long acceptTimeout, long handshakeTimeout) throws IOException
ターゲット VM からの接続の受け入れを無制限にまたはタイムアウト付きで待ちます。ターゲット VM への双方向通信チャネルを表す接続を返します。
ターゲット VM からの接続の受け入れには、2 つの手順が必要です。まず、トランスポートサービスはターゲット VM からの接続の受け入れを待ちます。接続が確立されると、ハンドシェークが行われ、接続が間違いなくターゲット VM に対する接続であることが保証されます。ハンドシェークでは、Java Debug Wire Protocol 仕様で規定されている JDWP-Handshake 文字列を交換する必要があります。
listenKey
- startListening(String)
または startListening()
への前回の呼び出しから取得された待機キーacceptTimeout
- このトランスポートサービスが受け入れタイムアウトをサポートしている場合に、acceptTimeout が正の場合は、ターゲット VM の接続を待つ間、最大約 acceptTimeout ミリ秒の間ブロックされる。トランスポートサービスが受け入れタイムアウトをサポートしていない場合、または acceptTimeout に 0 が指定されている場合は、ターゲット VM の接続は無期限の間ブロックされるhandshakeTimeout
- このトランスポートサービスはハンドシェークタイムアウトをサポートする場合に、handshakeTimeout が正の場合は、ターゲット VM とのハンドシェーク時に使用する約ミリ秒単位のタイムアウトを指定する。タイムアウトの正確な使用法はトランスポートサービスに固有である。たとえば、あるトランスポートサービスでは、ターゲット VM からの JDWP-Handshake メッセージを待つ間の文字間タイムアウトとしてハンドシェークタイムアウトが使用される場合がある。または、あるトランスポートサービスでは、ハンドシェーク交換の期間のタイムアウトとして handshakeTimeout が使用される場合がある。トランスポートサービスがハンドシェークタイムアウトをサポートしない場合、または handshakeTimeout が 0 に指定されている場合は、ターゲット VM からの応答がなくても、ハンドシェーク時にタイムアウトは使用されない
TransportTimeoutException
- ターゲット VM の接続を待つ間にタイムアウトが発生した場合
IOException
- I/O エラーが発生した場合 (ハンドシェーク時のタイムアウトを含む)
IllegalArgumentException
- acceptTimeout 引数の値または handshakeTimeout の値が負の場合、あるいは無効な待機キーが提供された場合
IllegalStateException
- stopListening
がすでにこの待機キーを使って呼び出されていて、トランスポートサービスがもはや着信接続を待機していない場合TransportService.Capabilities.supportsAcceptTimeout()
|
Java Debug Interface | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |