Telnetアプリケーションのデバッグについて

概要

ADF Telnet(ADFT)アプリケーションのデバッグは、その他のデスクトップのブラウザ・ベース・アプリケーションのデバッグと類似していますが、一部異なる部分があります。このトピックでは、不具合がアプリケーションADFTまたはIndustrial Telnet Server(ITS)のどちらに問題があるものか、および生成されたデバッグ情報はどこで検索できるかについて説明します。ここでは、IDEを使用したWebアプリケーションのデバッグ方法については説明しません(たとえば、ブレーク・ポイントの設定方法などは扱いません)。

ここでは、ADFおよびADFTアプリケーションの作成およびデプロイ方法、ITSのデプロイおよび構成方法、およびITSに接続するTelnetエミュレータの正しい構成についての知識があることが前提とされます。

ADFTおよびITS

ADFTおよびITSの間の通信リンクは、アプリケーション開発のために理解する必要はありませんが、問題を追跡する場合に非常に役立ちます。

ADFTで提供されるレンダーキットでは、Telnetマークアップ言語(TML)と呼ばれるマークアップが生成され、ITSに送信されます。これはデスクトップWebブラウザに送信されるHTMLをコアADFレンダーキットで生成する方法と類似しています。

TMLには、ITSで画面の描画に使用される、ページ上のコンポーネントの説明および追加情報が含まれます。ITSではTMLのみが理解され、HTMLや他のマークアップを受信しても、ITSでは理解されず、エラー・メッセージが表示されログが記録されます。

便利なデバッグ構成

ADFTアプリケーションを開発する場合、デバッグに役立つ2つのステップがあります。

一般的なテスト・メカニズム

デスクトップのブラウザ・ベース・アプリケーションをテストする一般的な方法の1つには、アプリケーションをコンテナにデプロイし、Webブラウザを開き、アプリケーションへの接続を試行する方法があります。すべて正しければアプリケーション・ページが表示されます。問題があれば、使用中のコンテナ固有のエラー・メッセージを受信しますが、ほとんどのコンテナは、発生した問題を示すスタック・トレースを表示するよう構成できます。

このメカニズムはADFTアプリケーションのテストと非常に類似しています。ADFTアプリケーションはコンテナにデプロイされます。ITSはアプリケーションを指すよう構成されます。次にTelnetエミュレータがITSに接続します。すべて正常に動作している場合は、アプリケーション画面が表示されます。通常、問題がある場合はエラー・メッセージが表示されます。次のセクションでは、発生する可能性のあるエラーのタイプの詳細を説明します。

エラー・タイプ

ADFTアプリケーションの作成およびテスト中に発生する可能性のあるエラーのタイプは次のとおりです。

欠落フィールド、予期したものと異なるフィールド外観、正しくない値など

Telnetエミュレータに表示されるアプリケーション・ページで、フィールドが欠落している、フィールドの外観が予期したものと異なる、あるいは値が正しくないなどの場合で、エラー・メッセージが表示またはログに記録されなければ、アプリケーション自体に問題がある可能性があります。

一般的に考えられる原因は次のとおりです。

描画エラー

画面が正しく消去されていない(ゴースト・テキストが残っている)場合、あるいは変わった描画エラーが表示された場合は、次の2つの原因が考えられます。

クライアントの切断

メッセージが表示されずにエミュレータが切断された場合は、ITSの不具合である可能性が高いです。デスクトップのWebブラウザが不具合の発生時に閉じるように、ITSに内部の問題が発生すると、クライアントが即時に切断されます。メッセージはレベルSEVEREまたはWARNINGでログに記録されます。ITSがデプロイされるコンテナが同じ原因で終了した場合にも、このように動作します。

表示されるエラー・メッセージ

アプリケーションのコンテナへの接続時にITSでエラーを受信した場合、あるいは理解できない入力を受信した場合は、ポップアップにエラー・メッセージが表示されます。appConfig.xmlApplicationDebugModeプロパティがtrueに設定されている場合は、このポップアップにADFTアプリケーションからのレスポンスが含まれることがあります。含まれない場合は、アプリケーション・ページのロード試行中にエラーが発生したことを示す一般メッセージが表示されます。

エラー・メッセージは、次の理由のいずれかにより表示される場合があります。

最後の2つの原因については、アプリケーションのコンテナのレスポンス参照が役立ちます。ApplicationDebugModetrueに設定されている場合は、マークアップがエミュレータの画面に表示されます。ApplicationDebugModetrue、またはoracle.wireless.itsのログレベルがFINE以下に設定されている場合は、マークアップのログが記録されます。

Webコンテナがエラー・ページを返す場合は、ページ上に問題があるかどうかを調査し判別できる例外スタックが含まれている場合があります。たとえば、タグが正しく使用されていない、使用した属性が許可されていない、あるいはアプリケーションからNullPointerExceptionがスローされたことが示されます。このような情報がWebコンテナから返されたページにない場合、通常はWebコンテナのログに含まれています。

返されたマークアップがtmlルート要素から始まる場合は、ADFTがTMLページで応答したがそれをITSが理解できなかったことを意味します。これはADFTの問題であることを示します。

ADFTでの状態保存

ADFTでは、クライアントの状態保存はサポートされません。web.xml javax.faces.STATE_SAVING_METHODパラメータは、serverに設定されている必要があります(または、このパラメータが設定されていない場合、アプリケーションはサーバーの状態保存にデフォルト設定されるコンテナにデプロイする必要があります)。

場合によっては、JDeveloperによってweb.xml javax.faces.STATE_SAVING_METHODパラメータは自動的にclientに設定されます。現在、ADFTではこの設定はサポートされていません。この場合は必ず、web.xmlファイルを手動で変更し、このパラメータをserverに設定する必要があります。

このように設定しない場合、関連するJSFページの動作は次のようになります。すなわち、通常はサーバーに戻される対話が受け入れられず、ページのリフレッシュのみが行われます。たとえば、ボタンをアクティブにしても、常にフォーカスがページの最初のフィールドに戻り、ページは変更されません。


Telnetアプリケーションの詳細
ADF FacesおよびJDeveloperを使用したTelnetデバイス用のモバイル・ブラウザ・アプリケーションのビルド