Oracle® Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発 12c (12.2.1.3.0) E90376-03 |
|
前 |
次 |
この章の内容は次のとおりです。
ADFデバッグは、実行時の失敗につながる特定の要因を識別、分離および修正するプロセスです。
WebアプリケーションとOracle Application Development Framework (Oracle ADF)との対話のデバッグは、他のデバッグ・タスクと同様に、特定の要因を切り分けするプロセスです。ただし、Webアプリケーションの場合は一般に、このプロセスでJavaソース・コードのコンパイルが行われません。このため、Webページにはコンパイル用のJavaソース・コードは含まれません。実際には、アプリケーションを実行して使用してみるまで、問題が存在しているかわからないことがあります。たとえば、次のような障害は実行時に初めて現れます。
ページが見つからないというサーブレット・エラー
ページは見つかるが、コンポーネントがデータなしで表示される
メソッド・コールまたは組込み操作(「Next」や「Previous」など)の実行後、ページにデータが表示されない
ページは表示されるが、メソッド・コールまたは組込み操作をまったく実行できない
ページは表示されるが、予期しない検証エラーが発生する
データを表示できない、またはメソッド・コールを実行できない場合、WebページのコンポーネントとADFモデル・レイヤーの間の対話に原因があります。ADFライフサイクル処理中にランタイム・エラーが観測されると、モデルの準備、値の更新、アクションの起動、データのレンダリングという一連の処理の完了が失敗します。
幸い、WebアプリケーションとOracle ADFの対話における失敗は、アプリケーションにより定義された宣言情報か、ページのADFバインディング・コンテナのランタイム・オブジェクトにアクセスするEL式の中にある、修正が容易な単純なエラーが原因であることがほとんどです。
データバインド済Fusion Webアプリケーションでランタイム・エラーが観測された場合は、その原因として考えられる宣言情報とEL式を調べる必要があります。宣言ファイルの編集の詳細は、「単純なOracle ADFコンパイル・エラーの修正」および「単純なOracle ADFランタイム・エラーの修正」を参照してください。
最も役に立つ診断用ツールのうちの1つが、ADFロガーです。JDeveloperでは、このロギング・メカニズムを使用して実行時トレース・メッセージを取得します。ADFロギングが有効になっている場合、JDeveloperにより、メッセージ・ログ・ウィンドウ内にアプリケーション・トレースが表示されます。このトレースには、アプリケーション・エラーの原因をすぐに特定できるランタイム・メッセージが含まれます。詳細なトレース・メッセージが表示されるようにADFロガーを構成するには、「ADFロガーの使用」を参照してください。
サポート契約を締結しているOracle ADFのお客様については、Oracle Worldwide SupportにOracle ADFソース・コードをリクエストできます。これにより、ADFビジネス・コンポーネント・フレームワーク・コードを非常に簡単にデバッグできます。Oracle ADFソース・コードを使用するためのJDeveloperの構成方法の詳細は、「デバッガでのADFソース・コードの使用」を参照してください。
エラーを簡単に特定できない場合は、JDeveloperでADF宣言デバッガを使用してブレークポイントを設定することができます。ブレークポイントに達すると、アプリケーションの実行が一時停止され、ADFバインディング・コンテナの作業対象データを調べて、予測されるデータと比較することができます。ブレークポイントのタイプによっては、ステップ機能を使用して、1つのブレークポイントから別のブレークポイントに移動することができます。デバッガの詳細は、「ADF宣言デバッガの使用」を参照してください。
JDeveloperでは、回帰テスト・ケースを生成するウィザードにより、Fusion WebアプリケーションのためのJUnitとの統合が提供されます。アプリケーションのテスト・スイートの記述方法の詳細は、「JUnitを使用した回帰テスト」を参照してください。
単純なOracle ADFコンパイル・エラーは、Oracle宣言ファイルを変更し、それがOracle ADFで定義されたXMLスキーマに準拠していない場合に発生します。
JDeveloperで、Webページを作成し、ADFデータ・コントロールを使用してADFバインディング定義を作成するとき、編集するOracle ADF宣言ファイルは、Oracle ADFにより定義されたXMLスキーマに準拠している必要があります。XML構文エラーが発生すると、JDeveloper XMLコンパイラによって即時に「構造」ウィンドウ内にエラーが表示されます。
設計時に多少の構文チェックが行われますが、JDeveloperコンパイラには現在、EL式を解決できないという制限があります。Webページ内のEL式は、Web環境における様々なランタイム・オブジェクト(WebページのADFバインディング・コンテナなど)と直接対話します。現在、EL式内のエラーは実行時にしか観測できません。このため、オブジェクト・アクセス式に入力エラーが1つ存在していても、コンパイラによって検出されず、実行時にバインディング・コンテナと対話できないこと、またページにデータが表示されないことでエラーが明らかになります。ラインタイム・エラーのデバッグの詳細は、「単純なOracle ADFランタイム・エラーの修正」を参照してください。
ヒント:
式ビルダーは、オブジェクト、マネージドBeanおよびプロパティのリストを提供することでEL式の作成を支援するダイアログです。また、ADFバインディング・オブジェクトの階層リストやその有効なプロパティが提供され、選択できるため、ADFデータバインド式の作成や編集に特に便利です。入力エラーを未然に防ぐために、式ビルダーを使用してください。詳細は、「ADFデータ・バインディングのEL式の作成」を参照してください。
次の例は、ページ定義ファイルに含まれている単純なコンパイル・エラーを2つ示しています。false
となるところがfals
に、ChangeEventPolicy="ppr"/>
となるところがChangeEventPolicy="ppr"/
(つまり、属性に山閉じカッコがない)となっています。
<?xml version="1.0" encoding="UTF-8" ?> <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel" Package="oracle.summit.view.pageDefs" SkipValidation="fals"> <parameters/> <executables> <iterator Binds="InventoryForOrderItem" RangeSize="-1" DataControl="BackOfficeAppModuleDataControl" id="InventoryForOrderItemIterator" ChangeEventPolicy="ppr"/ ... </pageDefinition>
コンパイル時には、図48-1に示すように、「構造」ウィンドウにページ内のXMLエラーが表示されます。
コンパイラ-「ログ」ウィンドウには、図48-2に示すように、ページ内のコンパイル・エラーも表示されます。
スキーマ検証エラーを確認し、修正するには:
メイン・メニューで「表示」→「構造」を選択して「構造」ウィンドウを開くか、「表示」→「ログ」を選択して「ログ」ウィンドウを開きます。
どちらかのウィンドウで、エラー・メッセージをダブルクリックします。
XMLエディタで、強調表示された行を特定します。
エラーのある行が強調表示されます。
エラーを修正します。
エラーを修正すると、それに対応するエラー・メッセージは自動的に「構造」ウィンドウから削除されます。
必要であれば、プロジェクトを再コンパイルします。「実行」→「メイク」を選択し、コンパイラでエラー・メッセージがまだ生成されるかどうかをチェックします。
単純なOracle ADFランタイム・エラーは、ADFモデル・レイヤーの失敗をJDeveloperコンパイラでは検出できない場合に発生します。
ADFモデル・レイヤーの障害はJDeveloperコンパイラでは検出できません。1つには、ページのデータ表示とメソッド実行の動作が宣言ADFページ定義ファイルに依存するためです。ADFモデル・レイヤーはこのような宣言ファイルを実行時に使用して、ADFバインディング・コンテナのオブジェクトを作成します。
スキーマ検証だけでなく、Webページを定期的に実行およびテストして、次のいずれの条件も存在していないことを確認すると効果的です。
データ・モデル・プロジェクトとユーザー・インタフェース・プロジェクトの間のプロジェクト依存関係が無効である。
デフォルトでは、データ・モデル・プロジェクト内のデータ・コントロールにアクセスするWebページを作成すると、プロジェクト間の依存関係が有効になります。しかし、アプリケーションを実行しようとしたときに依存関係が無効化されて再び有効化されないと、実行時に次の内部サーブレット・エラーが生成されます。
oracle.jbo.NoDefException: JBO-25002: 型nullの定義model.DataControls.dcxが見つかりません。
このエラーを修正するには、ユーザー・インタフェース・プロジェクトをダブルクリックし、ダイアログで「依存性」ノードを選択します。パネル内にModelProjectName.jprオプションが表示されていることを確認してください。
ページ定義ファイルの名前が変更されたのに、DataBindings.cpx
ファイルが依然として元のページ定義ファイル名を参照している。
JDeveloperではIDE内でのこれらのファイルの名前変更は許可されていませんが、JDeveloperの外部でページ定義ファイルの名前が変更された場合、DataBindings.cpx
ファイル内の参照が更新されていないと、実行時に次の内部サーブレット・エラーが生成されます。
oracle.jbo.NoDefException: JBO-25002: 型フォーム・バインディング定義の定義oracle.<path>.pageDefs.<pagedefinitionName>が見つかりません。
このエラーを修正するには、DataBindings.cpx
ファイルを開き、ソース・エディタを使用して<pageMap>
要素と<pageDefinitionUsages>
要素にあるページ定義ファイル名を編集します。
Webページ・ファイル(.jsp
または.jspx
)の名前が変更されたが、DataBindings.cpx
ファイルが依然として同じWebページの元のファイル名を参照している。
ページ・コントローラでは、ページのURLを使用して、Webページ用のADFバインディング・コンテナの作成に使用する適切なページ定義を決定します。URLからのページの名前がDataBindings.cpx
ファイルの<pageMap>
要素と一致しない場合、実行時に次の内部サーブレット・エラーが生成されます。
javax.faces.el.PropertyNotFoundException: プロパティ<propertyname>のテスト中にエラーが発生しました。
このエラーを修正するには、DataBindings.cpx
ファイルを開き、ソース・エディタを使用して<pageMap>
要素にあるWebページ・ファイル名を編集します。
WebページのEL式でバインディングの名前が変更されたが、ページ定義ファイルが依然として元のバインディング・オブジェクト名を参照している。
Webページに期待どおりの情報が表示されない可能性があります。このエラーを修正するには、ページ定義ファイル内のバインディング名と、表示されていないページ部分に対応するEL式とを比較します。不一致は値バインディングで発生する可能性が最も高く、その結果として、コンポーネントがデータなしで表示されます。イテレータ・バインディング名で不一致が発生した場合、エラーはさらに軽微になり、不一致の原因を特定するためにさらに詳細なデバッグが必要になることがあります。
ページ定義ファイル内のバインディングの名前変更または削除が行われたが、EL式が依然として元のバインディング・オブジェクト名を参照している。
デフォルトのエラー処理メカニズムによりADFバインディング・コンテナからのランタイム・エラーが捕捉されるため、このタイプのエラーは非常に簡単に検出できます。たとえば、ページ定義ファイル内の、findUsersByNameIter
という名前のイテレータ・バインディング名が変更されたが、ページが依然として元の名前を参照している場合、Webページに次のエラーが表示されます。
JBO-25005: 型イテレータ・バインディング定義のオブジェクト名<iterator>が無効です。
このエラーを修正するには、Webページで名前をクリックして「ページ定義に移動」を選択し、EL式内に使用する適切なバインディング名を見つけます。
式ピッカー・ダイアログを使用せずに手動でEL式を記述し、無効なオブジェクト名またはプロパティ名が入力されている。
このエラーは見つけにくいことがあります。エラーが含まれているEL式によって、サーブレットのエラー・メッセージが表示されることと、表示されないことがあります。たとえば、ランタイム結果を持たないバインディング・プロパティ(ラベル名の表示など)においてエラーが発生した場合、ページは正常に機能しますが、ラベルは表示されません。しかし、メソッドを実行するバインディングにおいてエラーが発生した場合は、内部サーブレット・エラーjavax.faces.el.MethodNotFoundException:
methodname
が表示されます。また、メソッド式にプロパティ名を間違って入力した場合は、サーブレット・エラーjavax.faces.el.PropertyNotFoundException:
propertyname
が表示されます。
このような一般的なエラーのリストを調べても、ランタイム・エラーの特定と解決ができない場合は、原因を特定するためにJDeveloper内部のデバッグを開始できます。Oracle ADFアプリケーションの場合は、問題を特定するためにADF宣言ブレークポイントの設定を開始します。ADF宣言デバッガを使用してADF宣言ブレークポイントを設定する方法は、「ADF宣言デバッガの使用」および「ADF宣言ブレークポイントの設定」で説明されています。このプロセスでは、アプリケーションで処理を続行する際にアプリケーションの実行を一時停止してデータを調べます。また、「JavaコードとGroovyスクリプトのブレークポイントの設定」で説明するように、ADF宣言デバッガを使用してJavaコード・ブレークポイントを設定することもできます。
ADFメタデータ・ファイルまたはクラス・ファイルを変更するだけでは、アプリケーションを統合WebLogic Serverにデプロイした後の実行時に影響しません。プロジェクトを再コンパイルし、Webブラウザをリフレッシュする必要があります。
JDeveloperによるOracle ADFのメタデータのホット・リロードのサポートは、実行中のアプリケーションを終了し、プロジェクトのXML定義ファイルを編集して再デプロイし、統合WebLogic Serverでアプリケーションを再実行して最新の変更を表示する手順の代替手段です。
統合WebLogic Serverにデプロイしたアプリケーションは、Fusion Webアプリケーション・プロジェクトに対して行う変更を自動的に適用しません。ただし、データ・モデル・プロジェクトとユーザー・インタフェース・プロジェクトからいつでもメタデータをリロードして、実行中のアプリケーションをアプリケーションのXML定義ファイルに対して行った変更と同期をとることができます。
デプロイしたFusion Webアプリケーションに変更が反映されるようにメタデータをリロードするには、プロジェクトを再コンパイルし、Webブラウザをリフレッシュする必要があります。
JDeveloperが統合WebLogic Serverにホット・リロードするメタデータには次のものがあります。
データ・モデル・プロジェクトでは、ビジネス・コンポーネントの定義ファイルに対する変更。
ユーザー・インタフェース・プロジェクトでは、ページ定義ファイルのバインディング定義に対する変更およびタスク・フロー定義ファイルのタスク・フローに対する変更。
このサポートによって、インクリメンタル変更の実行およびそのテストが可能になります。
ADFコントローラがメタデータをリカバリし、検証が実行されます。たとえば、アプリケーションでは、ADFコントローラ・メタデータの文法は、adf-config.xmlファイルのenable-grammar-validationsettingを有効にすることで検証されます。
ADFコントローラがメタデータを取得すると、基本的な検証が実行されます。デフォルト・アクティビティがないタスク・フローなど、最も重大なエラーでは例外が解析されます。
adf-config.xml
のenable-grammar-validation
設定を使用すると、アプリケーションのデプロイ前にADFコントローラのメタデータの文法を検証できるようになります。enable-grammar-validation
をtrue
に設定すると、ADFコントローラのメタデータはADFコントローラのXSDに対して検証されます。たとえば、ビュー・アクティビティIDのスラッシュ(/)など、ADFコントローラのメタデータの無効な文字は、例外としてフラグを立てられます。
デフォルトでは、enable-grammar-validation
はfalse
に設定されています。パフォーマンス上の理由から、アプリケーションの開発時またはトラブルシューティング時にのみ、true
に設定してください。
ロギングは、エラーのデバッグおよびトレースで重要です。ADFフレームワークでは、ADFロガーを使用してアプリケーション・エラーを識別し、調査できます。
Webページまたはその対応するページ定義ファイル内でエラーが簡単に見つからない場合、JDeveloperのデバッグ・ツールを使用して、アプリケーションの障害の発生箇所を調べることができます。
Oracle Diagnostic Logging Configurationでは、エディタを使用してlogging.xml
構成ファイルを編集することでロギング・セッションを構成できます。ロギング構成は、いつでも(アプリケーションがJDeveloperで実行していても)設定できます。
JDeveloperの多くのファイルとは異なり、logging.xml
ファイルを直接開くことはできません。かわりに、これらの場所でメニュー・コマンドを使用して、Oracle Diagnostic Logging Configurationのエディタを開きます。
「アプリケーション・サーバー」ウィンドウでアクティブ・サーバー・インスタンスを右クリックします。
アプリケーションをデバッグ・モードで起動した後、ログ・ウィンドウのデバッガ・プロセス・パネルに表示される「アクション」ドロップダウン・メニューをクリックします。
Oracle Diagnostic Logging Configurationのエディタを使用して、必要なロギング・レベルを設定し、表示されるメッセージのレベルと数を制御します。永続ロガーと一時ロガー両方のロギング・レベルを設定し、各ロガーのハンドラを宣言できます。
JDeveloperは、Oracle Fusion Middlewareのコンポーネントで使用されるOracle Diagnostic Logging (ODL)形式で診断ログ・ファイルを作成します。ログ・ファイルの名前とログ・ファイルの内容の形式は、Oracle標準に準拠します。デフォルトでは、診断メッセージはテキスト形式です。ODL書式の詳細は、『Oracle Fusion Middlewareの管理』のODLメッセージおよびODLログ・ファイルの理解に関する項 を参照してください。
エディタでは、デフォルトのODL形式のかわりに、Javaロガーを構成してJava診断メッセージを表示できます。
ログを作成した後で、Oracle Diagnostic Log Analyzerでログ・メッセージを表示してフィルタ処理できます。このツールを使用すると、様々なログ・レベルでのフィルタ設定、メッセージの時間枠の定義、およびメッセージ・テキストの検索を行うことができます。
続いてADF宣言デバッガを使用して、ブレークポイントを設定し、アプリケーションを調べることができます。詳細は、「ADF宣言ブレークポイントの設定」および「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。
Oracle Diagnostic Logging Configurationのエディタを使用して、logging.xml
構成ファイルに指定されるロギング・レベルを構成できます。このファイルを構成できるのは、アプリケーションを統合WebLogic Serverで実行する前と実行しているときです。サーバーを再起動しなくても変更内容が適用されます。
統合WebLogic Serverが実行しているとき、永続ロガーと一時ロガーの両方を定義できます。統合WebLogic Serverが実行していないときは、永続ロガーしか定義できません。一時ロガーはセッションの間のみ存続し、logging.xml
構成ファイルには入力されません。サーバーが実行していない場合は、次の実行時に更新が有効になるように、構成の変更内容を明示的にlogging.xml
ファイルに保存する必要があります。
Oracle Diagnostic Logging Configurationのエディタは、「アプリケーション・サーバー」ウィンドウまたは「ログ」ウィンドウ(図48-3)から利用できます。
ただし、サーバーが実行しているときに「ログ」ウィンドウのメニューからエディタにアクセスすると、一時ロガーを追加する機能がエディタに含まれます。
図48-4にサーバーが実行しているときのOracle Diagnostic Logging Configurationを示します。
図48-4 Oracle Diagnostic Logging Configurationのエディタ
JDeveloperのメニュー・コマンドを使用するだけでlogging.xml
構成ファイルを開いて、Oracle Diagnostic Logging Configurationのエディタを起動できます。ただし、構成ファイルの場所に関する次の情報が便利であることがわかります。
注意:
ログ・ハンドラ定義を宣言して追加するには、「ソース」タブをクリックして、定義をXMLエディタに入力します。
WindowsプラットフォームのJDeveloperで統合WebLogic Serverを使用している場合、logging.xml
構成ファイルは次のような場所にあります。
C:\Users\
username
\AppData\Roaming\JDeveloper\
<your_JDev_system_folder>
\DefaultDomain\config\fmwconfig\servers\DefaultServer
統合WebLogic Serverのログ・ファイルは次のような場所にあります。
C:\Users\
username
\AppData\Roaming\JDeveloper\
<your_JDev_system_folder>
\DefaultDomain\servers\DefaultServer\logs
スタンドアロンWebLogic Serverインスタンスのログ・ファイルは次のような場所にあります。
$domain_home/servers/
<your_servername>
/logs
ロギング・レベルは、テスト実行の前には「アプリケーション・サーバー」で、アプリケーションの実行中には「ログ」ウィンドウの実行パネル・ツールバーで、またはデバッグ・セッション中には「ログ」ウィンドウのメニューで構成できます。
ログ・レベルを構成するには:
メイン・メニューで、「ウィンドウ」、「アプリケーション・サーバー」を選択します。
「アプリケーション・サーバー」ウィンドウで「アプリケーション・サーバー」を開き、「IntegratedWebLogicServer」を右クリックして、「"IntegratedWebLogicServer"に対するOracle Diagnostic Loggingの構成」を選択します。
または、アプリケーションの開始後に、「ログ」ウィンドウの実行中: IntegratedWebLogicServerパネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。「実行中のログ」ウィンドウは、アプリケーションの実行中のみ表示されます。
または、アプリケーションのデバッグ中に、「ログ」ウィンドウのデバッグ・プロセス・パネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。デバッグ・プロセス・パネルは、アプリケーションをデバッグ・モードで起動した後のみ、「ログ」ウィンドウに表示されます。
Oracle Diagnostics Logging Configurationのエディタで、表示するロガー・タイプについて「ODLログ・レベル」または「Javaログ・レベル」を選択します。
永続ロガーのみを表示する場合は、「一時ロガーの非表示」を選択します。
ロガーを追加するには次のようにします。
サーバーが実行している場合は、「追加」アイコンのドロップダウン・メニューをクリックして、「永続ロガーの追加」または「一時ロガーの追加」を選択します。サーバーが実行していない場合は、「追加」をクリックして永続ロガーを追加します。一時ロガーは追加できません。
ロガーの追加ダイアログでロガーの名前を入力します。
ロギング・レベルを選択します。
「OK」をクリックします。
新たに作成したロガーを含むすべてのロガーについて、ハンドラを指定できます。これには、使用可能なハンドラのリストから選択して、「ハンドラ宣言」セクションの「追加」アイコンをクリックします。
または、「親ハンドラの使用」を選択して、親のハンドラをロガーに割り当てます。デフォルトではロガーは親のハンドラを使用します。
注意:
ログ・ハンドラ定義を宣言して追加するには、「ソース」タブをクリックして、定義をXMLエディタに入力します。
Oracle ADFでは、デバッグ・セッションの実行時にロギング機能を提供するために、JavaロギングAPI (java.util.logging.Logger
)を使用します。Javaロギングは、Javaプラットフォーム(http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html
)から入手できる標準APIです。
ADFイベント・メッセージの完全な階層ツリーをロギングするには、1つのパッケージに対してCONFIG
よりも制限が厳しくないJavaログ・レベル(またはNotification:16
よりも制限が厳しくないODLログ・レベル)を構成する必要があります。
oracle.adfdiagnostics
では、ADFモデル・データバインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネント、ADFデスクトップ統合、およびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。
図48-5に、最も詳細なOracle ADFログ・メッセージを有効にするように構成された特別なロガーを表示します。oracle.adfdiagnostics
パッケージはCONFIGに設定され、それよりも制限の厳しい(高い)ログ・レベルには設定されません(ここでは、SEVERE、WARNINGおよびINFOはCONFIGよりも高いJavaログ・レベルで、FINE、FINERおよびFINESTはCONFIGよりも低いレベルです)。oracle.adfdiagnostics
パッケージのロガーを有効化すると、ロガーはADFイベントの完全な階層を記録します。
後方互換性を保つため、Javaシステム・プロパティjbo.debugoutput
による値console
またはADFLogger
の設定がサポートされています(この設定を行うと、logging.xml
ファイルを介して標準の方法で制御できる標準ロガー実装に診断がルーティングされます)。JDeveloper内部でのアプリケーションの実行中、このシステム・プロパティを設定する最も簡単な方法は、プロジェクト・プロパティを編集し、「実行/デバッグ」ページで実行構成を選択して、「編集」をクリックすることです。次に、文字列-Djbo.debugoutput=console
を「Javaオプション」フィールドに追加します。
ADFモデルのデバッグ構成を作成するには:
メイン・メニューで、「ウィンドウ」、「アプリケーション・サーバー」を選択します。
「アプリケーション・サーバー」ウィンドウで「アプリケーション・サーバー」を開き、IntegratedWebLogicServerを右クリックして、「Oracle Diagnostic Loggingの構成」を選択します。
または、アプリケーションの開始後に、「ログ」ウィンドウの実行中: IntegratedWebLogicServerパネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。「実行中のログ」ウィンドウは、アプリケーションの実行中のみ表示されます。
または、アプリケーションのデバッグ中に、「ログ」ウィンドウのデバッグ・プロセス・パネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。デバッグ・プロセス・パネルは、アプリケーションをデバッグ・モードで起動した後のみ、「ログ」ウィンドウに表示されます。
Oracle Diagnostics Logging Configurationのエディタで、表示するロガー・タイプについて「ODLログ・レベル」または「Javaログ・レベル」を選択します。
「oracle」ノードを開き、CONFIG
よりも制限が厳しくないログ・レベル(Javaログの場合)、またはNotification
よりも制限が厳しくないログ・レベル(ODLログの場合)を、次のパッケージに対して選択します。
oracle.adfdiagnosticsでは、ADFモデル・データバインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネントおよびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。
このパッケージのロガーを有効化すると、ロガーはADFイベントの完全な階層を記録します。
その他の必要なOracle ADFロガーに対しては、Javaログ・レベル「FINEST」を選択します。
ADFビューJavascriptロギング構成を作成するには:
Oracle ADF以外のロガーの場合、実際のデバッガを使用する前に、FINE、FINERまたはFINESTにJavaログ・レベルを設定した状態でアプリケーションを実行することで、フレームワークの診断ロギングが可能になります。デバッグ診断メッセージは、問題発生時の処理を確認する際に役立ちます。デバッグ診断メッセージを有効にするには、Oracle Diagnostics Logging Configurationのエディタを使用して、Javaログ・レベルを最も詳細に設定して必要なロガーを構成します。サポートされているロガーの診断ロギングが構成済の場合、JDeveloperは、デバッグ診断メッセージをJDeveloperの「ログ」ウィンドウに表示します。
現時点で、Oracle ADFは、Javaログ・レベルをFINE、FINERまたはFINESTに設定した状態のロギングはサポートしていません。Oracle ADFロガーの詳細は、「Oracle ADFデバッグ構成の作成方法」を参照してください。
Oracle Diagnostic Log Analyzerを使用してログ・ファイルのログ・エントリを表示できます。ログ・アナライザでは、ログ・レベル、エントリ・タイプ、ログの時刻、エントリの内容によってエントリをフィルタ処理できます(1つ以上の検索基準を使用)。見やすくするために、メッセージの並替えや、列の表示と非表示の切替えを行うこともできます。
図48-6に、Javaログ・レベルの表示に設定されているOracle Diagnostic Log Analyzerを示します。
図48-6 Oracle Diagnostic Log AnalyzerでのJavaログ・メッセージの表示
他のテスト実行で作成されたログ・ファイルに対してもログ・アナライザを使用できます。たとえば、他のアプリケーションについて別の開発者から送信されたログを分析できます。
ロギング・レベルは、テスト実行の前に「アプリケーション・サーバー」ウィンドウで、またはデバッグ・セッション中に「ログ」ウィンドウのツールバーで構成できます。指定するレベルによって、ログ・メッセージのタイプと量が決まります。
ADFイベントの場合、ODLログについては「通知」
レベルで、Javaログに関しては「情報」
レベルで、すべてのメッセージが生成されます。「インシデント・エラー」
/「重度」
レベルや「エラー」
/「警告」
レベルでは、生成されるADFメッセージの数は少なくなります。
表示するメッセージのログ・レベルを選択した後で、「ログ・メッセージ別」ページの「検索」パネルを使用して、ログ・ファイルのメッセージをフィルタ処理して表示します。
注意:
ADF固有のメッセージを検索するために指定できる検索基準の詳細は、「ADFイベントに基づく診断メッセージのソート」を参照してください。
ログ・アナライザを開始するには、テスト実行の前は「ツール」メニューを使用し、デバッグ・セッション中は「ログ」ウィンドウのツールバーを使用します。
始める前に:
ロギングの知識があると役立ちます。詳細は、「ADFロガーの使用」を参照してください。
次のタスクを完了する必要があります。
「ADFロギング・レベルを設定する方法」の説明に従い、ロギング・レベルを設定します。
「Oracle ADF以外のロガーの診断ロギングを有効化する方法」の説明に従い、ロギングを有効にします。
テスト実行または別のソースからログ・ファイルを作成します。
ログ・アナライザを開始するには:
OracleではOracle ADFソース・コードを使用して、ADFライフサイクル・フェーズの実行中にログ・メッセージを生成するため、ログ・アナライザを使用すると、実行中のアプリケーションでのアクティブな(または以前の)ページ・リクエストの詳細を調査できます。特に、ログ・アナライザの「ADFリクエスト別」ページでは、実行順に整理された階層リストでADFイベント・メッセージを表示できます。また、各イベントのグラフィック表示も提供されます。アプリケーションを実行して、ADFロギングが構成されたログ・アナライザを開始したとき、実行時間が通常よりも長い場合は、このページを使用すると、アプリケーションのコンポーネントがパフォーマンス・ボトルネックに関与しているかどうかをすぐに判断できます。
注意:
「ログ・メッセージ別」ページとは異なり、ログ・アナライザの「ADFリクエスト別」ページにはADFイベント・メッセージが階層で表示されます。この2つのページの違いは、「ADFリクエスト別」ページでは、ページまたはリージョンが送信されたときに作成されたADFページ・リクエストのみに焦点を当てていることです。ADFページ・ライフサイクルの詳細は、「Fusionページ・ライフサイクルの理解」を参照してください。
「ADFリクエスト別」ページに検索基準を入力すると、ログ・ファイルの特定のリクエストを1つ以上表示できます。次のいずれかの検索基準を組み合せて、ログ・ファイルをフィルタ処理できます。
表示するリクエストの数
ログに記録されたリクエストのタイムスタンプ
ログインしているユーザー名、エンタープライズ名、リクエスト・ヘッダー(ページまたはリージョン名に基づく検索の指定用)、メッセージ、ソース・クラス、モジュール、サーバー、詳細、エンタープライズID、ADFメッセージ・データ、コンポジット・アプリケーション内のアプリケーション名、ソース・メソッド、メッセージIDまたはECID (すべてのトップレベル・タスクに関連付けられたグローバルに一意のID。そのトップレベル・タスクによって起動されるサブタスクは、同じECIDを共有する実行コンテキストによって機能します)。
リクエストの完了後、ログ・アナライザでは単一の表にADFリクエストのサマリーが表示されます。図48-7に、ADF Webリクエストを一覧したサマリー表を示します。
図48-7 Oracle Diagnostic Log AnalyzerでのADF Webリクエストのサマリーの表示
サマリー表に表示されたADFリクエストごとに、リクエスト・リンクをクリックして、リクエスト・イベント階層に関する詳細を表示できます。図48-8に示す「ADFリクエスト」パネルには、JSFライフサイクルのビューのリストア・フェーズおよびレスポンス・レンダリング・フェーズが表示されています(期間はミリ秒単位)。リクエスト・イベント階層のルート・ノード(ADF Webリクエスト)の棒グラフは合計実行時間を示します。
図48-8 Oracle Diagnostic Log AnalyzerでのADF Webリクエスト・イベント階層の表示
注意:
リクエスト時間の割合の棒グラフの2色(黒とグレー)は、リクエストの実行時間のうち、ADFソース・コードのADFイベント・メッセージの生成に使用された部分(黒で表示)と、使用されなかったADFソース・コードの部分(ADFイベント・メッセージを生成できない、グレーで表示)に基づく時間を示します。また、リクエストの個々のフェーズを合計しても合計のリクエスト時間と等しくならないことに注意してください。これは、ライフサイクルの有効なフェーズのみがログ・アナライザに表示されるためです。
リクエストをさらに詳しく調べるには、ADFライフサイクル・ノードのツリーを展開して、アプリケーションのどこでパフォーマンス・ボトルネックが発生したかを調査します。リクエスト・メッセージ・パネルでドリルダウンしてADFイベント・ノードを選択すると、各ADFイベントに関連付けられたコンポーネントの詳細が表示されます。たとえば、JSFフェーズRENDER_RESPONSEノードを開くと、そのフェーズで生成されたすべてのADFイベントが表示されます。図48-9に、開かれたJSFフェーズRENDER_RESPONSEノードを示します。リクエスト期間を表す長い棒グラフが表示されたLOVリストの取得ノードと「問合せの実行」ノードがあります。「問合せの実行」ノードが選択されており、ビュー・オブジェクト名や問合せ文を含む詳細なADFデータが「ADFメッセージ・データ詳細」パネルの下部に表示されます。棒グラフが示す実行時間が長いADFイベントをドリルダウンして選択することで、たとえば、データ・モデル・プロジェクト内のビュー・オブジェクト名を取得できます。パフォーマンスを改善するためにはこれをチューニングする必要があります。
図48-9 Oracle Diagnostic Log AnalyzerでのADFイベント・メッセージとADFデータの表示
始める前に:
ロギングの知識があると役立ちます。詳細は、「ADFロガーの使用」を参照してください。
次のタスクを完了する必要があります。
「ADFロギング・レベルを設定する方法」の説明に従い、ロギング・レベルを設定します。
ADFイベント・メッセージの完全な階層ツリーをロギングするには、1つのパッケージに対してNOTIFICATION:16
よりも制限が厳しくないODLログ・レベル、またはCONFIG
よりも制限が厳しくないJavaログ・レベルを構成する必要があります。
oracle.adfdiagnostics
では、ADFモデル・データバインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネントおよびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。
ヒント:
Oracle Diagnostics Logging Configurationのエディタによって表示されるルート・ログ出力のデフォルト・ログ・レベルでは、ADFイベント・メッセージのロギングが保証されます。
「Oracle ADF以外のロガーの診断ロギングを有効化する方法」の説明に従い、ロギングを有効にします。
テスト実行または別のソースからログ・ファイルを作成します。
ログ・アナライザでADFリクエスト・メッセージを表示するには:
Oracleでは、ADFライフサイクル・フェーズの実行中、およびADFモデルのデータバインディング・レイヤー、ADFコントローラ・ソースおよびADFビジネス・コンポーネント・ソースで実行される操作中に、Oracle ADFソース・コードを使用してログ・メッセージが生成されます。ログ・アナライザではこれらのメッセージをまとめてADFイベントと呼びます。ログ・アナライザを使用して、実行中のアプリケーションのADFイベントを調査することができます。ログ・アナライザの「ログ・メッセージ別」ページでは、ADFイベント・メッセージが実行時刻で整理されたフラット・リストで表示されます。「ADFリクエスト別」ページに切り替えて、実行順の階層リストでADFイベントを表示することもできます。
ADFイベント・メッセージには、アプリケーションのどのADFコンポーネントでイベントが生成されたかを特定するための情報が含まれます。たとえば、ADFイベント・メッセージのログを検索して、ページでのデータ表示、問合せの実行またはアクションの開始に関連するコンポーネントを識別できます。
イテレータ・バインディングの実行: ページでのデータ表示を管理するために実行されたイテレータの名前を表示します。これは、問合せの更新が遅い場合の診断に役立ちます。
問合せの実行: 実行された問合せに関連するビュー・オブジェクトの名前を表示します。これが役立つのは、問合せ文、バインド・パラメータおよびビュー・オブジェクト名を表示する場合です。
メソッド・バインディングの実行: バインド・データ・ソースに対して実行されたJavaメソッドの名前を表示します。これは、メソッドの実行が遅い場合の診断に役立ちます。
ログ・アナライザにADFイベント・メッセージを表示した後で、ロギングされた他のメッセージとの関係に基づいてイベントを整理することができます。次のように表示する項目に応じて「関連付け」列でオプションを選択できます。
ADFイベントまでのすべてのメッセージ(「時間による関連付け」)
ADFイベントと同じWebリクエストのすべてのメッセージ(「リクエストによる関連付け」)
同じWebリクエストのADFイベント・メッセージのみ(「ADFリクエストによる関連付け」)
ヒント:
「ADFリクエストによる関連付け」オプションには、ADFイベント・メッセージの詳細なADFデータが表示されます。たとえば、このビューは、「問合せの実行」
メッセージに関連する問合せ文を表示する場合に使用します。
図48-10に、ADFイベント・メッセージ「アプリケーション・モジュールの作成」
に関するログ・アナライザの検索結果を示します。「結果」パネルに検索基準を満たすすべてのメッセージが表示され、下部のパネルにはコンポーネントの詳細情報が表示されます。
図48-10 Oracle Diagnostic Log AnalyzerでのADFイベント・メッセージの表示
「結果」パネルの「関連付け」列で「ADFリクエストによる関連付け」を選択すると、ログ・アナライザは「ADFリクエスト別」ページの表示に切り替わり、ADFイベント・メッセージが実行の依存関係を表す階層で表示されます。ログ・アナライザの「ADFリクエスト別」ページは、パフォーマンスの問題の診断に適しています。「ADFリクエスト別」ページの詳細は、「ADFリクエストを分析するためのログ・アナライザの使用」を参照してください。「ログ・メッセージ別」ページの経過時間は、「結果」パネルから表示または非表示にできる情報です。
始める前に:
ロギングの知識があると役立ちます。詳細は、「ADFロガーの使用」を参照してください。
次のタスクを完了する必要があります。
「ADFロギング・レベルを設定する方法」の説明に従い、ロギング・レベルを設定します。
ADFイベント・メッセージをロギングするには、次のパッケージについてNOTIFICATION:16
よりも制限の厳しいODLログ・レベルまたはCONFIG
よりも制限の厳しいJavaログ・レベルを構成しないでください。
oracle.adfdiagnostics
では、ADFモデル・データバインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネントおよびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。
ヒント:
Oracle Diagnostics Logging Configurationのエディタによって表示されるルート・ログ出力のデフォルト・ログ・レベルでは、ADFイベント・メッセージのロギングが保証されます。
「Oracle ADF以外のロガーの診断ロギングを有効化する方法」の説明に従い、ロギングを有効にします。
テスト実行または別のソースからログ・ファイルを作成します。
ADFイベントに関連付けられたメッセージを表示するには:
デフォルトでは、すべてのOracleロガーのレベルがWARNING
に設定されます。Oracle ADFパッケージで、詳細なロギング診断を行う場合には、level="FINE"
に設定します。
ADFビュー・レイヤー・パッケージoracle.adf.view.faces
およびoracle.adfinternal.view.faces
の場合は、次の要素を編集します。
<logger name="oracle.adf" level="FINE"/> <logger name="oracle.adfinternal" level="FINE"/>
ADFモデル・レイヤー・パッケージの場合は、次の要素を編集します。
<logger name="oracle.adf" level="FINE"/> <logger name="oracle.jbo" level="FINE"/>
ADFコントローラ・レイヤー・パッケージの場合は、次の要素を編集します。
<logger name="oracle.adf.controller" level="FINE"/> <logger name="oracle.adfinternal.controller" level="FINE"/>
あるいは、デバッグ・セッションを開始する際に選択できるデバッグ構成をJDeveloper内に作成することもできます。
次の例は、ログ・メッセージの粒度を変更できるlogging.xml
ファイルの一部を示しています。例の中で、oracle.adf.faces
のログが、より多くのメッセージを表示するためにFINE
に変更されていることに注意してください。
</logging_configuration> ... <loggers> <logger name="oracle.adf" level="INFO"/> <logger name="oracle.adf.faces" level="FINE"/> <logger name="oracle.adf.controller" level="INFO"/> <logger name="oracle.bc4j" level="INFO"/> <logger name="oracle.adf.portal" level="INFO"/> <logger name="oracle.vcr" level="INFO"/> <logger name="oracle.portlet" level="INFO"/> <logger name="oracle.adfinternal" level="INFO"/> <logger name="oracle.adfdt" level="INFO"/> <logger name="oracle.adfdtinternal" level="INFO"/> </loggers> </logging_configuration>
Javaロギング・システムの各種レベルの最新情報は、http://www.oracle.com/technetwork/java/index.html
を参照してください。通常、Javaロギング・システムでは次のログ・レベルがサポートされます。
SEVERE (最も制限された最高のログ・レベル)
WARNING
INFO
CONFIG (Oracle ADFに対してサポートされる最高のログ・レベル)
FINE
FINER
FINEST (最も制限の少ない最低のログ・レベル)
デフォルトでは、ロガーは階層的なので、別のロガーの子であるロガーは、その親のログ・レベルを継承するため、予想外に大きなログ出力を生成することがあります。このため、Oracle Diagnostic Logging Configurationのエディタでロガーを有効化する場合、親ロガーのログ・レベルと子ロガーのログ・レベルを別々に設定することをお薦めします。これは、メモリー・リークなどの条件を診断するのに便利な設定FINE
、FINER
、FINEST
を使用する場合、詳細なログ・メッセージが有用なので、特に重要です。
たとえば、メモリー・リークをデバッグする場合、oracle.adf.share.ADFContext
ロガーをFINEST
に設定することが考えられます。この設定は、子oracle.adf.share.ADFContext.allocationLogger
ロガーを自動的に起動させるため、ログ出力ファイルに、割当てバッファ超過条件が生じることがあります。このため、メモリー・リークを修正するために必要なメッセージを有効にする解決策は、親レベルをFINEST
にする一方で、子ロガーをINFO
に下げることです。
<logger name="oracle.adf.share.ADFContext" level="FINE"/> <logger name="oracle.adf.share.ADFContext.allocationLogger" level="INFO"/>
Fusion WebアプリケーションをOracle WebLogic Serverにデプロイした後で、アプリケーションによって実行される処理は、そのアプリケーションが実行している管理対象サーバーの次のファイルに直接ロギングされます。
DOMAIN_HOME/servers/
server_name
/logs/
server_name
-diagnostic.log
別の管理対象サーバーのログ・ファイルも、Oracle WebLogic Server管理コンソールで使用できます。ログを表示するには、Oracle WebLogic Server管理コンソールhttp://<admin_server_host>:<port>/console
にアクセスして、「診断」→「ログ・ファイル」をクリックします。
このログの粒度とロギング・プロパティは、Oracle Enterprise Manager Fusion Middleware Control (Fusion Middleware Control)を使用して変更できます。Fusion Middleware Controlは、ファームのモニターおよび管理に使用できる、Webブラウザベースのグラフィカル・ユーザー・インタフェースです。
Fusion Webアプリケーションが高可用性環境にデプロイされたとき、レベルをFINE
に設定すると、高可用性に関する警告診断メッセージを受け取ることがあります。
Fusion Middleware Controlを使用して管理対象サーバーとOracle ADFのログ設定を変更する方法の詳細は、『Oracle Fusion Middlewareの管理』のODLメッセージおよびODLログ・ファイルについてに関する項を参照してください。
Oracle ADFモデル・テスターを使用して、カスタム・ユーザー・インタフェースの構築を開始する前でもADFビジネス・コンポーネントをテストおよび検証できます。
Oracle ADFモデル・テスター(またはテスターとも呼ばれます)は、ADFビジネス・コンポーネント・データ・モデル・プロジェクトのビジネス・オブジェクトを操作するときにJDeveloperから起動するJavaアプリケーションです。Oracle ADFモデル・テスターはJDeveloper外部で実行し、データ・モデル・プロジェクトのテストと調査のための総合的なUIを提供します。このテスターを実行すると、ADFアプリケーション・モジュールのビュー・インスタンスの調査、ビュー・リンクの階層構造のナビゲート、アプリケーション・モジュールのクライアント・インタフェース、ビュー・オブジェクト・インタフェースおよびビュー行インタフェースからのカスタム・メソッドの実行ができます。テスターをADF宣言デバッガと一緒に使用して、これらのインタフェースのカスタム・メソッドにブレークポイントを設定することもできます。
さらに、テスターではユーザー・インタフェースの多くの機能がシミュレートされます。アプリケーション・モジュールの構成ファイル(bc4j.xcfg
)で指定されたデータベースのビジネス・オブジェクトの内容を表示、挿入および更新できます。特に、ビュー・インスタンスのマスター・ディテール関係、ビュー・インスタンスとその属性、ビュー・インスタンスの問合せ結果セット、ビュー基準を使用する検索フォーム、属性値に対して定義される検証規則、LOV(値リスト)定義属性のドロップダウン・リストなど、データ・モデル設計の様々な要素を確認できます。テスターと対話してビジネス・オブジェクトをテストする方法の詳細は、「Oracle ADFモデル・テスターを使用したビュー・オブジェクト・インスタンスのテスト」を参照してください。Oracle ADFモデル・テスターでのテストの詳細は、このマニュアルの「ビジネス・サービスの構築」の部内の章の、各ビジネス・オブジェクト固有の項にも記載されています。
多くの場合、クライアント・インタフェース実装クラスのサービス・メソッドでカスタム・コードを分析およびデバッグできると便利です。Oracle ADFモデル・テスターを使用すると、ユーザー・インタフェースでアプリケーションを実行せずに、これらができます。デバッグ・プロセスを補完するテスト・ツールとしてOracle ADFモデル・テスターを使用できます。
注意:
デバッグ・モードで実行するOracle ADFモデル・テスターはJDeveloper IDE Javaオプションを継承しません。特定の実行/デバッグJavaオプションがテスターで使用されるようにするには、データ・モデル・プロジェクトに対する実行構成を編集する必要があります。デフォルトの実行構成は、「プロジェクト・プロパティ」ダイアログの「実行/デバッグ」ページで変更できます。
始める前に:
実行時テスト・ツールの使用方法に関する知識が役立つ場合があります。詳細は、「テストとデバッグのためのOracle ADFモデル・テスターの使用」を参照してください。
次のタスクを完了する必要があります。
『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「Javaプロジェクトの実行およびデバッグ」の章の説明に従って、使用する実行構成に対する適切なJavaオプションを設定します。
「ADF宣言ブレークポイントの設定」の説明に従い、クライアント・インタフェースのカスタム・メソッドにブレークポイントを設定します。
Oracle ADFモデル・テスターを起動してデバッグ・モードにするには:
「アプリケーション」ウィンドウでアプリケーション・モジュールを右クリックし、「実行」または「デバッグ」を選択すると、JDeveloperがアプリケーション・モジュールに定義されるデフォルト構成を使用してOracle ADFモデル・テスターを実行します。ビジネス・コンポーネントを別のアプリケーション・モジュール構成(異なるデータソースおよび独自のランタイム・パラメータのセットを指定できる)でテストする場合は、bc4j.xcfg
ファイルの概要エディタで行うことができます。このファイルは「アプリケーション」ウィンドウには表示されず、アプリケーション・モジュールの概要エディタの「構成」ページからのみアクセスできます。
特定のアプリケーション・モジュール構成を使用してOracle ADFモデル・テスターを実行するには:
Oracle ADFモデル・テスターは他のJavaプログラムと同じように動作します。具体的には、JDeveloper IDEに対して指定されたJavaオプションは継承しません。テスターはデータ・モデル・プロジェクトに対して指定された実行構成およびその構成内に設定されたJavaオプションをかわりに使用します。
JDeveloperではOracle ADFモデル・テスターを2つのモード(デバッグ・モードまたは非デバッグ・モード)で実行できます。テスターをデバッグ・モードで実行すると、ADF宣言デバッガと連動して、クライアント・インタフェースのカスタムJavaコードおよびGroovyスクリプトに挿入したブレークポイントを使用してカスタム・メソッドを実行します。たとえば、クライアント・インタフェースでメソッドにブレークポイントを設定し、そのメソッドをテスターでデバッグ・モードで実行すると、コードをステップ実行できます。その後、テスターによって成功または失敗の結果が返されます。非デバッグ・モードでは、テスターは、メソッドが正常に実行されたかどうかを示す結果をすぐに返します。また、テスターは、デバッグ・モードでも非デバッグ・モードでも、アプリケーション・モジュールに対して実行時に作成されたシステム・カタログの実行時アーティファクトを表示できます。
Oracle ADFモデル・テスターを実行するが、ADF宣言デバッガを使用する必要がない場合は、実行時アーティファクトの情報をアプリケーション・モジュールのシステム・カタログから表示できます。システム・カタログによってビジネス・オブジェクト・メタデータとその他の情報が表示されます。これはビジネス・オブジェクトを比較する必要があるときに役立ちます。
デバッグせずにOracle ADFモデル・テスターを起動するには:
Oracle ADFモデル・テスターは、非常に対話型のツールです。テスターを実行しているときに、データ・モデル・プロジェクトの変更が必要であるとわかると、JDeveloperに戻って必要なアプリケーション・モジュール・インスタンスを編集し、変更内容を表示するようにOracle ADFモデル・テスターのデータ・モデルをリフレッシュできます。このように、変更内容を確認するためにテスターを再実行する必要はありません。
Oracle ADFモデル・テスターにアプリケーション・メタデータを再ロードするには:
ADF宣言デバッガでは、タスク・フロー・アクティビティ、ページ定義バインディング、ページ定義実行可能ファイル、およびJavaソース・コードにもブレークポイントを配置できます。デバッグの実行中にブレークポイントで一時停止されると、ターゲット指定された複数の新しいウィンドウにより、ADFアプリケーション開発者はADFランタイム・オブジェクトに基づくアプリケーションを詳細かつ直感的に理解できます。
ADF宣言デバッガで提供される宣言ブレークポイントは、カスタムJavaコードおよびGroovyスクリプトの標準ブレークポイントと同様に、ADFオブジェクト・レベル(タスク・フロー、ページ定義実行可能ファイル、メソッドとアクションのバインディング、ADFライフサイクル・フェーズなど)に設定できます。ADF宣言ブレークポイントにより、ADFアプリケーションをデバッグするために概要レベルのオブジェクト・ビューが提供されます。たとえば、図48-11のようにタスク・フロー・アクティビティの前にブレークすると、タスク・フローに渡されるパラメータを確認できます。Javaブレークポイントだけを使用して同じ機能を実行するには、ブレークポイントを設定するクラスまたはメソッドを認識する必要があります。ADFアプリケーションではADF宣言ブレークポイントを使用することをお薦めします。
ADF宣言デバッガも、標準のJavaコード・ブレークポイントをサポートします。どのADFアプリケーションにもJavaコード・ブレークポイントを設定できます。ADF宣言ブレークポイントが必要な場所でブレークしないとき、場合によってはJavaコード・ブレークポイントを使用できます。
ADF宣言デバッガはJavaデバッガ上に構築されているので、機能と動作はJavaデバッガと同様です。ただ、Javaのクラスやメソッドを知らなくても、ビジュアル・エディタでADF宣言ブレークポイントを設定することができます。
ADF宣言デバッガでは、変数やスタック・データの調査など標準デバッグ機能が提供されます。アプリケーションが任意のブレークポイント(ADF宣言ブレークポイントまたはJavaコード・ブレークポイント)で一時停止するときに、様々なウィンドウを使用してアプリケーションのステータスを調べることができます。「ブレークポイント」ウィンドウで、ブレークが発生した箇所を確認することができます。「スタック」ウィンドウを使用して、現在のスレッドのコール・スタックを確認することができます。「スタック」ウィンドウで行を選択すると、「データ」ウィンドウ、「監視」ウィンドウおよびすべての「インスペクタ」ウィンドウが更新され、関連データが表示されます。「データ」ウィンドウを使用すると、アプリケーションの引数、ローカル変数および静的フィールドを表示できます。
「ADF構造」ウィンドウには、プロジェクトの実行時構造が表示されます。「ADFデータ」ウィンドウでは、「ADF構造」ウィンドウの選択内容に基づいて、表示する情報が自動的に変更されます。たとえば、タスク・フロー・ノードが選択されている場合は、図48-12に示すように、ADFデータ・ウィンドウにはタスク・フローに関連したデバッグ情報が表示されます。
デバッグ・セッションでは、必要に応じてADF宣言ブレークポイントと標準のJavaおよびGroovyブレークポイントを混用することができます。ステップ機能を使用すると、あるJavaコード・ブレークポイントから別のJavaコード・ブレークポイントにアプリケーションを進めることができますが、ADF宣言ブレークポイントのステップ機能には、より多くの制約と制限事項があります。ADF宣言ブレークポイントでのステップ機能の使用の詳細は、表48-3を参照してください。
ADF宣言ブレークポイントの使用方法の詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
クラスとメソッドでのJavaブレークポイントの使用方法の詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。
JSFアプリケーション(Fusion Webアプリケーションを含む)で、ブレークポイントでブレークしたとき、ELエバリュエータを使用してEL式の値を調べることができます。ELエバリュエータには、評価する正しい式の選択を支援するブラウズ機能があります。「EL式エバリュエータの使用」を参照してください。
ADF宣言ブレークポイントと標準のJavaおよびGroovyブレークポイントのどちらを使用するかをあらかじめ決めておかなくても、Oracle ADFソース・コードに対してADF宣言デバッガを使用できます。Oracle ADFソース・コードはデバッグ・ライブラリで入手できます。ソース・コードのロード方法の詳細は、「デバッガでのADFソース・コードの使用」を参照してください。
有効なOracle ADFサポートがある場合、Oracle Worldwide Supportでサービス・リクエストをオープンし、Oracle ADFの完全なソース・コードを取得できます。Oracle ADFのソース・コードは、特定のバージョンのものをリクエストできます。ソース・コードのZIPファイルを復号化するためのダウンロードおよびパスワード情報が与えられます。詳細は、Oracle Worldwide Supportに問い合せてください。
アプリケーションのデバッグ・セッションにOracle ADFソース・コードへのアクセスを追加すると、次のことが可能になります。
ソース・エディタ内でJDeveloper Quick Javadoc機能にアクセスできます。ソース・コードがない場合は、標準のJavadocのみの使用となります。
Javaコード・ブレークポイントは、ブレークポイントに到達したときに実行されているOracleソース・コードを表示するためにも使用できます。ブレークするソース・コード行の余白をクリックすることで、ブレークポイントをより簡単に設定することもできます。ソース・コードがない場合、Oracleコード内にブレークポイントを設定するには、クラス、メソッド、または行番号を調べる必要があります。
ソース・コード内に設定されたJavaコード・ブレークポイントの場合は、デバッガですべてのローカル変数およびメンバー・フィールドの値を表示できます。
ADFソース・コードのZIPファイルは、出荷の際にはコンテンツ保護のために暗号化された外部ZIP内に置かれます。外部ZIPファイルの名前は、サービス・リクエスト番号のバリアントであることがあります。
外部ZIPアーカイブ・ファイルの受信またはダウンロード後は、供給されるパスワードを使用して解凍し、実際のソース・コードのZIPファイルにアクセスします。ADFソース・コードのZIPファイル名は、Oracle ADFバージョン番号およびビルド番号のバリアントである必要があります。たとえば、Oracle ADFのソースZIPファイルは、adf_
vvvv
_nnnn
_source.zip
のような形式であり、ここでvvvv
はバージョン番号、nnnn
はビルド番号を示しています。
Oracle ADFソース・コードのZIPファイルにアクセスし、次にそのコンテンツを作業ディレクトリに解凍します。
ソース・ユーザー・ライブラリの名前を作成し、それをソースZIPファイルに関連付けます。
ADFソースZIPファイルをユーザー・ライブラリに追加するには:
使用可能なユーザー・ライブラリのリストへソース・ライブラリを追加した後、デバッグするプロジェクトにソース・ライブラリを追加します。
ADFソースZIPファイルをプロジェクトに追加するには:
アプリケーションがブレークポイントで一時停止したら、EL式エバリュエータを使用して、評価するEL式を入力します。評価するEL式は、現在のコンテキストの範囲内で任意に入力することができます。EL式が現在のコンテキストの範囲に収まらない場合、値はnull
と評価されます。
ELエバリュエータは、後続のデバッグ手順で停止されるときでなく、ブレークポイントで停止されるときにのみEL評価が発生する点で、「監視」ウィンドウと異なります。
ELエバリュエータは、あらゆるJSFアプリケーションのデバッグで利用できます。
注意:
EL式を評価するときは、アプリケーションのデータ、つまりアプリケーションの動作を間接的に変更しないように注意してください。たとえば、#{foo.bar}
を評価する場合、対応するgetBar()
メソッドによってアプリケーション・データが変更されます。
始める前に:
ADF宣言デバッガに関する知識が役立つ場合があります。詳細は、「ADF宣言デバッガの使用」を参照してください。
次のタスクを完了する必要があります。
ELエバリュエータを使用するには:
通常、問題を判断できず、自分で解決できない場合には、他の人に支援を求めます。OTN JDeveloper Discussion Forumに質問を投稿する場合、またはMetalinkでサービス・リクエストをオープンする場合、支援しようとしている他のユーザーが問題の発生箇所を正確に理解するためには、スタック・トレース情報を投稿内容に含めることが非常に重要です。
JDeveloperの「スタック」ウィンドウを使用すると、この情報を伝えるときに役立ちます。デバッガが一時停止したときは常に、「スタック」ウィンドウで、現在行までのメソッド・コールのスタックとしてプログラム・フローを確認できます。「プリファレンス」ダイアログを使用して、「スタック」ウィンドウのプリファレンスを設定し、デフォルトで組み込まれているクラスやメソッドの名前のように、行番号情報を組み込むことができます。最後に、「スタック」ウィンドウのポップアップ・メニュー・オプション「エクスポート」を使用すると、現在のスタック情報を外部テキスト・ファイルに保存できます。その後、問題の診断を支援してくれる人にファイルの内容を投稿または送信できます。
始める前に:
ADF宣言デバッガに関する知識が役立つ場合があります。詳細は、「ADF宣言デバッガの使用」を参照してください。
次のタスクを完了する必要があります。
スタック情報をテキスト・ファイルに保存するには:
ADF宣言デバッガ機能を使用して、タスク・フロー・アクティビティ、ページ定義バインディング、ページ定義実行可能ファイル、Javaソース・コードなどにブレークポイントを宣言的に設定できます。
ADFタスク・フロー・アクティビティ、ページ定義実行可能ファイル、メソッド、アクションおよび値のバインディング、ADFライフサイクル・フェーズ、コンテキスト・イベント上でブレークポイントを宣言的に設定するには、JDeveloperでADF宣言デバッガ機能を使用します。メソッド名とクラス名などのADFコードのすべての内部構造体を知らなくても、最高抽象レベルでオブジェクトにブレークポイントを設定することができます。
タスク・フロー・ダイアグラマでタスク・フロー・アクティビティにブレークポイントを追加できます。あるいは、「ブレークポイント」ウィンドウでADFタスク・フロー・アクティビティ・ブレークポイントの作成ダイアログを起動できます。タスク・フロー・ダイアグラマでタスク・フロー・アクティビティを選択し、ポップアップ・メニューを使用してそのアクティビティのブレークポイントの有効/無効を切り替えるか、[F5]キーを押します。アプリケーションがブレークポイントで停止すると、「ADF構造」ウィンドウに、オブジェクトの実行時構造がツリー構造で表示されます。「ADFデータ」ウィンドウには、「ADF構造」ウィンドウで選択されたオブジェクトのデータのリストが表示されます。
たとえば、Browse Ordersタスク・フローのタスク・フロー・コール・アクティビティにブレークポイントを設定すると、図48-16に示すように、コール・アクティビティに赤い点のアイコンが表示されます。
ブレークポイントに到達すると、図48-17に示すように、アプリケーションが一時停止され、アイコンが変化します。
同様に、ページ定義ファイルでBeforeブレークポイントとAfterブレークポイントを設定することができます。項目の横の左余白または右余白をクリックするかまたはポップアップ・メニューから選択して、サポートされる値バインディング(サポートされる値バインディングのリストについては表48-1を参照)および実行可能ファイルに対してブレークポイントを設定します。左余白をクリックするとBeforeページ定義ブレークポイントが追加され、右余白をクリックするとAfterページ定義ブレークポイントが追加されます。この場合も、図48-18に示すように、ブレークポイントを示す赤い点アイコンが設定されます。
ページ定義ファイルでも、図48-19に示すように、ページまたはページ内のリージョンによって実行時に発生するコンテキスト・イベントにブレークポイントを設定できます。
すべてのADFライフサイクル・フェーズにもBeforeブレークポイントとAfterブレークポイントを設定できます。図48-20に示すようにブレークポイント・ウィンドウでADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログを起動できます。
図48-20 ブレークポイント・ウィンドウの「ブレークポイントの追加」アイコンのドロップダウン・メニュー
ADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログでは、様々なライフサイクル・ブレークポイントのオプションを選択できます(図48-21)。
または、「ADF構造」ウィンドウの「ADFライフサイクル・ブレークポイント」ダイアログまたはタスク・フロー・ダイアグラマを使用して、ADFライフサイクル・フェーズ・ブレークポイントを設定します。ADFライフサイクル・フェーズの詳細は、「Fusionページ・ライフサイクルの理解」を参照してください。
ADF宣言デバッガを使用する場合、ADF宣言ブレークポイントとJavaコード・ブレークポイントの両方を定義することができます。デバッグ・シナリオによっては、宣言ブレークポイントのみを設定すればアプリケーションをデバッグできることもあります。あるいは、宣言的でないJavaコードで追加のブレークポイントを追加する必要が生じることもあります。Javaコード・ブレークポイントの詳細は、「クラスおよびメソッド上にJavaブレークポイントを設定する方法」を参照してください。表48-1に、使用可能なADF宣言デバッガ・ブレークポイントの場所をリストします。
表48-1 ADF宣言デバッガ・ブレークポイント
ADF面 | ブレークポイント型 | 挿入場所 | JDeveloperポップアップ・メニュー・コマンド | 説明 |
---|---|---|---|---|
ADFライフサイクル・フェーズ |
ADFライフサイクル・フェーズの前 ADFライフサイクル・フェーズの後にブレーク |
「ADF構造」ウィンドウの「ADFライフサイクル・ブレークポイント」ツールバー・ボタン タスク・フロー・ダイアグラマ 「ブレークポイント」ウィンドウの「追加」ボタン |
BeforeブレークポイントはADFライフサイクル・フェーズの前にデバッグを一時停止します。 AfterブレークポイントはADFライフサイクル・フェーズの後でデバッグを一時停止します。 ADFライフサイクルのJSFレスポンス・レンダリング・フェーズとレンダリング準備フェーズのBeforeブレークポイントとAfterブレークポイントは、次の順序で実行されます。
|
|
ADFページ定義 - バインディングおよび実行可能ファイル |
実行可能ファイルの前/後にブレーク:
|
ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「実行可能ファイル」セクション 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
実行可能ファイルがリフレッシュする前または後にデバッグを一時停止します。タスク・フロー・バインディングの場合、1ライフサイクルにつき2回あり、最初は |
アクション・バインディングの前/後にブレーク:
|
ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
バインディングが実行される前または後にデバッグを一時停止します。 |
|
属性値バインディングの前/後にブレーク |
ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
属性の |
|
表バインディングの前/後にブレーク |
ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
ADF階層バインディングの |
|
ツリー・バインディングの前/後にブレーク |
ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
次の2つのケースのいずれかで一時停止します。 1. ツリーでノードの選択を実行している場合、ADF階層バインディングの 2. ツリーを開いている場合、ADFツリー・コレクション・モデルの |
|
ADFページ定義 - コンテキスト・イベント |
コンテキスト・イベントの前/後にブレーク |
ページ定義の概要エディタの「コンテキスト・イベント」タブ、「イベント」セクション 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
イベントがディスパッチされる前またはイベントの後に、イベントのサブスクライバによってイベントが使用される直前にデバッグを一時停止します。 |
ADFタスク・フロー |
アクティビティの前にブレーク |
タスク・フロー・ダイアグラマ 「ブレークポイント」ウィンドウの「追加」ボタン |
「ブレークポイントの設定」または[F5] ブレークポイントの無効化 |
JSFアプリケーション起動フェーズ内でアクティビティが実行する前にデバッグを一時停止します。宣言ブレークポイントが定義されているアクティビティは未実行です。例外はビュー・アクティビティです。ビュー・アクティビティが実行された後で、新しいページがレンダリングする前に、JSFレスポンス・レンダリング・フェーズ内で一時停止します。このポイントで一時停止することにより、「ADF構造」ウィンドウと「ADFデータ」ウィンドウを使用してビュー・アクティビティ値を検査できます。 |
ADF宣言デバッガは、ADF宣言ブレークポイントのステータスの設定、切り替えおよび表示のために、標準デバッガのアイコンと表記法を使用します。
設定されたADF宣言ブレークポイントは、図48-22、図48-23、図48-24および図48-25に示すように、タスク・フロー・アクティビティ、ページ定義のブレークポイント余白、「ADFライフサイクル・ブレークポイント」ウィンドウに、赤い点のアイコンとして表示されます。
図48-24 ページ定義ファイルのコンテキスト・イベントの有効化されたADF宣言ブレークポイント
図48-25 ADFライフサイクル・ブレークポイント・ウィンドウで有効化されたADFライフサイクル・フェーズ・ブレークポイント
ADFタスク・フローまたはページ定義の宣言ブレークポイントを無効にすると、図48-26に示すように、赤いアイコンがグレーのアイコンになります。
アクティブなADFタスク・フロー宣言ブレークポイントでは、図48-27に示すように、赤いアイコンに緑のチェックマークが付きます。
アプリケーションがADF宣言ブレークポイントで一時停止すると、図48-28に示すように、実行ポイントのアイコンが表示されます。
アプリケーションがADFライフサイクル宣言ブレークポイントで一時停止すると、図48-29に示すように、「ADFライフサイクル・ブレークポイント」ウィンドウのライフサイクル・フェーズの横に実行ポイントのアイコンが表示されます。現在のADFライフサイクル・フェーズの名前は「ADF構造」ウィンドウにも表示されます。
ブレークポイント・ウィンドウには、ADF宣言ブレークポイントを含むすべてのブレークポイントが表示されます(図48-30)。
図48-30 ブレークポイント・ウィンドウでのADF宣言ブレークポイントとJavaコード・ブレークポイントの表示
ブレークポイント・ウィンドウのツールバーには、図48-30に示すようにブレークポイントの追加、編集、削除、有効化、無効化のためのボタンが含まれます。「ブレークポイントの追加」アイコン・ドロップダウン・メニューには、ADFコンテキスト・イベント・ブレークポイント、ADFライフサイクル・フェーズ・ブレークポイント、ADFページ定義ブレークポイント(ADFバインディングおよび実行可能ファイル用)、ADFタスク・フロー・アクティビティ・ブレークポイントおよび標準Javaコード・ブレークポイントの作成および管理を行う機能があります。
「ブレークポイント」ウィンドウを使用して、対応するソース・ファイル内のADF宣言ブレークポイントの場所を表示できます。
コンテキスト・イベント・ブレークポイントをダブルクリックし、対応するページ定義ファイルの概要エディタを開きます。次に「コンテキスト・イベント」タブをクリックして、ブレークポイントの場所を表示できます。
ADFライフサイクル・フェーズ・ブレークポイントをダブルクリックし、すべてのADFライフサイクル実行ポイントを表示する「ADFライフサイクル・ブレークポイント」ウィンドウを開きます。
タスク・フロー・アクティビティ・ブレークポイントをダブルクリックし、対応するタスク・フローのタスク・フロー・ダイアグラマを開きます。
ADFバインディング・ブレークポイントをダブルクリックし、対応するページ定義ファイルの概要エディタを開きます。
デバッガがブレークポイントを処理する方法を管理するために、「ブレークポイント」ウィンドウに表示される個々のブレークポイントの「ADFブレークポイントの編集」を開くことができます。または、複数のADF宣言ブレークポイントを選択し、共通フィールドの動作をカスタマイズできます。
表48-2に、「ブレークポイント」ウィンドウの「説明」列や「タイプ」列に表示されるADF宣言ブレークポイントを示します。
表48-2 「ブレークポイント」ウィンドウでのADF宣言ブレークポイントの表示
宣言ブレークポイントの型 | 「説明」列 | 「タイプ」列 |
---|---|---|
コンテキスト・イベントの前/後 |
ページ定義@イベント名の前 ページ定義@イベント名の後 |
コンテキスト・イベント・ブレークポイント |
ADFライフサイクル・フェーズの前 |
adfライフサイクル・フェーズの前 |
ADFライフサイクル・フェーズ・ブレークポイント |
ADFライフサイクル・フェーズの後 |
adfライフサイクル・フェーズの後 |
ADFライフサイクル・フェーズ・ブレークポイント |
ページ定義実行可能ファイルの前/後:
|
page definition@executable idの前 ページ定義@実行可能ファイルidの後 |
ページ定義実行可能ファイル・ブレークポイントの前 |
ページ定義アクション・バインディングの前/後:
|
page definition@binding idの前 ページ定義@バインディングidの後 |
ページ定義バインディング・ブレークポイントの前 |
ページ定義属性値バインディングの前/後 |
page definition@binding idの前 ページ定義@バインディングidの後 |
ページ定義バインディング・ブレークポイントの前 |
ページ定義表バインディングの前/後 |
page definition@binding idの前 ページ定義@バインディングidの後 |
ページ定義バインディング・ブレークポイントの前 |
ページ定義ツリー・バインディングの前/後 |
page definition@binding idの前 ページ定義@バインディングidの後 |
ページ定義バインディング・ブレークポイントの前 |
ADFタスク・フロー・アクティビティの前 |
task flow document#task flow id@activity idの前 |
タスク・フロー・アクティビティ・ブレークポイント |
表48-3に、ADF宣言ブレークポイントとともに使用できるステップ・コマンドをリストします。
表48-3 ADF宣言デバッガのステップ・コマンド
ADFデバッガのステップ・コマンド | 説明 |
---|---|
実行ポイントの検索 |
宣言ブレークポイントで、開いておりアクティブな現在の実行ポイントを対応するエディタに表示できるようにする。 |
ステップ実行([F8]) |
タスク・フロー・アクティビティ宣言ブレークポイントで、タスク・フロー内でアクティビティからアクティビティにステップできるようにする。ユーザーとの対話処理が必要とされる場合(ページが表示される場合など)、これを受け取ると(ボタンが選択された場合など)処理を再開し、次のタスク・フロー・アクティビティの前で一時停止する。 ページ定義実行可能ファイルのブレークポイントに対応します。アプリケーションが、次のページ定義実行可能ファイル・ブレークポイントにステップします。 ADFライフサイクル・フェーズ宣言ブレークポイントが、ADFライフサイクル・フェーズの次のBeforeまたはAfterの位置にステップできるようにします。 |
トレース実行([F7]) |
タスク・フロー・コール・アクティビティ上で定義されているタスク・フロー・アクティビティ宣言ブレークポイントでのみ使用できます。タスク・フロー・アクティビティ宣言ブレークポイントは、アクティビティの実行直前でアプリケーションを一時停止します。トレース実行機能では、コールされたタスク・フローのデフォルト・アクティビティを実行する直前でデバッグを一時停止できます。このアクションは、コールされたタスク・フローのデフォルトのアクティビティ上に、タスク・フロー・アクティビティ宣言ブレークポイントを配置することと同じである。 |
ステップ・アウト([Shift]+[F7]) |
タスク・フロー・アクティビティ宣言ブレークポイントで、現在コールされているタスク・フローからステップ・アウトして、コール元(存在する場合)へ戻すことができるようにする。ユーザーとの対話処理が必要とされる場合(ページが表示される場合など)、ユーザーとの対話処理を受け取ると(ボタンが選択された場合など)処理を再開し、コール元タスク・フロー内の、次のユーザーとの対話処理またはアクティビティの前で一時停止する。 |
ステップ続行([Shift]+[F8]) |
宣言ブレークポイントではサポートされない。 |
メソッドの最後まで実行 |
宣言ブレークポイントではサポートされない。 |
カーソルまで実行 |
宣言ブレークポイントではサポートされない。 |
フレームに戻る |
Javaコード用であるため、宣言ブレークポイントでは使用できません。前の実行ポイントに戻ることはできません。 |
タスク・フローチャートの作成後は、タスク・フロー・アクティビティ上にADF宣言ブレークポイントを設定することができます。
始める前に:
ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
タスク・フロー・アクティビティ上にブレークポイントを設定するには:
タスク・フロー・ダイアグラマでタスク・フローを開くか、「ブレークポイント」ウィンドウで「追加」アイコンをクリックし、「ADFタスク・フロー・アクティビティ・ブレークポイント」を選択します。
「ブレークポイント」ウィンドウが表示されていない場合は、メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
タスク・フロー・アクティビティ・ブレークポイントを設定します。
タスク・フロー・ダイアグラマを使用する場合は、右クリックしてポップアップ・メニューから「ブレークポイントの設定」を選択するか、[F5]を押します。
タスク・フロー・アクティビティ上にブレークポイント・アイコンが表示されます。
「ブレークポイント」ウィンドウでADFタスク・フロー・アクティビティ・ブレークポイントの作成ダイアログを起動した場合は、「参照」をクリックしてタスク・フロー定義を選択し、「タスク・フロー」ドロップダウン・リストからタスク・フローを選択し、「アクティビティ」ドロップダウン・リストからタスク・フロー・アクティビティを選択し、「OK」をクリックします。
必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。
メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
「ブレークポイント」ウィンドウで、構成するタスク・フロー・アクティビティ・ブレークポイントを選択し、「編集」アイコンをクリックします。
ADFタスク・フロー・アクティビティ・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。
「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。
たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。
次のいずれかの方法で、デバッグ・プロセスを開始します。
メイン・メニューで、「実行」→「<project_name>のデバッグ」を選択します。
「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml
、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。
タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。
アプリケーションがブレークポイントで一時停止されると、タスク・フロー・アクティビティ上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査できます。
注意:
「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。
タスク・フロー・アクティビティ宣言ブレークポイントは、タスク・フロー・アクティビティの実行直前でアプリケーションを一時停止します(ビュー・アクティビティを除く)。
デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
「ADF構造」ウィンドウでノードを選択し、「ADFデータ」ウィンドウに関連情報を表示します。
タスク・フロー・アクティビティ宣言ブレークポイントは、タスク・フロー・アクティビティの実行直前でアプリケーションを一時停止します。「トレース実行」(F7)機能を使用すると、コールされたタスク・フローのデフォルト・アクティビティを実行する直前に、アプリケーションを一時停止できます。
必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、「トレース実行」(F7)です。
アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。
ページ定義に実行可能ファイルがある場合は、その実行可能ファイルの前または後でアプリケーションを一時停止するブレークポイントを設定できます。たとえば、イテレータがリフレッシュされるときにアプリケーションを一時停止するブレークポイントを設定できます。
注意:
ビュー・オブジェクト問合せが実行された後でアプリケーションを一時停止するAfterイテレータ・ブレークポイントを設定している場合、アプリケーションがこのブレークポイントで複数回一時停止することに注意してください。また、問合せが実行されなかったときにも、このブレークポイントでアプリケーションが一時停止する可能性があります。問合せが実行されたかどうかを把握する必要がある場合は、関連するADFビジネス・コンポーネントを「ADF構造」ウィンドウで選択して、「ADFデータ」ウィンドウで対応するデータを確認します。これらのウィンドウの使用方法の詳細は、「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
ビュー・オブジェクト問合せ実行でのJavaコード・ブレークポイントの使用方法の詳細は、「Oracle ADFブレークポイントに関する必知事項」を参照してください。
始める前に:
ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
ページ定義ファイルの実行可能ファイル上にブレークポイントを設定するには:
「アプリケーション」ウィンドウで、ブレークポイントを設定する実行可能ファイルを含むページ定義ファイルをダブルクリックします。
概要エディタの「バインディングと実行可能ファイル」タブをクリックし、「実行可能ファイル」リストで実行可能ファイルを選択し、項目の左側にあるブレークポイント余白をクリックします。
項目の隣にある余白にブレークポイント・アイコンが表示されます。
必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。
メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
「ブレークポイント」ウィンドウで、構成する実行可能ファイル・ブレークポイントを選択し、「編集」アイコンをクリックします。
ADFページ定義バインディング・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。
「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。
たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。
次のいずれかの方法で、デバッグ・プロセスを開始します。
メイン・メニューで、「実行」→「<project_name>のデバッグ」を選択します。
「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml
、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。
タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。
アプリケーションがブレークポイントで一時停止されると、実行可能項目のブレークポイント・アイコンの隣にある余白に、「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。
Executablesバインディングがリフレッシュされると、アプリケーションが一時停止します。taskFlow実行可能ファイルの場合、prepareModel
およびprepareRender
ライフサイクルで一時停止が発生します。
注意:
「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣の「実行ポイント」アイコン(赤い右矢印)を確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。
デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。
アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。
ページ定義ファイルで、アクション・バインディング上およびmethodAction
バインディング上にブレークポイントを設定することができます。バインディングが実行されると、アプリケーションが一時停止します。
始める前に:
ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
ページ定義ファイルのアクション・バインディング上にブレークポイントを設定するには:
「アプリケーション」ウィンドウで、ブレークポイントを設定するバインディングを含むページ定義ファイルをダブルクリックします。
概要エディタの「バインディングと実行可能ファイル」タブをクリックし、「バインディング」リストでmethodAction
バインディングまたは組込み操作項目を選択し、項目の左側にあるブレークポイント余白をクリックします。
項目の隣にブレークポイント・アイコンが表示されます。
必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。
メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
「ブレークポイント」ウィンドウで、構成するアクション・バインディング・ブレークポイントを選択し、「編集」アイコンをクリックします。
ADFページ定義バインディング・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。
「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。
たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。
次のいずれかの方法で、デバッグ・プロセスを開始します。
メイン・メニューで、「実行」→「<project_name>のデバッグ」を選択します。
「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml
、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。
タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。
アプリケーションがブレークポイントで一時停止されると、アクション・バインディング項目上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。
バインディングが実行されると、アプリケーションが一時停止します。
注意:
「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。
デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。
アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。
ページ定義に次のいずれかの値バインディングがある場合、アプリケーションを一時停止するブレークポイントを設定できます。
属性値バインディング
ツリー値のバインディング
表の値のバインディング
始める前に:
ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
ページ定義ファイルの値バインディング上にブレークポイントを設定するには:
「アプリケーション」ウィンドウで、ブレークポイントを設定するバインディングを含むページ定義ファイルをダブルクリックします。
概要エディタの「バインディングと実行可能ファイル」タブをクリックし、「バインディング」リストで属性、ツリーまたは表のバインディングを選択し、項目の左側にあるブレークポイント余白をクリックします。値バインディングの隣にブレークポイント・アイコンが表示されます。
必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。
メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
「ブレークポイント」ウィンドウで、構成するバインディング・ブレークポイントを選択し、「編集」アイコンをクリックします。
ADFページ定義バインディング・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。
「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。
たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。
次のいずれかの方法で、デバッグ・プロセスを開始します。
メイン・メニューで、「実行」→「<project_name>のデバッグ」を選択します。
「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml
、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。
タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。
アプリケーションがブレークポイントで一時停止されると、属性値バインディング上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。
表48-1に示すように、ADFソース・コード実行の適切なメソッドの前でアプリケーションが一時停止します。新しい値は、このメソッドに入るパラメータになります。
注意:
「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。
デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。
必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、ステップ実行(F8)です。
アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。
ページ定義がコンテキスト・イベントを定義している場合、コンテキスト・イベント上にブレークポイントを設定し、アプリケーションを一時停止できます。
始める前に:
ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
ページ定義ファイルのコンテキスト・イベント上にブレークポイントを設定するには:
「アプリケーション」ウィンドウで、ブレークポイントを設定するバインディングを含むページ定義ファイルをダブルクリックします。
概要エディタの「コンテキスト・イベント」タブをクリックし、「イベント」リストからコンテキスト・イベントを選択し、項目の左側にあるブレークポイント余白をクリックします。コンテキスト・イベントの隣にブレークポイント・アイコンが表示されます。
必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。
メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
「ブレークポイント」ウィンドウで、構成するコンテキスト・イベント・ブレークポイントを選択し、「編集」アイコンをクリックします。
ADFコンテキスト・イベント・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。
「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。
たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。
次のいずれかの方法で、デバッグ・プロセスを開始します。
メイン・メニューで、「実行」→「<project_name>のデバッグ」を選択します。
「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml
、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。
タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。
アプリケーションがブレークポイントで一時停止されると、コンテキスト・イベント上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。
コンテキスト・イベントが発生する前にアプリケーションが一時停止します。
注意:
「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。
デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。
必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、ステップ実行(F8)です。
アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。
ADFライフサイクル・フェーズのBeforeブレークポイントとAfterブレークポイントを任意のADFライフサイクル・フェーズに設定できます。各フェーズに、Beforeのみ、Afterのみ、または両方を設定できます。必要な数のフェーズにブレークポイントを設定できます。
「ブレークポイント」ウィンドウのメニューからADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログを使用し、ブレークポイントを作成して、オプションをカスタマイズできます。または、「ADFライフサイクル・ブレークポイント」ウィンドウを使用してデフォルト・オプションのブレークポイントを作成できます。ライフサイクル・ブレークポイントを設定した後で、「ブレークポイント」ウィンドウから開始できるADFライフサイクル・フェーズ・ブレークポイントの編集ダイアログを使用してオプションを編集できます。
ADFライフサイクル・ブレークポイントは次に示す任意のADFライフサイクル・フェーズに設定できます。
JSFのビューのリストア
コンテンツの初期化
モデルの準備
JSFのリクエスト値の適用
JSFの検証処理
JSFのモデル値の更新
モデル更新の検証
JSFのアプリケーションの起動
メタデータのコミット
レンダリング準備
JSFのレスポンス・レンダリング
始める前に:
ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
「ブレークポイント」ウィンドウでADFライフサイクル・フェーズ・ブレークポイントを設定または管理するには:
メイン・メニューで、「ウィンドウ」→「ブレークポイント」を選択します。
「ブレークポイント」ウィンドウで、「追加」→「ADFライフサイクル・フェーズ・ブレークポイント」を選択します。
ADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログの「定義」タブで、次の手順を実行します。
ブレークポイントを設定するADFライフサイクル・フェーズを選択します。
「フェーズの前」または「フェーズの後」のブレークポイントを選択します。
「条件」タブで必要なオプションを選択し、「OK」をクリックします。
「アクション」タブで必要なオプションを選択し、「OK」をクリックします。
ブレークポイント・アイコンを使用してADFライフサイクル・フェーズ・ブレークポイントを設定するには:
「アプリケーション」ウィンドウで、任意のタスク・フローの構成ファイルをダブルクリックし、概要エディタで「ダイアグラム」タブをクリックします。
タスク・フロー・ダイアグラマのツールバーまたは「ADF構造」ウィンドウのタイトル・バーで、ADFライフサイクル・ブレークポイントのアイコン(図48-31)をクリックします
図48-31 ADFライフサイクル・ブレークポイントのアイコン
「ADFライフサイクル・ブレークポイント」ウィンドウで、ADFライフサイクル・フェーズの左余白をクリックしてBeforeブレークポイントを設定し、右余白をクリックしてAfterブレークポイントを設定します。図48-32に示すように、ブレークポイントを示す赤い点アイコンが設定されます。このブレークポイントはデフォルトのブレークポイント・オプションで設定されます。ブレークポイントを削除するには赤い点アイコンをクリックします。
ブレークポイント・オプションを編集する場合は、「ブレークポイント」ウィンドウでブレークポイントを選択し、「編集」アイコンをクリックします。
ADFライフサイクル・フェーズ・ブレークポイントを使用してアプリケーションをデバッグするには:
アプリケーションがブレークポイントで停止すると、「ADF構造」ウィンドウに、アプリケーション内でのADFランタイム・オブジェクトやその相互関係がツリー構造として表示されます。特に、メイン・ブラウザ・ウィンドウまたは含まれているリージョンやポートレットを表現する、ビュー・ポートの階層が表示されます。「ADF構造」ウィンドウで各種の項目を選択すると、対応する「ADFデータ」ウィンドウに表示される関連情報が変化します。「ADFデータ」ウィンドウの詳細は、「ADFデータ・ウィンドウの使用方法」を参照してください。
次のどちらかがtrueのとき、デバッグ・セッションでは、デフォルトで「ADF構造」ウィンドウと「ADFデータ」ウィンドウが表示されます。
デバッグしているプロジェクトに、WEB-INF/adfc-config.xml
ファイルが含まれる。
デバッグしているプロジェクトに、ADF Facesタグ・ライブラリが含まれる。
「ADF構造」ウィンドウを開くには、メイン・メニューから「ウィンドウ」→「デバッガ」→「ADF構造」を選択します。「ADF構造」ウィンドウでADFライフサイクル・ブレークポイントのアイコンを使用して、「ADFライフサイクル・ブレークポイント」ウィンドウを開きます。
ブレークポイントに到達すると、図48-34に示すように、「ADF構造」ウィンドウにADFライフサイクル・フェーズとランタイム・オブジェクトのツリー構造が表示されます。
「ADF構造」ウィンドウで項目を選択すると、その項目に関連付けられているデータと値が「ADFデータ」ウィンドウに表示されます。図48-35に、「ADF構造」ウィンドウで選択されたタスク・フローと、ADFデータ・ウィンドウに表示された関連情報を示します。
階層のルートは、兄弟ノードである「スコープ」と「ADFコンテキスト」です。処理が停止した現在のビュー・ポートは、太字で表示されます。ツリー内のデフォルトの選択内容は前のブレークポイントから保持されるため、ブレークポイント間での変化を監視することができます。ADF宣言ブレークポイントが定義されているADFオブジェクトは、対応するJDeveloperエディタ(タスク・フロー・ダイアグラマ、またはページ定義ファイルの概要エディタ)で開かれます。
「ADF構造」ツリーは、変更されたオブジェクト状態を反映するため、アプリケーションがブレークするたびに、また後続のステップでも再ビルドされます。全体のツリー階層が表示されますが、選択したり、さらに調査したりできるのは、現在のビュー・ポートとその親ビュー・ポートの範囲内の項目のみです。現在のコンテキストにない、ツリー階層の他のすべての項目は、淡色表示され、無効にされます。また、この階層を使用して、アプリケーションの範囲内でのランタイム・オブジェクト間の関係を特定することもできますが、現在のコンテキスト(およびその親のビュー・ポート)に限定されます。
表48-4に、「ADF構造」ウィンドウの階層ツリーに表示できる、各種の項目を示します。
表48-4 「ADF構造」ウィンドウの項目
「ADF構造」ツリーの項目 | 説明 |
---|---|
スコープ |
ADF構造階層の一番上で兄弟ノードの「ADFコンテキスト」よりも上に表示されます。ADF構造階層には「スコープ」ノードは1つしかありません。「スコープ」ノードを展開すると、子スコープ・ノード(viewScopeやpageFlowScopeなど)のリストが表示されます。子スコープ・ノードを選択すると、「ADFデータ」ウィンドウにそのスコープの変数と値が表示されます。 |
ADFコンテキスト |
ADF構造階層のルート・ノードとして、兄弟ノードの「スコープ」の下に表示されます。ADF構造階層内にはADFコンテキストは1つのみ存在する。 |
ビュー・ポート |
ビュー・ポートは、ADF Controllerの概念。このため、デバッグしているアプリケーションがADF Controllerを利用するときだけ、ADF構造階層の範囲内でビュー・ポートが表示される。 ビュー・ポートは、次のいずれかを表現可能。
|
ADFタスク・フロー |
各ビュー・ポートに対応するページ・フロー・スタックは、ADFタスク・フローの階層として表示されます。スタックに対応してコールされる最初のADFタスク・フローは、対応するビュー・ポートの直接の子である。各ADFタスク・フローのラベルは、対応するADFタスク・フロー表示名(存在する場合)、またはそのタスク・フローIDを反映する。リージョン・ビュー・ポートには、内包されたバインドなしタスク・フローのためのページ・フロー・スタック階層内の項目は表示されません。タスク・フローにも、ADFタスク・フロー・パスを表示するツールチップと、エディタ・ワークスペース内の、対応するADFタスク・フローを開くポップアップ・メニュー項目が用意されている。 アプリケーションがADF Controllerを利用しない場合(またはページがADFタスク・フローのコンテキストの外部で実行される場合)、ADFタスク・フローは階層内に表示されない。 |
ページ |
ブラウザ・ビュー・ポート内で現在表示されているページ(ビュー)を表します。関連付けられたバインディング・コンテナ(ある場合)と一緒に子として示されます。デバッグしているアプリケーションがADFコントローラを利用する場合、ページは各ブラウザ・ビュー・ポートの子です。各ページのラベルは、対応するランタイム・ビューIDを反映する。ページにも、ページ・パスを表示するツールチップと、エディタ・ワークスペース内の、対応するページを開くポップアップ・メニュー項目が用意されている。アプリケーションでビジュアル・ユーザー・インタフェースが実装されていない場合、ページは階層内に表示されない。 |
ページ・フラグメント |
リージョン・ビュー・ポート内で現在表示されているページ・フラグメントを表す。関連付けられたバインディング・コンテナ(ある場合)と一緒に子として示されます。デバッグしているアプリケーションがADF Controllerを利用する場合、ページ・フラグメントは各リージョン・ビュー・ポートの子である。各ページ・フラグメント・ノードのラベルは、対応するランタイム・ビューIDを反映する。ページ・フラグメントにも、ソース・ファイル・ページ定義パスを表示するツールチップと、エディタ・ワークスペース内の、対応するページ・フラグメントを開くポップアップ・メニュー項目が用意されています。 |
バインディング・コンテナ |
対応するページまたはページ・フラグメントのバインディング・コンテナを表す。各バインディング・コンテナのラベルは、対応するファイル名(ページ定義ファイル)から拡張子を除いたものを反映する。バインディング・コンテナ・ノードにも、ページ・フラグメント・パスを表示するツールチップが用意されています。タスク・フロー・アクティビティ・バインディング(たとえば、メソッド・コール・アクティビティ・バインディング)を表すために使用される場合は、バインディング・コンテナも現在のタスク・フローの下に表示される。 アプリケーションでADFモデルが利用されない場合、バインディング・コンテナは表示されない。 |
アプリケーション・データ |
対応するビュー・ポート(または、ADFコントローラが使用されない場合はバインディング・コンテナ)のデータ・コントロール・フレーム内でインスタンス化されたアプリケーション・データ・オブジェクト(ADFビジネス・コンポーネント・オブジェクトまたはADFビジネス・コンポーネント・ビジネス・サービス・オブジェクトなど)を表します。現在、アプリケーション・データ・ノードを表示するために、アプリケーション・データ・オブジェクトをインスタンス化する必要はありません。 |
アプリケーションがADF宣言ブレークポイントで一時停止されるとき、「ADFデータ」ウィンドウには、「ADF構造」ウィンドウ内での選択内容に基づく関連データが表示されます。「ADFデータ」ウィンドウを開くには、メイン・メニューから「ウィンドウ」→「デバッガ」→「ADFデータ」を選択します。「ADF構造」ウィンドウでの選択内容に基づく「ADFデータ」ウィンドウの内容を、表48-5に示します。
表48-5 「ADF構造」ウィンドウの選択内容に対応するADFデータ・ウィンドウの内容
「ADF構造」ウィンドウ | ADFデータの内容 |
---|---|
スコープ |
現在のコンテキストに基づくメモリー・スコープ値が表示されます。 |
ADFコンテキスト |
ADFコンテキストの変数と値の階層が表示されます。 |
ビュー・ポート |
|
ページ・フロー・スタック・エントリ |
現在のトランザクション・ステータスやADFモデル・セーブポイント・ステータスなど、選択されているページ・フロー・スタック・エントリの情報が表示されます。 |
ページ/ページ・フラグメント |
ページまたはページ・フラグメントがレンダリングされた場合は、選択されたページまたはページ・フラグメントに対応する、ページまたはページ・フラグメントUIコンポーネント・ツリー階層が表示される。 |
バインディング・コンテナ |
パラメータ、バインディング、実行可能ファイルなど、バインディング・コンテナの実行時値が表示されます。 |
アプリケーション・データ |
現在のバインディング・コンテキストでインスタンス化されたアプリケーション・データ・オブジェクト(たとえばADFビジネス・コンポーネント・オブジェクト)が表示されます。ビジネス・サービス・レイヤーがADFビジネス・コンポーネント・オブジェクト(たとえばEJB)以外のテクノロジで実装されている場合、アプリケーション・データ・オブジェクトはより一般的な形式で表示されます。 |
「ADF構造」ウィンドウの「スコープ」ノードを展開すると、子スコープ・ノードのリストが表示されます。「ADF構造」ウィンドウで子スコープ・ノードを選択すると、「ADFデータ」ウィンドウに、選択したメモリー・スコープの現在のコンテキスト値が表示されます(図48-36)。
「スコープ」ノードそのものを選択した場合は、メモリー・スコープすべてのリストが「ADFデータ」ウィンドウにも表示されます。このリストも検査のために展開できます。図48-37では、「ADF構造」ウィンドウで「スコープ」ノードが選択され、ADFデータ・ウィンドウではviewScope子ノードが選択されて値が表示されています。requestScope
、viewScope
、pageFlowScope
、applicationScope
およびsessionScope
に対応する各ノードを展開して値を検査できます。pageFlowScope
も、ADFタスク・フローの内容に表示され、「ADF構造」ウィンドウで現在選択されているADFタスク・フロー固有の値を反映します。viewScope
も、ビュー・ポートの内容に表示され、「ADF構造」ウィンドウで現在選択されている特定のビュー・ポートの値を反映します。
図48-38のように「ADF構造」ウィンドウで「ADFコンテキスト」が選択されると、ADFコンテキスト変数の現在の値がADFデータ・ウィンドウに表示されます。#(data.adfContext)
EL式をELエバリュエータで評価して、ADFコンテキストの変数と値を検査することもできます。詳細は、「EL式エバリュエータの使用」を参照してください。
ADF構造階層内でビュー・ポートを選択すると、図48-39に示すように、そのビュー・ポートの現在のビュー・ポート詳細がADFデータ・ウィンドウに表示されます。各ビュー・ポートで表示される値の概要を、表48-6に示します。
表48-6 ビュー・ポートに対応するADFデータ・ウィンドウの内容
ビュー・ポート | 説明 |
---|---|
ビュー・ポートID |
表示されます |
クライアントID |
表示されます |
初期タスク・フローID |
ビュー・ポート・ページ・フロー・スタック上の初期ADFタスク。バインドなしタスク・フローの場合は表示されません。対応するタスク・フロー定義をエディタ・ワークスペースで開くためのリンクとして表示される。 |
現在のタスク・フローID |
バインド・タスク・フローでは表示され、バインドなしタスク・フローでは表示されません。ビュー・ポートのページ・フロー・スタック上の現在のADFタスク。対応するタスク・フロー定義をエディタ・ワークスペースで開くためのリンクとして表示される。 |
ビュー・アクティビティID |
現在のADFタスク・フロー・ビュー・アクティビティID。現在のADFタスク・フロー・アクティビティがビュー・アクティビティである場合のみ適用される。 |
発行済アクティビティID |
現在のリクエストを発行しているADFタスク・フロー・アクティビティ。 |
最終アクティビティID |
現在のリクエストを受け取っているADFタスク・フロー・アクティビティ。 |
未処理のブックマーク・リダイレクト |
(ブール) |
例外 |
(存在する場合) |
ビュー・メモリー・スコープ |
選択したビュー・ポートのビュー・メモリー・スコープ変数と値。 |
「ADF構造」ウィンドウでは、ページ・フロー・スタック階層内の各ADFタスク・フローを選択できます。「ADF構造」ウィンドウでADFタスク・フローを選択すると、現在のタスク・フロー情報がADFデータ・ウィンドウに表示されます(図48-40)。選択したADFタスク・フローで使用されるタスク・フロー・テンプレートを判別するには、ADFタスク・フロー・ソース・ファイルに手動でナビゲートします。これは、Javaソース・ファイルで同様の機能を処理する方法と似ています。選択されたADFタスク・フローの現在の情報を表48-7に示します。
表48-7 タスク・フローに対応するADFデータ・ウィンドウの内容
タスク・フロー | 説明 |
---|---|
ADFタスク・フローの参照 |
ADFタスク・フローの参照 |
タスク・フロー・コール・アクティビティID |
コール元タスク・フローのタスク・フロー・アクティビティID。各ビュー・ポート・タスク・フローの「コール」ウィンドウ内の最初のADFタスク・フローでは |
ビュー・アクティビティIDのコール中 |
ADFタスク・フロー(存在する場合)によって表示されている現在の表示アクティビティのコール元表示アクティビティ。 |
ビュー到達済 |
(ブール) |
トレイン・モデル |
現在のADFタスク・フロー・アクティビティがビュー・アクティビティである場合のみ適用される。 |
トランザクション開始済 |
(ブール)ADFタスク・フローのトランザクション状態の現行ステータスを特定する。たとえば、ADFタスク・フローが、新しいトランザクションを開始したかどうか。 |
トランザクション共有 |
(ブール)ADFタスク・フローのトランザクション状態の現行ステータスを特定する。たとえば、ADFタスク・フローが、既存のトランザクションに結合されたかどうか。 |
セーブポイント |
ADFタスク・フローのADFモデル・セーブポイント作成状態の現行ステータスを特定します。たとえば、モデル・セーブポイントが、ADFタスク・フロー・エントリ上に作成されたか。 |
リモート・タスク・フロー・コール済 |
(ブール) |
リモート・タスク・フロー・リターンURL |
ADFタスク・フローをリモートからコールする場合にのみ適用される。リモートからコールされたタスク・フローが完了したときに戻すURLを特定する。 |
データ・コントロール・フレーム作成済 |
(ブール) |
データ・コントロール・フレーム |
ADFタスク・フローに関連付けられたデータ・コントロール・フレームの名前。 |
ページ・フロー・メモリー・スコープ |
展開できるノードとして表示されます。「ADF構造」ウィンドウで選択されたタスク・フローのページ・フロー・メモリー・スコープの値を検査できます。 ページ・フロー・メモリー・スコープは、「ADF構造」ウィンドウの「スコープ」ノードにも表示されます。ただし、「スコープ」ノードのページ・フロー・メモリー・スコープは、常にアプリケーションの現在のコンテキストに対応し、選択されているタスク・フローには対応していません。 |
ADF構造階層でページまたはページ・フラグメント・ノードを選択すると、図48-41に示すように、対応するUIコンポーネント・ツリーがADFデータ・ウィンドウに表示されます。ページまたはページ・フラグメントがページ・テンプレートに基づいている場合、ページ・テンプレートに由来する内容をファセット参照項目の外部に組み込むことができます。これには、「ADFデータ」ウィンドウの一番上で「ページ・テンプレート・コンテンツを含める」チェックボックスを選択します。ページ・テンプレートの内容が組み込まれない場合、ページまたはページ・フラグメントのUIコンポーネント・ツリーはソース・ファイルのツリーと似た構造になります。
ADF構造階層でバインディング・コンテナを選択すると、表48-8に示すノードの選択肢がADFデータ・ウィンドウに表示されます。
表48-8 バインディング・コンテナに対応するADFデータ・ウィンドウの内容
バインディング・コンテナ | 説明 |
---|---|
ページ定義リンク |
対応するページ定義ソース・ファイルに移動して、エディタ・ワークスペースで開く。 |
データ・コントロール |
バインディング・コンテナのデータ・コントロールが表示されます。 ADFビジネス・コンポーネント・オブジェクトよって実装されたデータ・コントロールと非ADFビジネス・コンポーネント・オブジェクトによって実装されたデータ・コントロールの表示は少し異なります。ADFビジネス・コンポーネント・ベースのデータ・コントロールの表示は、行コレクションを使用する実際のビジネス・サービス実装と似ています。非ADFビジネス・コンポーネント・ベースのデータ・コントロールは、通常、RAWメンバー変数として表示されます。これはADF宣言デバッガの「データ」ウィンドウに表示される項目と似ています。「ADFデータ」ウィンドウには、メンバー変数や配列など、キャッシュされた情報しか表示されません。標準デバッガ機能を使用して、各項目をカスタマイズすることもできます。 各ADFビジネス・コンポーネント・データ・コントロールについて次の情報が表示されます。
|
パラメータ |
すべてのバインディング・コンテナ・パラメータの現在の値。 |
実行可能ファイル |
実行可能ファイルが表示され、現在行のインジケータと、現在と元の値(同じリクエスト内で変更された場合)が示されます。これには次のタイプの実行可能ファイルが含まれます。
|
バインディング |
値、表、ツリーおよびメソッドのバインディングが表示されます。各バインディングには次の情報が含まれます。
|
ページ・テンプレートのバインディング・コンテナ |
対応するページまたはページ・フラグメントがページ・テンプレートを利用していた場合、ページ・テンプレートのバインディング・コンテナは、ページまたはページ・フラグメント・バインディング・コンテナの内容の子として表示されます。 |
非ADFビジネス・コンポーネント・オブジェクトに基づくアプリケーションのバインディング・コンテナを選択すると、「ADFデータ」ウィンドウにバインディング・コンテナの内容が表示されます(図48-1)。
図48-42 バインディング・コンテナ(非Business Components)が選択された「ADFデータ」ウィンドウ
ADFビジネス・コンポーネント・オブジェクトに基づくアプリケーションのバインディング・コンテナを選択すると、「ADFデータ」ウィンドウに標準の行コレクション・アイコンが表示されます(図48-2)。
図48-43 バインディング・コンテナ(ビジネス・コンポーネント)が選択されたADFデータ・ウィンドウ
ADFデータ・ウィンドウの「パラメータ」ノードを展開すると、図48-44のように情報が表示されます。
ADFデータ・ウィンドウの「実行可能ファイル」ノードを展開すると、図48-45のように情報が表示されます。
値が変更された場合、変更された項目は左側に青い点が付いてマークされ、以前の値がカッコ内に表示されます。たとえば、OrderTotal
の値が7895.81から7670.11に変更されたとします。「ADFデータ」ウィンドウでは、OrderTotal
と親のOrdersView1Iterator
の横に青い点が表示され、「値」列に現在の値と前の値が表示されます(図48-46)。
メソッドのバインディング情報はADFデータ・ウィンドウで図48-47のように表示されます。
「ADF構造」ウィンドウで「アプリケーション・データ」ノードを選択すると、対応するビュー・ポート(または、ADFコントローラが使用されない場合はバインディング・コンテキスト)の現在のデータ・コントロール・フレーム内でインスタンス化されたアプリケーション・オブジェクト(ADFビジネス・コンポーネント・オブジェクトなど)が、ADFデータ・ウィンドウに表示されます。
ADFビジネス・コンポーネント・オブジェクトで実装されたビジネス・サービスによって、図48-48のようにアプリケーション・データの内容が表示されます。これは表48-9で説明します。
表48-9 アプリケーション・データに対応するADFデータ・ウィンドウの内容
バインディング・コンテナ | 説明 |
---|---|
アプリケーション・モジュール |
対応するビュー・ポートのデータ・コントロール・フレームのアプリケーション・モジュールが、アプリケーション・データ階層にルート・ノードとして表示されます。アプリケーション・モジュールの設計時のアイコンによってノードが示されます。アプリケーション・モジュール・ノードでは次の情報が提供されます。
|
ビュー・オブジェクト |
対応するビュー・ポートのデータ・コントロール・フレーム内でインスタンス化されたビュー・オブジェクトが、対応するアプリケーション・モジュール・ルート・ノードの下に下位ノードとして表示されます。設計時のアイコンによって示されます。子ビュー・オブジェクトは、親ビュー・オブジェクトの下位階層に表示されます。名前付き行セットはビュー・オブジェクトと同様に表示されます。ビュー・オブジェクトの名前付きイテレータは子ビュー・オブジェクトと同様に表示されます。各ビュー・オブジェクト・ノードでは次の情報が提供されます。
|
エンティティ・オブジェクト |
対応するビュー・ポートのデータ・コントロール・フレーム内でインスタンス化されたエンティティ・オブジェクトが、アプリケーション・モジュール・ルート・ノードの下に下位ノードとして表示されます。設計時のアイコンによって示されます。各エンティティ・オブジェクト・ノードでは次の情報が提供されます。
|
非ADFビジネス・コンポーネント・オブジェクトによって実装されたビジネス・サービスでは、アプリケーション・データの内容がRAWメンバー変数を使用して表示されます。この形式は、図48-42に示す、バインディング・コンテナに関する非ADFビジネス・コンポーネントの内容の表示と似ています
ADF宣言ブレークポイントを設定すると、ADFソースJavaコード内の対応する適切なクラス、メソッドまたは他の構造体に、JDeveloperによってブレークポイントが追加されます。コードにブレークポイントが設定されると、アプリケーションがブレークポイントに到達したときに、標準Javaデバッガ・メカニズムによって実行が一時停止されます。ブレークポイントに到達すると、「ブレークポイント」ウィンドウにおいて赤い点のアイコンで示されます。到達した宣言ブレークポイントのタイプに応じて、タスク・フロー・アクティビティ、ページ定義ブレークポイント余白、または「ADFライフサイクル・ブレークポイント」ウィンドウでも、赤い点のアイコンとして示されます。
タスク・フロー・アクティビティ・ブレークポイントの場合、JSFアプリケーション起動フェーズ内で、ブレークポイントが設定されたアクティビティの前にアプリケーションがデバッガによって一時停止されます。つまり、ブレークポイントが設定されているアクティビティは実行されません。
ただし、タスク・フロー・ビュー・アクティビティの場合、アプリケーションは、ビュー・アクティビティが実行された後で、新しいページがレンダリングする前に、JSFレスポンス・レンダリング・フェーズ内で一時停止します。
ページ定義の実行可能ファイルのBeforeブレークポイントの場合、実行可能ファイルがリフレッシュされるとアプリケーションがデバッガによって一時停止されます。ページ定義のアクション・バインディングのBeforeブレークポイントの場合、バインディングが実行されるとアプリケーションがデバッガによって一時停止されます。ページ定義の属性値バインディングのBeforeブレークポイントの場合、ADFソース・コードの属性のsetInputValue()
メソッドが実行される前に、アプリケーションがデバッガによって一時停止されます。
ライフサイクルのBeforeブレークポイントの場合、アプリケーションが次のライフサイクル・フェーズに入る前にデバッガによって一時停止されます。ライフサイクルのAfterブレークポイントの場合は、ライフサイクル・フェーズの後で次のフェーズの前にアプリケーションがデバッガによって一時停止されます。
大部分のADFアプリケーションでは、宣言ブレークポイントから、アプリケーション・エラーのトラブルシューティングに十分な情報を得ることができます。ただし、詳細な調査のために、個別のクラスまたはメソッド上にブレークポイントを設定する必要がある状況があります。Javaコード・ブレークポイントとGroovyスニペット・ブレークポイントをADF宣言ブレークポイントと組み合せて使用すると、これらのエラーを識別できます。
標準的なJavaコード・デバッガと同様に、ADF宣言デバッガを使用してJavaのクラスおよびメソッド上にブレークポイントを設定することができます。Javaコード・ブレークポイントとGroovyスニペット・ブレークポイントは、ADF宣言ブレークポイントと組み合せて使用できます。大部分のADFアプリケーションでは、ADF宣言ブレークポイントから、アプリケーションのトラブルシューティングに十分なデバッグ情報を得ることができます。ADF宣言ブレークポイントの使用の詳細は、「ADF宣言ブレークポイントの設定」を参照してください。ただし、詳細な調査のために、個別のクラスまたはメソッド上にブレークポイントを設定する必要があることがあります。あるいは、非ADFアプリケーションをデバッグする場合に、Javaコード・ブレークポイントを使用できます。
JDeveloperでは、ブレークするクラスを見つけるためのクラス・ロケータ機能が提供されます。Oracle ADFソース・コードを取得できる場合、様々なADFクラスおよびメソッドにアクセスして、デバッグの効率を上げることができます。ADFソース・コードの取得の詳細は、「デバッガでのADFソース・コードの使用」を参照してください。ADFソースを取得すると、「シンボリック・デバッグでデバッグ・ライブラリを使用する方法」で説明するように、ADFソースのデバッグ・ライブラリ・バージョンを使用してデバッグの効率を上げることができます。
Groovyスクリプトを使用して検証ルールまたは属性のデフォルト値を定義する場合は、これらのGroovyスニペットにブレークポイントを設定できます。
始める前に:
ADF宣言ブレークポイントでなくコード・ブレークポイントを使用する場合について理解しておくと役立ちます。詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。
Groovyスニペット・ブレークポイントを設定してアプリケーションをデバッグする手順:
「アプリケーション」ウィンドウで、ブレークポイントを設定するGroovyスクリプトを含むエンティティ・オブジェクトまたはビュー・オブジェクトを展開して、オブジェクトの.bcs
ファイルをダブルクリックします。
ソース・エディタで、該当する行の横の余白をクリックしてブレークポイントを設定し、デバッガを実行します。
アプリケーションがブレークポイントで停止したら、「データ」ウィンドウを使用して、現在のコンテキストのローカル変数および引数を調べることができます。
クラスおよびメソッド上にJavaブレークポイントを設定できます。ADFソース・コードがある場合、ソースにもJavaブレークポイントを設定することができます。ADFアプリケーションをデバッグしている場合、Javaコード・ブレークポイントでなくADF宣言ブレークポイントを使用することができないか確認することをお薦めします。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
始める前に:
ADF宣言ブレークポイントでなくJavaコード・ブレークポイントを使用する場合について理解しておくと役立ちます。詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。
次のタスクを完了する必要があります。
Javaブレークポイントを設定してアプリケーションをデバッグするには:
ヒント:
データ、監視または「スマート・データ」ウィンドウで「ソースへ移動」ポップアップ・メニュー・コマンドを使用している場合、「戻る」ボタンを使用することにより実行ポイントに戻ることができます。「ナビゲート」メニューを使用して「戻る」ボタンにアクセスすることもできます。
アプリケーションを一時停止するブレークポイントをキー・ポイント上に設定した後は、「データ」ウィンドウにデータを表示できます。WebページとADFモデル・レイヤーの対話を効率的にデバッグするには、次のことを理解する必要があります。
ADFページのライフサイクルと、起動されるメソッド・コール
アプリケーションの処理過程でADFモデル・レイヤーに含まれる必要のあるローカル変数および引数
Oracle ADFの処理を理解しておくことは、ブレークポイントを選択的に設定し、アプリケーションによりロードされたデータを調べ、エラーの要因を特定するための手がかりとなります。
注意:
JSF Webページでは、ページのコンポーネントとデータの間の対話を管理するためにバッキングBeanを使用している場合もあります。他のJavaクラス・ファイルと同様に、ブレークポイントを設定してバッキングBeanをデバッグします。
ADFソース・ライブラリをプロジェクトに追加すると、ソース・エディタで使用可能になる有用なQuick JavaDoc機能([Ctrl]+[D])([Ctrl]+[D])にアクセスできるようになります。図48-49に、findSessionCookie()
などのメソッドのためのQuick Javadoc機能を示します。
ADFソース・コードをロードした後、Javaコードと同じ方法で、現在のプロジェクトに対するOracle ADFコードをデバッグできます。つまり、[Ctrl]+[-]キーを押してOracle ADFで任意のクラス名を入力すると、JDeveloperによってそのソース・ファイルが自動的に開かれるため、必要に応じてブレークポイントを設定できます。
Oracle ADFソース・コードをデバッグする際、デフォルトでは現在実行中のメソッドのパラメータまたはメンバー変数の記号情報は表示されません。
たとえば、ADFソース・コード・デバッグ・ライブラリのないデバッグ・セッションでは、図48-50に示すように、「_slot」など認識できない名前があることがあります。
これらの名前はわかりにくいため、デバッグが困難になります。開発環境でデバッグする場合、ソースとともに提供されるADF JARファイルのデバッグ・バージョンを使用することにより、デバッグを容易にできます。
注意:
通常、提供されたデバッグ・ライブラリは、JDeveloperに同梱されている最適化されたJARファイルに比べ、実行時パフォーマンスがわずかに劣るため、テスト環境または本番環境では使用しないでください。
デバッグ・ライブラリJARは、デバッグ情報を追加してコンパイルされたバージョンのOracle ADF JARファイルです。デフォルトの最適化されたJARファイルでなく、これらのデバッグ用JARを使用すると、デバッガにすべての情報が表示されます。たとえば、図48-51に示すように、変数evid
の名前が、デバッガで確認できるようになります。
始める前に:
ADF宣言ブレークポイントでなくJavaコード・ブレークポイントを使用する場合について理解しておくと役立ちます。詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。
次のタスクを完了する必要があります。
標準ライブラリJARをデバッグ・ライブラリJARに置き換えるには:
最初に、様々なJavaコード・ブレークポイントとそれを作成する場所を理解する必要があります。
デバッガの「ブレークポイント」ウィンドウを表示するには、メイン・メニューで「ウィンドウ」→「ブレークポイント」を選択するか、[Ctrl]、[Shift]、[R]を同時に押します。
「ブレークポイント」ウィンドウで、ポップアップ・メニューから「ブレークポイントの作成」を選択することで、新規のJavaコード・ブレークポイントを作成できます。表48-10に示すように、「ブレークポイント型」ドロップダウン・リストでは、作成するブレークポイントの種類をコントロールします。
注意:
「ブレークポイントの作成」ダイアログを使用して、ADFライフサイクル・フェーズ宣言ブレークポイントを作成することもできます。ADF宣言ブレークポイントの作成の詳細は、「ADFライフサイクル・フェーズ・ブレークポイントの設定方法および使用方法」を参照してください。
表48-10 様々な型のJavaブレークポイント
ブレークポイント型 | ブレークポイントが発生する条件 | 用途 |
---|---|---|
例外 |
このクラス(またはサブクラス)の例外がスローされる場合。 |
例外ブレークポイントは、例外がどこで発生するかわからないが、例外の種類(たとえば、 |
ソース |
特定のパッケージで特定クラスの特定ソース行を実行する場合。 |
「ブレークポイントの作成」ダイアログでソース・ブレークポイントを作成することはほとんどありません。「ナビゲート」→「Javaタイプに移動」メニュー([Ctrl]を押しながら[-]を押す)を使用した後、必要な行番号までスクロールしてから(または「ナビゲート」→「指定行に移動」([Ctrl]を押しながら[G]を押す))、ブレークする行の左のブレークポイント余白をクリックする方法が簡単なためです。これは、新規のソース・ブレークポイントの作成と同じですが、パッケージ、クラスおよび行番号を手入力する必要がありません。 |
メソッド |
指定されたクラスのメソッドが起動する場合。 |
メソッド・ブレークポイントは、問題のデバッグ中にコール・スタックで表示される、特定のメソッドにブレークポイントを設定するのに便利です。ソース・ブレークポイントを設定できるソースがそのクラスにある場合でも、この種のブレークポイントでは、クラスに対するソースがない場合もデバッガで停止します。 |
クラス |
指定されたクラスのメソッドのいずれかが起動する場合。 |
クラス・ブレークポイントは、問題に関連するクラスのみが判明している場合に使用できますが、停止のための厳密なメソッドではありません。この種のブレークポイントはソースを必要としません。「参照」ボタンにより、ブレークするクラスの完全修飾名を迅速に検索できます。 |
監視ポイント |
指定されたフィールドがアクセスまたは変更される場合。 |
監視ポイント・ブレークポイントは、クラス内部のコードが複数の異なる場所からメンバー・フィールドを直接変更する場合の問題の検出に使用できます。任意のフィールドが変更される際にデバッガを一時停止できます。クラスのソースのメンバー・フィールドを指し示し、ポップアップ・メニューから「監視ポイントの設定」メニュー項目を使用すると、このタイプのブレークポイントを作成できます。 |
Javaコード・ブレークポイントの作成後は、ブレークポイントを右クリックして、ポップアップ・メニューから「編集」を選択すると、「ブレークポイント」ウィンドウでブレークポイントを編集できます。
注意:
「ブレークポイントの編集」ダイアログを使用して、ADF宣言ブレークポイントを編集することができます。ただし、他の一部の情報、たとえば「定義」タブの情報などは編集できません。「ブレークポイント」ウィンドウで、ポップアップ・メニューから「編集」を選択することで、「ブレークポイントの編集」ダイアログを起動することができます。ADF宣言ブレークポイントの作成の詳細は、「ADF宣言ブレークポイントの設定」を参照してください。
ブレークポイントの編集で使用できる機能は次のとおりです。
このブレークポイントをグループ化する、論理ブレークポイント・グループ名を、同じグループ名の他のグループに関連付けます。ブレークポイント・グループは、1つの操作でブレークポイントのセット全体を簡単に有効化または無効化できます。
ブレークポイントをヒットしたときに、デバッガ・アクションをブレークポイントに関連付けます。デフォルト・アクションでは、アプリケーションの状態を調査できるようにデバッガを停止しますが、警告音の追加、ログ・ファイルへの情報の書込み、ブレークポイントのグループの有効化または無効化も可能です。
条件が合う場合にのみデバッガを停止するよう、条件式をブレークポイントに関連付けます。次のように、ほとんどすべてのブール式が可能です。
expr
==
value
expr
.equals("
value
")
expr
instanceof.
fully.qualified.ClassName
注意:
デバッガの「監視」ウィンドウを使用して、まず式を評価してその式が有効であるか確認します。
デバッガを使用して、あらゆるクラスに対して、デバッガ・ウィンドウに表示されるメンバーをフィルタすることができます。デバッガの「データ」ウィンドウで任意のアイテムを選択し、ポップアップ・メニューから「プリファレンス」を選択すると、デバッガに表示されるメンバーと表示されないメンバー(場合によっては重要)をカスタマイズできるダイアログが表示されます。クラス・タイプを基準にフィルタすることで、デバッガの「データ」ウィンドウで必要になるスクロールの量を減らすことができます。これは特に、クラスのメンバーの少数のみに関連する場合に役立ちます。
Oracle ADFソース・コードをロードした場合、表48-11にリストされているブレークポイントを使用してアプリケーションをデバッグできます。
これらのブレークポイントをヒットした際に「スタック」ウィンドウを参照してソースを確認することで、現状をよりよく把握することができます。
表48-11 よく使用されるADFブレークポイント
ブレークポイント | ブレークポイント型 | 用途 |
---|---|---|
|
例外 |
このブレークポイントは、すべてのADFビジネス・コンポーネントの実行時例外のベース・クラス上にブレークポイントを設定するために便利です。 |
|
例外 |
これは、トリガーまたは制約違反によって発生する例外が原因で失敗したDML操作など、データベースから生じる例外のベース・クラスです。 |
|
メソッド |
同じデバッグ機能を、ページ定義アクション・バインディング上にADF宣言ブレークポイントを設定することによって実行することもできます。「ページ定義アクション・バインディング・ブレークポイントの設定方法および使用方法」を参照してください。 このJavaブレークポイントの方を使用する場合、 これは、任意のADFアクション・バインディングの起動時に実行されるメソッドです。関連する場合、ロジックに踏み込んでパラメータを確認できます。 |
|
メソッド |
これはビュー・オブジェクトがSQL問合せを実行する際にコールされるメソッドです。 |
|
メソッド |
これは任意のビュー行属性が設定される際にコールされるメソッドです。 |
|
メソッド |
同じデバッグ機能を、ページ定義属性値バインディング上にADF宣言ブレークポイントを設定することによって実行することもできます。「ページ定義値バインディング・ブレークポイントの設定方法および使用方法」を参照してください。 これは任意のエンティティ・オブジェクト属性が設定される際にコールされるメソッドです。 |
JDeveloperではGroovyスクリプト/式をデバッグできます。デバッガを起動するには、applicationmodule.xmlファイルを右クリックしてOracle ADF Model Testerを開始するか、またはJavaプログラムを実行するメイン・メソッドを含むJavaファイルを右クリックします。
.bcs
ファイルにはGroovy式/スクリプトが含まれています。.bcs
ファイルはエンティティ・オブジェクトまたはビュー・オブジェクトと関連付けられています。Groovy式がデバッグされると、例外があった場合、.bcs
ファイルの例外が発生した行で停止し、エラーを表示します。例外がない場合、デバッガはGroovy式の実行に進み、必要な計算データ(データ/スマート・データ/監視などのウィンドウにあります)を表示します。Javaソース・コード・ファイルでブレークポイントを設定するのと同じように、.bcs
ファイルにもブレークポイントを設定できます。デバッガが実行され、この.bcs
ファイルのブレークポイントが見つかると、デバッガはこのブレークポイントで実行を中断します。
.bcs
ファイル内のGroovyスクリプトをデバッグする手順は、Javaファイルのデバッグ手順と同じです。デバッガが.bcs
ファイルに入ったときに、様々なステップ操作(トレース実行、ステップ実行、ステップ・アウト)を使用して、デバッガによるGroovyスクリプトの実行を制御できます。ブレークポイントやステップ操作により実行が行で一時停止しているときなど、デバッガが.bcs
ファイルに入っているときに、デバッガのログ・ウィンドウを使用して実行データを表示できます。
JDeveloperではGroovy式をデバッグできます。Groovy式をデバッグするには、applicationmodule.xml
ファイルを右クリックして「デバッグ」を選択し、Oracle ADF Model Testerを開始するか、またはJavaプログラムを実行するメイン・メソッドを含むJavaファイルを右クリックします。
applicationmodule.xml
ファイル)を右クリックして「デバッグ」を選択し、Oracle ADFモデル・テスターを起動します。.bcs
ファイルにブレークポイントを設定し、ステップ操作(トレース実行、ステップ実行、ステップ・アウト)を使用して、デバッガの実行を制御できます。
ブレークポイントの詳細は、ブレークポイントの管理に関する項を参照してください。
アプリケーションは.bcs
ファイルのGroovyスクリプトをデバッグします。ブレークポイントでデバッガの実行を中断する必要がある場合は、.bcs
ファイルにそうしたブレークポイントを設定します。デバッガがブレークポイントで中断したらその都度、またはステップ操作を実行したときは、データ/監視/スマート・データなどのウィンドウで情報を精査します。
modifyEname()
へのコールを示しています。このメソッドはEmpエンティティのEname属性を変更します。
Ename属性にはバリデータが定義されています。バリデータはGroovyスクリプト/式を使用して定義されています。このGroovyスクリプトは(他のユース・ケースに定義されている他のGroovyスクリプトとともに).bcs
ファイルにあります。そのため、行27のこのメソッドをトレース実行すると、アプリケーションがこの.bcs
ファイルにアクセスし、バリデータを実行します。図48-54は.bcs
ファイルの行23の事前設定されたブレークポイントの位置でデバッガが停止しているところを示しており、バリデータも実行されています。 図48-54 デバッガがJavaファイルから.bcsファイルに移動し、.bcs
ファイルのブレークポイントで停止
JUnitは、Java対応のリグレッション・テスト用オープン・ソース・フレームワークであり、Javaコードを検証するテストの作成と実行に使用されます。JUnitで作成されたテストは、非常に速いペースでコードを記述し、欠陥をすばやく特定するのに役立ちます。JDeveloperでは、ウィザードを使用してテスト・フィクスチャ、テスト・ケースおよびテスト・スイートを作成できます。
ビジネス・サービスのテストは、アプリケーション開発プロセスの重要な部分です。アプリケーション・モジュールで提供される機能を実行する一連のJUnit回帰テストを作成することで、新機能、バグ修正またはリファクタ実行のためにアプリケーションが不安定にならないことを確認できます。JDeveloperにはJUnit回帰テストの作成に対する統合サポートがあり、アプリケーションのテストを簡単に実行できます。JUnitテストの実行に関する統合サポートでは、チームの開発者であれば、マウスを1回クリックするだけでテスト・スイートを実行できます。すべてのチーム・メンバーがシステムの自らの変更箇所を確認するためにテストを実行する機会が増加します。また、Apache Antビルド・スクリプトを作成および実行するためにJDeveloperの統合サポートを使用すると、テストの実行を自動ビルド・プロセスに簡単に組み込むこともできます。アプリケーション・モジュールのJUnitテストの作成、実行、およびAntビルド・スクリプトへの統合を行うことができます。
JDeveloperでは、JUnitテスト・ケース、テスト・フィクスチャ、およびテスト・スイートを生成できます。テスト・ケースを作成し、単一または複数のJavaクラスを含む個別のJavaファイルをテストすることができます。JUnitテスト・ケースによって再利用されるJUnitテスト・フィクスチャを作成できます。これらのすべてのテスト・ケースは、JUnitテスト・スイートにグループ化し、ユニットとして一括して実行できます。
アプリケーション・モジュールがプロジェクトにあるときは、JUnit BC4Jテスト・スイート・ウィザードを使用してテスト・スイートを作成することもできます。ウィザードでは、アプリケーション・モジュールの各ビュー・オブジェクトについてテスト・スイート、テスト・フィクスチャおよびテスト・ケースが生成されます。
回帰テストを含む個別のプロジェクトを作成するか、テスト・ファイルを既存のプロジェクトに統合することもできます。ADFビジネス・コンポーネント・テストを作成している場合は、テスト用に別のプロジェクトを作成する必要があります。
テスト用のプロジェクトを別個に作成することには、次の利点があります。
JUnitに依存せずにベース・プロジェクトを編集できる
テスト・クラスを除外せずに、ベース・プロジェクトをデプロイメント用にパッケージ化できる
JUnitテストのために別個のプロジェクトを作成する場合、テスト対象パッケージの構造と同一のディレクトリ構造を作成することをお薦めします。テスト・クラスに名前を付ける場合、テストされているパッケージを簡単に特定できる命名規則を使用することをお薦めします。たとえば、myClass.java
をテストする場合、テスト・クラスにmyClassTest.java
という名前を付けます。
プロジェクトを別々にすることにも多くの利点がありますが、場合によっては、テストをプロジェクトに含める方が簡単です。
プロジェクトについて「テストの作成」ウィザードを使用すると、JUnitテスト・ケース、テスト・フィクスチャ、またはテスト・スイートを作成できます。ただし、これらのテストがデプロイメントに含まれないようにする場合は、テストを外部に切り離して独自のプロジェクトにすることもできます。
ヒント:
テスト作成のウィザードが表示されない場合は、続行する前にJDeveloperの「ヘルプ」→「更新の確認」機能を使用して、JUnit統合拡張機能をインストールします。
各テスト・ケース・クラスには、テスト・ケースによって必要とされるリソースの初期化を可能にし、その後それらをクリーン・アップするためにJUnitによって起動される、setUp()
およびtearDown()
メソッドが含まれます。これらのテスト・ケース・メソッドは、対応するsetUp()
およびtearDown()
メソッドを起動して、各テスト・ケース実行のテスト・フィクスチャを準備およびクリーン・アップします。テスト・ケース内のテストの1つがアプリケーション・モジュールへのアクセスを必要とする場合は常に、テスト・フィクスチャのgetApplicationModule()
メソッドを使用します。このメソッドは、テスト・ケースの最後で、setUp()
への最初のコールからtearDown()
への最後のコールまでの間に、テスト・フィクスチャ・クラスのメンバー・フィールドに保存された、同じアプリケーション・モジュールのインスタンスを戻します。
JDeveloperはJUnit 4をサポートしているため、明示的にメソッドsetUp()
およびtearDown()
に名前を付けなくても注釈を使用できます。これらの注釈、@Before
および@After
を使用すると、必要に応じて、複数のsetupおよびteardownメソッド(たとえば、継承したメソッドなど)を使用できます。
生成されたExampleModuleConnectFixture
は、アプリケーションの取得および解放の詳細をカプセル化する、JUnitテスト・フィクスチャです。これには、アプリケーション・モジュールのインスタンスを作成するためにConfiguration
クラスのcreateRootApplicationModule()
メソッドを使用する、setUp()
メソッドが含まれます。tearDown()
メソッドは一致するreleaseRootApplicationModule()
メソッドをコールして、アプリケーション・モジュールのインスタンスを解放します。
自身のテスト・メソッドでは、oracle.jbo
パッケージで使用可能な任意のプログラムのAPIを使用して、アプリケーション・モジュールおよびそのデータ・モデル内のビュー・オブジェクト・インスタンスを扱うことができます。また、ApplicationModule
インタフェースをカスタム・インタフェースにキャストして、テストがそのジョブの一部としてカスタム・サービス・メソッドを起動するようにします。それぞれのテスト中に、JUnitフレームワークによって提供されている1つ以上のassert
Xxx
()
メソッドをコールして、特定の式の予測結果がどのようになる必要があるかをアサートします。テスト・スイートを実行する際、任意のテスト・ケースの任意のテストに失敗したアサーションが含まれる場合、「JUnitテスト・ランナー」ウィンドウに失敗したテストが赤の失敗アイコンとともに表示されます。
JUnitテスト生成ウィザードによってデータ・モデルの各ビュー・オブジェクト・インスタンスに対してスケルトン・テスト・ケース・クラスが生成され、それぞれのクラスにはtestAccess()
という名前の1つのテスト・メソッドが含まれます。このメソッドには、ビュー・オブジェクト・インスタンスが存在することをテストするassertNotNull()
メソッドへのコールが含まれます。
// In ViewInstanceNameTest.java test case class public void testSomeMeaningfulName() { // test assertions here }
生成されたテスト・ケースそれぞれに、そのテスト・ケース実行の一部としてJUnitフレームワークが実行する1つ以上のテスト・メソッドを含めることができます。接頭辞test
で始まる名前を持つクラスでpublic voidメソッドを作成するか、注釈@Test
を使用するだけで、テストをテスト・ケースに追加できます。
JUnitを利用可能にし、メニュー・システムに表示されるようにするには、JDeveloperに拡張機能としてロードする必要があります。
始める前に:
JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。
JUnit拡張機能をロードするには:
JUnitテスト・ケースを作成する前に、テストされるプロジェクトの作成を完了している必要があります。
始める前に:
JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。
JUnitテスト・ケースを作成するには:
クラスまたはメソッドに対して複数のテストが必要な場合、JUnitテスト・フィクスチャを作成することをお薦めします。JUnitテキスト・フィクスチャを使用すると、テストを初期化するために必要なテスト・コードの重複作成を防止することができます。
始める前に:
JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。
JUnitテスト・フィクスチャを作成するには:
JUnitテスト・スイートを作成する前に、テスト・スイートに追加できるJUnitテスト・ケースの作成を完了しておくことをお薦めします。
始める前に:
JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。
JUnitテスト・スイートを作成するには:
作成されるテキスト・フィクスチャは、接続数を減らすシングルトン・クラスです。各テスト・ケースで接続または切断する場合は、JUnit 4の注釈、@Before
および@After
を使用してテスト・ケースをカスタマイズします。
JUnit BC4Jテスト・スイート・ウィザードでは、アプリケーション・モジュールの各ビュー・オブジェクトに対してテストが生成されます。アプリケーション・モジュールがメソッドをエクスポートしていない場合、ウィザードによって、アプリケーション・モジュールそのもののテストも生成されます。生成されるビュー・オブジェクト・クラスの形式はview_object
VOTest.java
です。パッケージにはpackage
.view
.viewobject
VO
という形式で配置されます。このときpackage
はアプリケーション・モジュール・パッケージです。生成されるアプリケーション・モジュール・テストの形式はapplication_module
AMTest.java
です。パッケージにはpackage
.applicationModule
という形式で配置されます。生成されるテスト・フィクスチャ・クラスの形式はapplicationmodule
AMFixture.java
です。アプリケーション・モジュール・テストと同じパッケージに配置されます。
生成されるすべてのテスト・スイート・クラスの形式はAll
applicationmodule
Test.java
です。アプリケーション・モジュールのパッケージ名と同じ名前でパッケージに配置されます。
各アプリケーション・モジュールまたはビュー・オブジェクト・テストについてテスト・ケースのXMLファイルも生成されます。このXMLファイルには、アプリケーション・モジュールまたはビュー・オブジェクト・テスト・ケースで定義されているテスト・メソッドが含まれます。重複が多くなりすぎる可能性があるため、ベース・クラス(ある場合)のテスト・メソッドは含まれません。
たとえば、パッケージStoreAPack
内に、ビュー・オブジェクトEmployees1View1
およびEmployees1View2
を含むStoreAAppModule
という名前のアプリケーション・モジュールのテスト・スイートを作成したら、図48-20に示すように、「アプリケーション」ウィンドウにはテスト階層が表示されます。
図48-60 ビジネス・コンポーネントのテスト・スイートが表示された「アプリケーション」ウィンドウ
始める前に:
JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。
次のタスクを完了する必要があります。
ビジネス・コンポーネント・テスト・スイートを作成するには:
ビジネス・コンポーネントのテスト・スイートを作成すると、ビジネス・コンポーネントのテスト・フィクスチャも一緒に作成されます。また、ビジネス・コンポーネントのテスト・フィクスチャを個別に作成することもできます。
生成されるテスト・フィクスチャ・クラスの形式はapplicationmodule
AMFixture.java
です。形式がpackage
.applicationModule
のパッケージに収められます。このとき、package
はアプリケーション・モジュール・パッケージです。
始める前に:
JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。
次のタスクを完了する必要があります。
ビジネス・コンポーネント・テスト・フィクスチャを作成するには:
Apache Antは、JDeveloperによる設計時サポートが提供されている、一般的なクロス・プラットフォーム・ビルド・ユーティリティです。Antの組込みjunit
およびjunitreport
タスクを使用することにより、JUnitテストの自動実行とテスト出力レポート生成を組み込むことができます。次の例は、Ant build.xml
ファイルのtests
と呼ばれるタスクを示しています。これは、tests
ターゲットを実行する前にAntが確実に実行しているbuild
およびbuildTests
ターゲットに依存します。
<target name="testCustomizations" depends="compileExtensionClasses"> <junit printsummary="yes" haltonfailure="yes"> <classpath refid="customization.classpath"> <pathelement location="${customization.build.dir}"/> </classpath> <formatter type="plain"/> <test name="oracle.customization.tests.AllTests"/> </junit> </target>
junit
タグには、実行するテスト・スイート・クラスを識別するネストされたtest
タグが含まれ、結果をレポートするディレクトリが指定されます。junitreport
タグにより、Javadocの形式に類似するHTMLページのコレクションにテスト結果を書式設定できるようになります。
AntからJUnitテストの実行を試行するには、「アプリケーション」ウィンドウでbuild.xml
ファイルを選択し、ポップアップ・メニューから「Antターゲットの実行」→「テスト」を選択します。