このセクションでは、ホスト・アクセス・クラス・ライブラリー (HACL) アプレットおよびアプリケーションのデバッグ用ツールと、その使用法について説明します。
HACL は、トレース・イベントを起動するトレース・メカニズムを、適切なインターフェースを実装する任意のトレース機能に一体化します。 HACL ユーザーは、トレース・イベントを独自のトレース機能へ送るか、ホスト・アクセスに付属する、ウィンドウ化された使いやすいインターフェースのトレース機能 (RASTrace を参照) を使用して、トレース・イベントを使用可能 / 使用不可にしたり、フォーマットしたりすることができます。このトレース機能は、hatrace.jar にあります。
独自のトレース機能を使用する HACL ユーザーは、 ECLTraceListener インターフェースを実装するクラスを指定しなければなりません。このインターフェースには、パラメーターとして ECLTraceEvent を受け取る 1 つのメソッドが含まれています。トレース・リスナーは静的な ECLTrace クラスへ渡されます。トレース・リスナーを ECLTrace クラスへ追加するには、 2 つのメソッドが使用されます。トレース・リスナーを追加すると、トレースを使用する各 HACL コンポーネントから、 ECLTraceEvent.REGISTER タイプのトレース・イベントをすぐに受け取ります。
さまざまな HACL コンポーネントのトレース・レベルは、 ECLTrace クラスの SetTraceLevel() メソッドによって制御されます。コンポーネント名および必要なトレース・レベルが、このメソッドのパラメーターになっています。各コンポーネントのデフォルトのトレース・レベルは 0 です。これは、SetTraceLevel() を呼び出して使用可能にするまでは、このトレースは使用不可ということです。特定のコンポーネントに対してトレースを使用可能にすると、すべてのセッション上でそのコンポーネントに対するトレースが使用可能になります。
トレース機能は、レベル 1 〜 3 の異なるトレース・レベルをサポートしています。各トレース・レベルは、直前のトレース・レベルに追加されます。作成されるトレース情報は、レベル 1 で最も少なく、レベル 3 で最も多くなります。トレース・レベル 1 では、メソッド・パラメーターと戻り値も含めて、メソッド入り口とメソッド出口のトレース情報が生成されます。トレース・レベル 2 では、トレース・レベル 1 のすべての情報と、いくつかの追加情報が生成されます。トレース・レベル 3 では、トレース・レベル 2 のすべての情報と、多くの追加情報が生成されますが、その情報はトランスポート層を介してホストとの間でやりとりされるバイトに至るまで生成されます。
以下のサンプルでは、ECLSession を構成する方法、 ECLPS および DataStream コンポーネントのトレースを使用可能にする方法について説明します。別の例については、toolkit\hacl\samples\TraceDemo にあるトレースの例を参照してください。
import com.ibm.eNetwork.HOD.trace.RASTrace; import com.ibm.eNetwork.ECL.trace.ECLTrace; import com.ibm.eNetwork.ECL.*; try { // Use the default HACL trace facility RASTrace myTraceListener = new RASTrace(); myTraceListener.setVisible(true); // Display the trace GUI myTraceListener.setEnabled(true); // Start logging trace events // Receive trace events from all sessions ECLTrace.RegisterTraceEvent(myTraceListener); // Enable PS and DataStream for minimum tracing ECLTrace.SetTraceLevel(ECLTrace.SESSION_TRACE_PS, ECLTrace.TRACE_MINIMUM); ECLTrace.SetTraceLevel(ECLTrace.SESSION_TRACE_DS, ECLTrace.TRACE_MINIMUM); Properties p = new Properties(); p.put(ECLSession.SESSION_HOST, new String("myHost")); ECLSession s = new ECLSession(p);} catch (PropertyVetoException pve) {} catch (ECLErr e) {}
ECLTrace には、トレース可能なコンポーネントで使用する以下の定数があります。これらの定数は、SetTraceLevel() メソッドへのパラメーターとして使用されます。
定数 |
トレースされるコンポーネント |
---|---|
SESSION_TRACE_SESSION | ECLSession |
SESSION_TRACE_PS | ECLPS |
SESSION_TRACE_FIELDLIST | ECLFieldList |
SESSION_TRACE_FIELD | ECLField |
SESSION_TRACE_OIA | ECLOIA |
SESSION_TRACE_ERR | ECLErr |
SESSION_TRACE_XFER | ECLXfer |
SESSION_TRACE_OIA_EVENT | ECLOIAEvent |
SESSION_TRACE_PS_EVENT | ECLPSEvent |
SESSION_TRACE_COMM_EVENT | ECLCommEvent |
SESSION_TRACE_SD | ECLScreenDesc |
SESSION_TRACE_SCRN_RECO | ECLScreenReco |
SESSION_TRACE_PRINTER | プリンター |
SESSION_TRACE_DS | データ・ストリーム |
SESSION_TRACE_TRANSPORT | トランスポート |
注: 以前のバージョンの HACL では、特定のコンポーネントに対してトレース・レベルを設定すると、必ずトレース GUI が表示されていました。今回のバージョンでは、RASTrace オブジェクトで Visible(true) を設定しないかぎり、デフォルトのトレース GUI は表示されません。 さらに、以前のバージョンでは、HACL コンポーネントのトレースの制御は、 ECLSession.SESSION_TRACE プロパティー・キーを使用してストリングを渡し、特定のコンポーネントを使用可能にすることにより、行われていました。たとえば、次のとおりです。 Properties p = new Properties(); p.put(ECLSession.SESSION_TRACE, ECLTrace.SESSION_TRACE_PS + " " + ECLTrace.SESSION_TRACE_DS); この方法を使用して各コンポーネントの TraceLevel を設定することも可能ですが、 ECLTrace で SetTraceLevel() メソッドを使用する新しい方法をお勧めします。この古い方法は使用しないでください。 |
HACL には、ECLSession コンストラクターに特定のパラメーターを渡すことによって、または ECLSession.ShowPSDebugger() メソッドを使用することによって、プログラムに基づいてアクティブになる表示スペース・デバッガーが組み込まれています。表示スペース・デバッガーはウィンドウ化されたインターフェースを備えています。これにより、完全な表示スペースを構成するさまざまなプレーンを見ることができます。表示スペース・デバッガーでは、 テキスト、フィールド、 カラー、拡張フィールド、 DBCS、およびグリッドの各プレーンを表示できます。
表示スペース・デバッガーでは、表示スペースとの対話を行うことはできません。
以下のサンプルでは、ECLSession を構成して、表示スペース・デバッガーをアクティブにする方法を説明します。
Properties p = new Properties(); p.put(ECLSession.SESSION_HOST, new String("myHost")); p.put(ECLSession.SESSION_PS_DEBUGGER, ""); ECLSession s = new ECLSession(p);
HACL アプレットは、 Host On-Demand の「アプレットの実行」機能を使用したり、パーソナル・コミュニケーションズの「Java アプレットの実行」機能を使用して、デバッグすることもできます。この環境でユーザー・アプレットをデバッグすると、表示スペース・デバッガーを使用したときと比べて、いくつかの利点があります。 まず、エミュレーター画面は対話式となっており、これを使用することによって、アプレットの開発者がアプレットの問題の解決策を見つける間、アプレットのナビゲート問題に関する画面を表示することができます。この環境には、ホストとの接続およびホストの状態についてのカーソル位置と状況に関する情報など、重要な情報を含むオペレーター情報域 (OIA) も含まれます。
「アプレットの実行」または「Java アプレットの実行」機能を使用すると、表示スペース・デバッガーを使用した場合に比べて、パフォーマンスが低下します。 全機能エミュレーターのオーバーヘッドが追加されるので、アプレットの実行が遅くなることがあります。
Host On-Demand またはパーソナル・コミュニケーションズを使用してアプレットを実行するには、アプレットに ECLAppletInterface が実装されている必要があります。このインターフェースには、アクティブ・セッションをアプレットに渡すためのメソッドがあります。