プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発
12c (12.2.1.1.0)
E77397-02
目次へ移動
目次

前
次

48 ADFコンポーネントのテストとデバッグ

この章では、Oracle ADFを使用するアプリケーションのロギングおよびテストを行うツールについて説明します。ADF宣言デバッガを使用してブレークポイントを設定するデバッグ手順も示します。最後に、ADFビジネス・コンポーネント・ベースのビジネス・サービスに対する回帰テストを記述し、実行する方法について説明します。

この章の内容は次のとおりです。

48.1 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を使用した回帰テスト」を参照してください。

48.2 単純なOracle ADFコンパイル・エラーの修正

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-1 「構造」ウィンドウに表示されたXMLエラー

この図は周囲のテキストで説明しています

コンパイラ-「ログ」ウィンドウには、図48-2に示すように、ページ内のコンパイル・エラーも表示されます。

図48-2 「コンパイラ」ウィンドウに表示されたXMLコンパイル・エラー

この図は周囲のテキストで説明しています

スキーマ検証エラーを確認し、修正するには:

  1. メイン・メニューで「表示」「構造」を選択して「構造」ウィンドウを開くか、「表示」「ログ」を選択して「ログ」ウィンドウを開きます。

  2. どちらかのウィンドウで、エラー・メッセージをダブルクリックします。

  3. XMLエディタで、強調表示された行を特定します。

    エラーのある行が強調表示されます。

  4. エラーを修正します。

    エラーを修正すると、それに対応するエラー・メッセージは自動的に「構造」ウィンドウから削除されます。

  5. 必要であれば、プロジェクトを再コンパイルします。「実行」→「メイク」を選択し、コンパイラでエラー・メッセージがまだ生成されるかどうかをチェックします。

48.3 単純なOracle ADFランタイム・エラーの修正

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コード・ブレークポイントを設定することもできます。

48.4 統合WebLogic ServerのOracle ADFのメタデータのリロード

JDeveloperによるOracle ADFのメタデータのホット・リロードのサポートは、実行中のアプリケーションを終了し、プロジェクトのXML定義ファイルを編集して再デプロイし、統合WebLogic Serverでアプリケーションを再実行して最新の変更を表示する手順の代替手段です。

統合WebLogic Serverにデプロイしたアプリケーションは、Fusion Webアプリケーション・プロジェクトに対して行う変更を自動的に適用しません。ただし、データ・モデル・プロジェクトとユーザー・インタフェース・プロジェクトからいつでもメタデータをリロードして、実行中のアプリケーションをアプリケーションのXML定義ファイルに対して行った変更と同期をとることができます。

デプロイしたFusion Webアプリケーションに変更が反映されるようにメタデータをリロードするには、プロジェクトを再コンパイルし、Webブラウザをリフレッシュする必要があります。

JDeveloperが統合WebLogic Serverにホット・リロードするメタデータには次のものがあります。

  • データ・モデル・プロジェクトでは、ビジネス・コンポーネントの定義ファイルに対する変更。

  • ユーザー・インタフェース・プロジェクトでは、ページ定義ファイルのバインディング定義に対する変更およびタスク・フロー定義ファイルのタスク・フローに対する変更。

このサポートによって、インクリメンタル変更の実行およびそのテストが可能になります。

48.5 ADFコントローラのメタデータの検証

ADFコントローラがメタデータを取得すると、基本的な検証が実行されます。デフォルト・アクティビティがないタスク・フローなど、最も重大なエラーでは例外が解析されます。

adf-config.xmlenable-grammar-validation設定を使用すると、アプリケーションのデプロイ前にADFコントローラのメタデータの文法を検証できるようになります。enable-grammar-validationtrueに設定すると、ADFコントローラのメタデータはADFコントローラのXSDに対して検証されます。たとえば、ビュー・アクティビティIDのスラッシュ(/)など、ADFコントローラのメタデータの無効な文字は、例外としてフラグを立てられます。

デフォルトでは、enable-grammar-validationfalseに設定されています。パフォーマンス上の理由から、アプリケーションの開発時またはトラブルシューティング時にのみ、trueに設定してください。

48.6 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形式のかわりに、Javaロガーを構成してJava診断メッセージを表示できます。

ログを作成した後で、Oracle Diagnostic Log Analyzerでログ・メッセージを表示してフィルタ処理できます。このツールを使用すると、様々なログ・レベルでのフィルタ設定、メッセージの時間枠の定義、およびメッセージ・テキストの検索を行うことができます。

続いてADF宣言デバッガを使用して、ブレークポイントを設定し、アプリケーションを調べることができます。詳細は、「ADF宣言ブレークポイントの設定」および「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。

48.6.1 ADFロギング・レベルを設定する方法

Oracle Diagnostic Logging Configurationのエディタを使用して、logging.xml構成ファイルに指定されるロギング・レベルを構成できます。このファイルを構成できるのは、アプリケーションを統合WebLogic Serverで実行する前と実行しているときです。サーバーを再起動しなくても変更内容が適用されます。

統合WebLogic Serverが実行しているとき、永続ロガーと一時ロガーの両方を定義できます。統合WebLogic Serverが実行していないときは、永続ロガーしか定義できません。一時ロガーはセッションの間のみ存続し、logging.xml構成ファイルには入力されません。サーバーが実行していない場合は、次の実行時に更新が有効になるように、構成の変更内容を明示的にlogging.xmlファイルに保存する必要があります。

Oracle Diagnostic Logging Configurationのエディタは、「アプリケーション・サーバー」ウィンドウまたは「ログ」ウィンドウ(図48-3)から利用できます。

図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

ロギング・レベルは、テスト実行の前には「アプリケーション・サーバー」で、アプリケーションの実行中には「ログ」ウィンドウの実行パネル・ツールバーで、またはデバッグ・セッション中には「ログ」ウィンドウのメニューで構成できます。

ログ・レベルを構成するには:

  1. メイン・メニューで、「ウィンドウ」「アプリケーション・サーバー」を選択します。

  2. 「アプリケーション・サーバー」ウィンドウで「アプリケーション・サーバー」を開き、「IntegratedWebLogicServer」を右クリックして、「"IntegratedWebLogicServer"に対するOracle Diagnostic Loggingの構成」を選択します。

    または、アプリケーションの開始後に、「ログ」ウィンドウの実行中: IntegratedWebLogicServerパネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。「実行中のログ」ウィンドウは、アプリケーションの実行中のみ表示されます。

    または、アプリケーションのデバッグ中に、「ログ」ウィンドウのデバッグ・プロセス・パネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。デバッグ・プロセス・パネルは、アプリケーションをデバッグ・モードで起動した後のみ、「ログ」ウィンドウに表示されます。

  3. Oracle Diagnostics Logging Configurationのエディタで、表示するロガー・タイプについて「ODLログ・レベル」または「Javaログ・レベル」を選択します。

  4. 永続ロガーのみを表示する場合は、「一時ロガーの非表示」を選択します。

  5. ロガーを追加するには次のようにします。

    1. サーバーが実行している場合は、「追加」アイコンのドロップダウン・メニューをクリックして、「永続ロガーの追加」または「一時ロガーの追加」を選択します。サーバーが実行していない場合は、「追加」をクリックして永続ロガーを追加します。一時ロガーは追加できません。

    2. ロガーの追加ダイアログでロガーの名前を入力します。

    3. ロギング・レベルを選択します。

    4. 「OK」をクリックします。

  6. 新たに作成したロガーを含むすべてのロガーについて、ハンドラを指定できます。これには、使用可能なハンドラのリストから選択して、「ハンドラ宣言」セクションの「追加」アイコンをクリックします。

    または、「親ハンドラの使用」を選択して、親のハンドラをロガーに割り当てます。デフォルトではロガーは親のハンドラを使用します。

    注意:

    ログ・ハンドラ定義を宣言して追加するには、「ソース」タブをクリックして、定義をXMLエディタに入力します。

48.6.2 Oracle ADFデバッグ構成の作成方法

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イベントの完全な階層を記録します。

図48-5 Oracle ADFデバッグのロガーの構成

この図は周囲のテキストで説明しています

後方互換性を保つため、Javaシステム・プロパティjbo.debugoutputによる値consoleまたはADFLoggerの設定がサポートされています(この設定を行うと、logging.xmlファイルを介して標準の方法で制御できる標準ロガー実装に診断がルーティングされます)。JDeveloper内部でのアプリケーションの実行中、このシステム・プロパティを設定する最も簡単な方法は、プロジェクト・プロパティを編集し、「実行/デバッグ」ページで実行構成を選択して、「編集」をクリックすることです。次に、文字列-Djbo.debugoutput=console「Javaオプション」フィールドに追加します。

ADFモデルのデバッグ構成を作成するには:

  1. メイン・メニューで、「ウィンドウ」「アプリケーション・サーバー」を選択します。

  2. 「アプリケーション・サーバー」ウィンドウで「アプリケーション・サーバー」を開き、IntegratedWebLogicServerを右クリックして、「Oracle Diagnostic Loggingの構成」を選択します。

    または、アプリケーションの開始後に、「ログ」ウィンドウの実行中: IntegratedWebLogicServerパネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。「実行中のログ」ウィンドウは、アプリケーションの実行中のみ表示されます。

    または、アプリケーションのデバッグ中に、「ログ」ウィンドウのデバッグ・プロセス・パネルで、「アクション」→「Oracle Diagnostic Loggingの構成」を選択します。デバッグ・プロセス・パネルは、アプリケーションをデバッグ・モードで起動した後のみ、「ログ」ウィンドウに表示されます。

  3. Oracle Diagnostics Logging Configurationのエディタで、表示するロガー・タイプについて「ODLログ・レベル」または「Javaログ・レベル」を選択します。

  4. 「oracle」ノードを開き、CONFIGよりも制限が厳しくないログ・レベル(Javaログの場合)、またはNotificationよりも制限が厳しくないログ・レベル(ODLログの場合)を、次のパッケージに対して選択します。

    • oracle.adfdiagnosticsでは、ADFモデル・データバインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネントおよびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。

      このパッケージのロガーを有効化すると、ロガーはADFイベントの完全な階層を記録します。

  5. その他の必要なOracle ADFロガーに対しては、Javaログ・レベル「FINEST」を選択します。

ADFビューJavascriptロギング構成を作成するには:

  1. 「アプリケーション」ウィンドウで、アプリケーションまたはプロジェクトの「web.xml」ファイルをダブルクリックします。
  2. ソース・エディタで、次の要素をファイルに追加します。
    <context-param>
      <param-name>
         oracle.adf.view.rich.LOGGER_LEVEL
      </param-name>
      <param-value>
          FINE
      </param-value>
    </context-param>

48.6.3 Oracle ADF以外のロガーの診断ロギングを有効化する方法

Oracle ADF以外のロガーの場合、実際のデバッガを使用する前に、FINE、FINERまたはFINESTにJavaログ・レベルを設定した状態でアプリケーションを実行することで、フレームワークの診断ロギングが可能になります。デバッグ診断メッセージは、問題発生時の処理を確認する際に役立ちます。デバッグ診断メッセージを有効にするには、Oracle Diagnostics Logging Configurationのエディタを使用して、Javaログ・レベルを最も詳細に設定して必要なロガーを構成します。サポートされているロガーの診断ロギングが構成済の場合、JDeveloperは、デバッグ診断メッセージをJDeveloperの「ログ」ウィンドウに表示します。

現時点で、Oracle ADFは、Javaログ・レベルをFINE、FINERまたはFINESTに設定した状態のロギングはサポートしていません。Oracle ADFロガーの詳細は、「Oracle ADFデバッグ構成の作成方法」を参照してください。

48.6.4 ログ・アナライザを使用してログ・メッセージを表示する方法

Oracle Diagnostic Log Analyzerを使用してログ・ファイルのログ・エントリを表示できます。ログ・アナライザでは、ログ・レベル、エントリ・タイプ、ログの時刻、エントリの内容によってエントリをフィルタ処理できます(1つ以上の検索基準を使用)。見やすくするために、メッセージの並替えや、列の表示と非表示の切替えを行うこともできます。

図48-6に、Javaログ・レベルの表示に設定されているOracle Diagnostic Log Analyzerを示します。

図48-6 Oracle Diagnostic Log AnalyzerでのJavaログ・メッセージの表示

この図は周囲のテキストで説明しています

他のテスト実行で作成されたログ・ファイルに対してもログ・アナライザを使用できます。たとえば、他のアプリケーションについて別の開発者から送信されたログを分析できます。

48.6.4.1 ログ・アナライザでの診断メッセージの表示

ロギング・レベルは、テスト実行の前に「アプリケーション・サーバー」ウィンドウで、またはデバッグ・セッション中に「ログ」ウィンドウのツールバーで構成できます。指定するレベルによって、ログ・メッセージのタイプと量が決まります。

ADFイベントの場合、ODLログについては「通知」レベルで、Javaログに関しては「情報」レベルで、すべてのメッセージが生成されます。「インシデント・エラー」/「重度」レベルや「エラー」/「警告」レベルでは、生成されるADFメッセージの数は少なくなります。

表示するメッセージのログ・レベルを選択した後で、「ログ・メッセージ別」ページの「検索」パネルを使用して、ログ・ファイルのメッセージをフィルタ処理して表示します。

注意:

ADF固有のメッセージを検索するために指定できる検索基準の詳細は、「ADFイベントに基づく診断メッセージのソート」を参照してください。

ログ・アナライザを開始するには、テスト実行の前は「ツール」メニューを使用し、デバッグ・セッション中は「ログ」ウィンドウのツールバーを使用します。

始める前に:

ロギングの知識があると役立ちます。詳細は、「ADFロガーの使用」を参照してください。

次のタスクを完了する必要があります。

  1. 「ADFロギング・レベルを設定する方法」の説明に従い、ロギング・レベルを設定します。

  2. 「Oracle ADF以外のロガーの診断ロギングを有効化する方法」の説明に従い、ロギングを有効にします。

  3. テスト実行または別のソースからログ・ファイルを作成します。

ログ・アナライザを開始するには:

  1. メイン・メニューで、「ツール」「Oracle Diagnostic Log Analyzer」を選択します。

    あるいは、「ログ」ウィンドウの「アクション」メニューで、「ログの分析」を選択して、「コンソールのカレント」または「選択項目を開く」(サーバー・ログ・ディレクトリのログ・ファイルを参照する)のいずれかを選択します。

  2. Oracle Diagnostic Log Analyzerのエディタで「ログ・メッセージ別」をクリックします。
  3. 「ログ・メッセージ別」ページで、「ログ」フィールドにログ・ファイルのパスと名前を入力するか、「ログ・ファイルの参照」をクリックしてログ・ファイルに移動します。

    ヒント:

    「ログ・ファイルの選択」ダイアログを使用して、JDeveloperで生成されたログ・ファイルを含むディレクトリにナビゲートできます。「ログ」テキスト・フィールドの横の「ログ・ファイルの参照」アイコンをクリックし、スクロール・リストの「サーバー・ログ」アイコンをクリックします。ログ・ファイルのリストから、一度に分析する複数のログ・ファイルを選択できます。

  4. ドロップダウン・リストで「ODLログ・レベル」または「Javaログ・レベル」を選択します。
  5. 表示するログ・エントリのタイプごとに対応するチェックボックスを選択します。少なくとも1つのタイプを選択する必要があります。

    選択できるODLログ・レベルのタイプは次のとおりです。

    • インシデント・エラー

    • エラー

    • 警告

    • NOTIFICATION: ADFイベント・メッセージに対応

    • トレース

    • 不明。

    選択できるJavaログ・レベルのタイプは次のとおりです。

    • 重度

    • 警告

    • 情報

    • CONFIG: ADFイベント・メッセージに対応

    • 普通

    • 詳細

    • 最も詳細

    • 不明

  6. 表示するエントリの期間を指定します。一番新しい期間または範囲を選択できます。
  7. 結果をフィルタ処理するには、「検索」パネルを使用してログでテキスト・パターンを問い合せます。検索基準を追加するには、「追加」をクリックしてください。サポートされる検索基準は次のとおりです。
    • エンタープライズ名: エンタープライズ名ごとにログをフィルタ処理します。

    • 詳細: メソッドが起動されたスタックの文からテキストをフィルタ処理します。

    • エンタープライズID: エンタープライズのIDごとにログをフィルタ処理します。

    • メッセージ: ロギングされたメッセージのテキストをフィルタ処理します。

    • ADFメッセージ・データ: ADFイベントの実行中にロギングされた、ADFライフサイクル・フェーズ名、ビュー・オブジェクト名、ビュー・オブジェクト問合せ文、データ・コントロール名、バインディング・コンテナ名およびイテレータ・バインディング名に関連するデータのログをフィルタ処理します。

    • ソース・メソッド: メッセージがロギングされるメソッドごとにログをフィルタ処理します。たとえば、メソッドexecuteについてフィルタ処理すると、ビュー・オブジェクトの問合せ実行またはADFライフサイクル・フェーズ実行でロギングされたすべてのメッセージを表示できます。

    • アプリケーション: メッセージがロギングされるアプリケーション名ごとにログをフィルタ処理します。これが役立つのは、アプリケーションがコンポジット・アプリケーション内で実行しているときに、特定のアプリケーションのメッセージを表示する場合です。

    • ソース・クラス: メッセージがロギングされるメソッドの完全修飾クラス名ごとにログをフィルタ処理します。表示されるメッセージ数を増やすには、パッケージ名の一部を入力します。たとえば、パッケージ名の一部oracle.adfや完全なパッケージ名oracle.jboを入力すると、Oracle ADFに関連するすべてのクラスについてフィルタ処理できます。

    • モジュール: メッセージがロギングされるクラスの完全修飾パッケージ名ごとにログをフィルタ処理します。これはソース・クラスと同じパッケージです。

    • メッセージID: ロギングされたメッセージのIDごとにログをフィルタ処理します。IDが同じメッセージが多数あります。たとえば、メッセージID ADFC-52008には、4つのINFOメッセージと1つのWarningメッセージがあります。ログ・アナライザの「結果」パネルで「IDでグループ化」を選択すると、共通のIDでメッセージをグループ化できます。

  8. フィルタを開始して、ログ・メッセージを表示するには、「検索」をクリックします。
  9. メッセージID順に結果を並べるには、「IDでグループ化」チェックボックスを選択します。
  10. 期間別またはリクエスト別にメッセージをグループ化するには、「関連付け」列で「時間による関連付け」または「リクエストによる関連付け」を選択します。

    関連付けオプションを選択すると、ログ・アナライザによって「結果メッセージ」パネル内のメッセージが、選択した基準(時間、HTTPリクエストまたはエンタープライズ名)によってグループ化されます。

  11. 「関連付け」列で、メッセージがその一部となっているADFリクエスト(存在する場合)を開くには、「ADFリクエストによる関連付け」を選択します。

    「ADFリクエストによる関連付け」を選択すると、ログ・アナライザの「ADFリクエスト別」ページには関連するリクエストが表示されます。

  12. 「結果」セクションで列の表示と非表示を切り替えるには、列ヘッダーの右側のドロップダウン・リストをクリックし、表示される列のリストを選択して、列の表示状態を変更します。

48.6.4.2 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ロガーの使用」を参照してください。

次のタスクを完了する必要があります。

  1. 「ADFロギング・レベルを設定する方法」の説明に従い、ロギング・レベルを設定します。

    ADFイベント・メッセージの完全な階層ツリーをロギングするには、1つのパッケージに対してNOTIFICATION:16よりも制限が厳しくないODLログ・レベル、またはCONFIGよりも制限が厳しくないJavaログ・レベルを構成する必要があります。

    • oracle.adfdiagnosticsでは、ADFモデル・データ・バインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネント、およびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。

    ヒント:

    Oracle Diagnostics Logging Configurationのエディタによって表示されるルート・ログ出力のデフォルト・ログ・レベルでは、ADFイベント・メッセージのロギングが保証されます。

  2. 「Oracle ADF以外のロガーの診断ロギングを有効化する方法」の説明に従い、ロギングを有効にします。

  3. テスト実行または別のソースからログ・ファイルを作成します。

ログ・アナライザでADFリクエスト・メッセージを表示するには:

  1. メイン・メニューで、「ツール」「Oracle Diagnostic Log Analyzer」を選択します。

    あるいは、「ログ」ウィンドウの「アクション」メニューで、「ログの分析」を選択して、「コンソールのカレント」または「選択項目を開く」(サーバー・ログ・ディレクトリのログ・ファイルを参照する)のいずれかを選択します。

  2. Oracle Diagnostic Log Analyzerのエディタで「ADFリクエスト別」タブをクリックします。
  3. 「ADFリクエスト別」ページで、表示する最新リクエストの数を指定します。

    デフォルトでは一番新しいリクエスト1つしか表示されません。

  4. 表示するエントリの期間を指定します。一番新しい期間または範囲を選択できます。
  5. 表示するリクエストをフィルタ処理するには、検索フィールドを使用してログでテキスト・パターンを問い合せます。検索フィールドを追加するには、「行の追加」アイコンをクリックしてください。
  6. フィルタを開始して、一致するADFリクエストを表示するには、「検索」をクリックします。
  7. 「ADFリクエスト」パネルで、目的のリクエスト・リンクをクリックしてイベント階層を表示し、時間(ミリ秒)の棒グラフが示す実行時間が長いADFイベントを探します。
  8. 必要なADFイベントを選択し、ADFイベントに関連するADFコンポーネントの詳細を「ADFメッセージ・データ詳細」パネルで確認します。
  9. アプリケーションのコンポーネントを調べて、最適化が可能かどうかを判別します。

48.6.4.3 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ロガーの使用」を参照してください。

次のタスクを完了する必要があります。

  1. 「ADFロギング・レベルを設定する方法」の説明に従い、ロギング・レベルを設定します。

    ADFイベント・メッセージをロギングするには、次のパッケージについてNOTIFICATION:16よりも制限の厳しいODLログ・レベルまたはCONFIGよりも制限の厳しいJavaログ・レベルを構成しないでください。

    • oracle.adfdiagnosticsでは、ADFモデル・データ・バインディング・レイヤー、ADFコントローラ・ソース・コード、ADFビジネス・コンポーネント、およびOracle ADF内部クラスのソース・コードで生成されるイベントがロギングされます。

    ヒント:

    Oracle Diagnostics Logging Configurationのエディタによって表示されるルート・ログ出力のデフォルト・ログ・レベルでは、ADFイベント・メッセージのロギングが保証されます。

  2. 「Oracle ADF以外のロガーの診断ロギングを有効化する方法」の説明に従い、ロギングを有効にします。

  3. テスト実行または別のソースからログ・ファイルを作成します。

ADFイベントに関連付けられたメッセージを表示するには:

  1. メイン・メニューで、「ツール」「Oracle Diagnostic Log Analyzer」を選択します。

    あるいは、「ログ」ウィンドウの「アクション」メニューで、「ログの分析」を選択して、「コンソールのカレント」または「選択項目を開く」(サーバー・ログ・ディレクトリのログ・ファイルを参照する)のいずれかを選択します。

  2. Oracle Diagnostic Log Analyzerのエディタで「ログ・メッセージ別」タブをクリックします。
  3. 「ログ・メッセージ別」ページで、必要なロガー・タイプ、ログ・レベルおよびログ時間を選択します。

    ADFイベント・メッセージのログを検索するには、最低でもログ・レベル「通知」(ODLログ・レベル)または「情報」(Javaログ・レベル)を選択する必要があります。

  4. 検索のドロップダウンで、検索基準として「メッセージ」「次を含む」を選択し、次のいずれかのADFイベント・メッセージを入力して、「検索」をクリックします。
    • Executing iterator binding - これは、問合せの更新が遅い場合の診断に役立ちます。

    • Executing method binding - これは、メソッドの実行が遅い場合の診断に役立ちます。

    • Execute query - これが役立つのは、問合せ文、バインド・パラメータおよびビュー・オブジェクト名を表示する場合です。

    さらに次に示すADFイベント・メッセージについてログをフィルタ処理することもできます。

    • Refreshing binding container

    • データソースへのイテレータ・バインディングのアタッチ

    • 階層ノードへの行の変換

    • Estimated row count

    • Get LOV list

    • Filter LOV list

    • Validate Entity

    • Lock Entity's Parent

    • Lock Entity

    • エンティティの変更のポスティング前

    • エンティティの変更のポスティング

    • Posting in batches

    • エンティティの変更のコミット前

    • エンティティの変更のコミット後

    • エンティティの変更のロールバック前

    • エンティティの変更のロールバック後

    • イベントを通知するエンティティ

    • Entity notification name

    • Removing Entity

    • Updating audit columns

    • 有効日付変更の適用

    • Entity DML

    • エンティティでのすべての属性の読取り

    • Create Application Module

    • ネスト・アプリケーション・モジュールの作成

    • Passivating Application Module

    • Activating Application Module

    • Establish database connection

    • Commit transaction

    • Rollback transaction

    • Validate transaction

    • Validate value

    ADFイベントの情報について「結果」パネルのデータ部分で確認します。

  5. ADFイベントを階層表示するには、必要なADFイベント・メッセージが「結果」パネルで選択された状態で、「関連付け」列で、必要なイベント行のアイコンをクリックして、ドロップダウン・メニューから「ADFリクエストによる関連付け」を選択します。

    Oracle Diagnostic Log Analyzerのエディタに、選択したADFイベントの「ADFリクエスト別」ページが表示されます。ADFイベントのその他のADFデータについて「結果」パネルの下部で確認します。たとえば、「結果」パネルの「ADFデータ」領域で「問合せの実行」メッセージに関連する問合せ文を確認できます。

48.6.5 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 (最も制限された最高のログ・レベル)

  • 警告

  • 情報

  • CONFIG (Oracle ADFに対してサポートされる最高のログ・レベル)

  • 普通

  • 詳細

  • FINEST (最も制限の少ない最低のログ・レベル)

48.6.6 ADFロギングおよびログ出力に関する必知事項

デフォルトでは、ロガーは階層的なので、別のロガーの子であるロガーは、その親のログ・レベルを継承するため、予想外に大きなログ出力を生成することがあります。このため、Oracle Diagnostic Logging Configurationのエディタでロガーを有効化する場合、親ロガーのログ・レベルと子ロガーのログ・レベルを別々に設定することをお薦めします。これは、メモリー・リークなどの条件を診断するのに便利な設定FINEFINERFINESTを使用する場合、詳細なログ・メッセージが有用なので、特に重要です。

たとえば、メモリー・リークをデバッグする場合、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"/>

48.6.7 ADFロギングとOracle WebLogic Serverに関する必知事項

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の管理』を参照してください。

48.7 テストとデバッグのためのOracle ADFモデル・テスターの使用

Oracle ADFモデル・テスター(またはテスターとも呼ばれます)は、ADFビジネス・コンポーネント・データ・モデル・プロジェクトのビジネス・オブジェクトを操作するときにJDeveloperから起動するJavaアプリケーションです。Oracle ADFモデル・テスターはJDeveloper外部で実行し、データ・モデル・プロジェクトのテストと調査のための総合的なUIを提供します。このテスターを実行すると、ADFアプリケーション・モジュールのビュー・インスタンスの調査、ビュー・リンクの階層構造のナビゲート、アプリケーション・モジュールのクライアント・インタフェース、ビュー・オブジェクト・インタフェースおよびビュー行インタフェースからのカスタム・メソッドの実行ができます。テスターをADF宣言デバッガと一緒に使用して、これらのインタフェースのカスタム・メソッドにブレークポイントを設定することもできます。

さらに、テスターではユーザー・インタフェースの多くの機能がシミュレートされます。アプリケーション・モジュールの構成ファイル(bc4j.xcfg)で指定されたデータベースのビジネス・オブジェクトの内容を表示、挿入および更新できます。特に、ビュー・インスタンスのマスター・ディテール関係、ビュー・インスタンスとその属性、ビュー・インスタンスの問合せ結果セット、ビュー基準を使用する検索フォーム、属性値に対して定義される検証規則、LOV(値リスト)定義属性のドロップダウン・リストなど、データ・モデル設計の様々な要素を確認できます。テスターと対話してビジネス・オブジェクトをテストする方法の詳細は、「Oracle ADFモデル・テスターを使用したビュー・オブジェクト・インスタンスのテスト」を参照してください。Oracle ADFモデル・テスターでのテストの詳細は、このマニュアルの「ビジネス・サービスの構築」の部内の章の、各ビジネス・オブジェクト固有の項にも記載されています。

48.7.1 デバッグ・モードでの実行方法およびOracle ADFモデル・テスターでのテスト方法

多くの場合、クライアント・インタフェース実装クラスのサービス・メソッドでカスタム・コードを分析およびデバッグできると便利です。Oracle ADFモデル・テスターを使用すると、ユーザー・インタフェースでアプリケーションを実行せずに、これらができます。デバッグ・プロセスを補完するテスト・ツールとしてOracle ADFモデル・テスターを使用できます。

注意:

デバッグ・モードで実行するOracle ADFモデル・テスターはJDeveloper IDE Javaオプションを継承しません。特定の実行/デバッグJavaオプションがテスターで使用されるようにするには、データ・モデル・プロジェクトに対する実行構成を編集する必要があります。デフォルトの実行構成は、「プロジェクト・プロパティ」ダイアログの「実行/デバッグ」ページで変更できます。

始める前に:

実行時テスト・ツールの使用方法に関する知識が役立つ場合があります。詳細は、「テストとデバッグのためのOracle ADFモデル・テスターの使用」を参照してください。

次のタスクを完了する必要があります。

  1. 『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「Javaプロジェクトの実行およびデバッグ」の説明に従って、使用したい実行構成に対する適切なJavaオプションを設定します。

  2. 「ADF宣言ブレークポイントの設定」の説明に従い、クライアント・インタフェースのカスタム・メソッドにブレークポイントを設定します。

Oracle ADFモデル・テスターを起動してデバッグ・モードにするには:

  1. 「アプリケーション」ウィンドウで、アプリケーション・モジュールを右クリックして「デバッグ」を選択します。
  2. Oracle ADFモデル・テスターで、「Oracle ADFモデル・テスターを使用したカスタム・サービス・メソッドのテスト方法」の説明に従って、必要なクライアント・インタフェースのメソッド・テスト・パネルを開きます。
  3. メソッド・パネルでドロップダウン・リストから必要なメソッドを選択し、メソッドのパラメータとして渡す値を入力して、「実行」をクリックします。

    JDeveloperに戻り、ADF宣言デバッガを使用してコードをステップ実行します。メソッドの実行が完了すると、メソッド・パネルに戻り値(ある場合)とテスト結果が表示されます。Oracle ADFモデル・テスターに表示される結果は、メソッドが正常に実行されたかどうかを示します。

48.7.2 Oracle ADFモデル・テスターを実行して特定のアプリケーション・モジュール構成を使用してテストする方法

「アプリケーション」ウィンドウでアプリケーション・モジュールを右クリックし、「実行」または「デバッグ」を選択すると、JDeveloperがアプリケーション・モジュールに定義されるデフォルト構成を使用してOracle ADFモデル・テスターを実行します。ビジネス・コンポーネントを別のアプリケーション・モジュール構成(異なるデータソースおよび独自のランタイム・パラメータのセットを指定できる)でテストする場合は、bc4j.xcfgファイルの概要エディタで行うことができます。このファイルは「アプリケーション」ウィンドウには表示されず、アプリケーション・モジュールの概要エディタの「構成」ページからのみアクセスできます。

特定のアプリケーション・モジュール構成を使用してOracle ADFモデル・テスターを実行するには:

  1. 「アプリケーション」ウィンドウで、テストするアプリケーション・モジュールをダブルクリックします。
  2. 概要エディタで「構成」ナビゲーション・タブをクリックして、「bc4j.xcfg」構成ファイル・リンクをクリックします。
  3. 概要エディタで、「構成」リストから構成を選択します。
  4. 選択した構成を右クリックして、「実行」または「デバッグ」を選択し、Oracle ADFモデル・テスターを起動します。

48.7.3 デバッグ・モードでOracle ADFモデル・テスター実行時の処理

Oracle ADFモデル・テスターは他のJavaプログラムと同じように動作します。具体的には、JDeveloper IDEに対して指定されたJavaオプションは継承しません。テスターはデータ・モデル・プロジェクトに対して指定された実行構成およびその構成内に設定されたJavaオプションをかわりに使用します。

JDeveloperではOracle ADFモデル・テスターを2つのモード(デバッグ・モードまたは非デバッグ・モード)で実行できます。テスターをデバッグ・モードで実行すると、ADF宣言デバッガと連動して、クライアント・インタフェースのカスタムJavaコードおよびGroovyスクリプトに挿入したブレークポイントを使用してカスタム・メソッドを実行します。たとえば、クライアント・インタフェースでメソッドにブレークポイントを設定し、そのメソッドをテスターでデバッグ・モードで実行すると、コードをステップ実行できます。その後、テスターによって成功または失敗の結果が返されます。非デバッグ・モードでは、テスターは、メソッドが正常に実行されたかどうかを示す結果をすぐに返します。また、テスターは、デバッグ・モードでも非デバッグ・モードでも、アプリケーション・モジュールに対して実行時に作成されたシステム・カタログの実行時アーティファクトを表示できます。

48.7.4 Oracle ADFモデル・テスターで実行時アーティファクトを確認する方法

Oracle ADFモデル・テスターを実行するが、ADF宣言デバッガを使用する必要がない場合は、実行時アーティファクトの情報をアプリケーション・モジュールのシステム・カタログから表示できます。システム・カタログによってビジネス・オブジェクト・メタデータとその他の情報が表示されます。これはビジネス・オブジェクトを比較する必要があるときに役立ちます。

デバッグせずにOracle ADFモデル・テスターを起動するには:

  1. 「アプリケーション」ウィンドウで、アプリケーション・モジュールを右クリックして、「実行」を選択します。
  2. Oracle ADFモデル・テスターで、「作成」→SysCat AMの作成を選択します。
  3. データ・モデル・ツリーで「SysCatAMDefs」を展開し、「ViewDefs」を右クリックして、「表の表示」を選択します。
  4. データ・ビューアで縦方向にスクロールし、必要なビュー・インスタンスを「SCName」(システム・カタログ名)フィールドで確認します。

    テスターでシステム・カタログを公開すると、デバッガを実行せずに、ランタイム・オブジェクト固有のメタデータおよびその他の情報にアクセスできます。たとえば、ビュー・インスタンスにカスタムJava実装クラスがあるかどうかをチェックできます。

48.7.5 アプリケーションの変更内容でOracle ADFモデル・テスターをリフレッシュする方法

Oracle ADFモデル・テスターは、非常に対話型のツールです。テスターを実行しているときに、データ・モデル・プロジェクトの変更が必要であるとわかると、JDeveloperに戻って必要なアプリケーション・モジュール・インスタンスを編集し、変更内容を表示するようにOracle ADFモデル・テスターのデータ・モデルをリフレッシュできます。このように、変更内容を確認するためにテスターを再実行する必要はありません。

Oracle ADFモデル・テスターにアプリケーション・メタデータを再ロードするには:

  1. データ・モデル・プロジェクトでビジネス・オブジェクトを編集し、変更内容をJDeveloperに保存します。
  2. データ・モデル・プロジェクトを再コンパイルします。

    たとえば、「アプリケーション」ウィンドウでデータ・モデル・プロジェクトを右クリックし、「メイク」を選択して再コンパイル・ステップを完了します。

    メタデータに対して行う変更とプロジェクトのコンパイルに関連性はありませんが、メタデータをクラス・パスにコピーし、Oracle ADFモデル・テスターでリロードできるようにするには、コンパイル手順を実行する必要があります。

  3. Oracle ADFモデル・テスターのツールバーで、アプリケーション・メタデータの再ロードをクリックします。

    また、Oracle ADFモデル・テスターの「ファイル」メニューから、「アプリケーションのリロード」を選択してもかまいません。

48.8 ADF宣言デバッガの使用

ADF宣言デバッガで提供される宣言ブレークポイントは、カスタムJavaコードおよびGroovyスクリプトの標準ブレークポイントと同様に、ADFオブジェクト・レベル(タスク・フロー、ページ定義実行可能ファイル、メソッドとアクションのバインディング、ADFライフサイクル・フェーズなど)に設定できます。ADF宣言ブレークポイントにより、ADFアプリケーションをデバッグするために概要レベルのオブジェクト・ビューが提供されます。たとえば、図48-11のようにタスク・フロー・アクティビティの前にブレークすると、タスク・フローに渡されるパラメータを確認できます。Javaブレークポイントだけを使用して同じ機能を実行するには、ブレークポイントを設定するクラスまたはメソッドを認識する必要があります。ADFアプリケーションではADF宣言ブレークポイントを使用することをお薦めします。

図48-11 タスク・フロー・アクティビティでのADF宣言ブレークポイント

この図は周囲のテキストで説明しています

ADF宣言デバッガも、標準のJavaコード・ブレークポイントをサポートします。どのADFアプリケーションにもJavaコード・ブレークポイントを設定できます。ADF宣言ブレークポイントが必要な場所でブレークしないとき、場合によってはJavaコード・ブレークポイントを使用できます。

ADF宣言デバッガはJavaデバッガ上に構築されているので、機能と動作はJavaデバッガと同様です。ただ、Javaのクラスやメソッドを知らなくても、ビジュアル・エディタでADF宣言ブレークポイントを設定することができます。

ADF宣言デバッガでは、変数やスタック・データの調査など標準デバッグ機能が提供されます。アプリケーションが任意のブレークポイント(ADF宣言ブレークポイントまたはJavaコード・ブレークポイント)で一時停止するときに、様々なウィンドウを使用してアプリケーションのステータスを調べることができます。「ブレークポイント」ウィンドウで、ブレークが発生した箇所を確認することができます。「スタック」ウィンドウを使用して、現在のスレッドのコール・スタックを確認することができます。「スタック」ウィンドウで行を選択すると、「データ」ウィンドウ、「監視」ウィンドウおよびすべての「インスペクタ」ウィンドウが更新され、関連データが表示されます。「データ」ウィンドウを使用すると、アプリケーションの引数、ローカル変数および静的フィールドを表示できます。

「ADF構造」ウィンドウには、プロジェクトの実行時構造が表示されます。「ADFデータ」ウィンドウでは、「ADF構造」ウィンドウの選択内容に基づいて、表示する情報が自動的に変更されます。たとえば、タスク・フロー・ノードが選択されている場合は、図48-12に示すように、ADFデータ・ウィンドウにはタスク・フローに関連したデバッグ情報が表示されます。

図48-12 タスク・フロー選択時の「ADF構造」ウィンドウと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ソース・コードの使用」を参照してください。

48.8.1 デバッガでの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ファイルにアクセスし、次にそのコンテンツを作業ディレクトリに解凍します。

48.8.2 ADFソース・ユーザー・ライブラリの設定方法

ソース・ユーザー・ライブラリの名前を作成し、それをソースZIPファイルに関連付けます。

ADFソースZIPファイルをユーザー・ライブラリに追加するには:

  1. メイン・メニューで、「ツール」「ライブラリの管理」を選択します。
  2. 「ライブラリの管理」ダイアログの「ライブラリ」タブを選択した状態で、「新規」をクリックします。
  3. 「ライブラリの作成」ウィンドウで、ライブラリのタイプを識別する、ソース用のライブラリ名を入力します。
  4. ツリー構造の「ソースパス」ノードを選択します。「エントリの追加」をクリックします。

    注意:

    クラス・パスの値は入力しないでください。ソース・パスの値のみ指定する必要があります。

  5. 「パス・エントリの選択」ウィンドウで、ファイルが解凍されたディレクトリを参照し、ソースZIPファイルを選択します。「選択」をクリックします。
  6. 「ライブラリの作成」ウィンドウで、ソース・パスのエントリにソースZIPファイルの正しいパスが入力されていることを確認し、「デフォルトでデプロイ済」の選択を解除します。「OK」をクリックします。
  7. 「OK」をクリックします。

48.8.3 ADFソース・ライブラリのプロジェクトへの追加方法

使用可能なユーザー・ライブラリのリストへソース・ライブラリを追加した後、デバッグするプロジェクトにソース・ライブラリを追加します。

ADFソースZIPファイルをプロジェクトに追加するには:

  1. 「アプリケーション」ウィンドウで、ADFライブラリを追加するプロジェクトをダブルクリックするか、プロジェクトを右クリックして「プロジェクト・プロパティ」を選択します。
  2. 「プロジェクト・プロパティ」ダイアログで、「ライブラリとクラスパス」を選択します。
  3. 「ライブラリの追加」をクリックします。
  4. 「ライブラリの追加」ダイアログの「ユーザー」ノードで、追加するソース・ライブラリを選択して「OK」をクリックします。

    ソース・ライブラリが「プロジェクト・プロパティ」ダイアログの「クラスパス・エントリ」セクションに表示されます。

  5. 「OK」をクリックします。

48.8.4 EL式エバリュエータの使用

アプリケーションがブレークポイントで一時停止したら、EL式エバリュエータを使用して、評価するEL式を入力します。評価するEL式は、現在のコンテキストの範囲内で任意に入力することができます。EL式が現在のコンテキストの範囲に収まらない場合、値はnullと評価されます。

ELエバリュエータは、後続のデバッグ手順で停止されるときでなく、ブレークポイントで停止されるときにのみEL評価が発生する点で、「監視」ウィンドウと異なります。

ELエバリュエータは、あらゆるJSFアプリケーションのデバッグで利用できます。

注意:

EL式を評価するときは、アプリケーションのデータ、つまりアプリケーションの動作を間接的に変更しないように注意してください。たとえば、#{foo.bar}を評価する場合、対応するgetBar()メソッドによってアプリケーション・データが変更されます。

始める前に:

ADF宣言デバッガに関する知識が役立つ場合があります。詳細は、「ADF宣言デバッガの使用」を参照してください。

次のタスクを完了する必要があります。

  • 「ADF宣言ブレークポイントの設定」の説明に従い、アプリケーションで必要なブレークポイントを設定します。アプリケーションは、JSFアプリケーションである必要があります。ADFアプリケーションである必要はありません。

ELエバリュエータを使用するには:

  1. 次のいずれかの方法で、デバッグ・プロセスを開始します。
    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  2. ブレークポイントに到達すると、ELエバリュエータは、デバッガ・ウィンドウ領域にタブとして表示されます。「ELエバリュエータ」タブをクリックして前面に移動します。表示されない場合は、メイン・メニューで「ウィンドウ」を選択して、「デバッガ」→「ELエバリュエータ」を選択します。

    注意:

    「ブレークポイント」ウィンドウを確認するか、オブジェクトのブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

  3. 「式」入力フィールドにEL式を入力します。

    フィールドをクリックして#{またはピリオドを入力すると、図48-13に示すように、入力支援機能によって選択可能な式項目のリストが表示されます。自動的に補完されるため入力が簡単です。セミコロンで区切ることによって、複数のEL式を同時に評価することができます。

    図48-13 ELエバリュエータの入力支援機能の使用

    この図は周囲のテキストで説明しています
  4. EL式の入力を完了したら、「式の評価」をクリックすると、式が評価されます。図48-14を参照してください。

    図48-14 EL式の評価

    この図は周囲のテキストで説明しています

48.8.5 スタック・トレース情報を表示およびエクスポートする方法

通常、問題を判断できず、自分で解決できない場合には、他の人に支援を求めます。OTN JDeveloper Discussion Forumに質問を投稿する場合、またはMetalinkでサービス・リクエストをオープンする場合、支援しようとしている他のユーザーが問題の発生箇所を正確に理解するためには、スタック・トレース情報を投稿内容に含めることが非常に重要です。

JDeveloperの「スタック」ウィンドウを使用すると、この情報を伝えるときに役立ちます。デバッガが一時停止したときは常に、「スタック」ウィンドウで、現在行までのメソッド・コールのスタックとしてプログラム・フローを確認できます。「プリファレンス」ダイアログを使用して、「スタック」ウィンドウのプリファレンスを設定し、デフォルトで組み込まれているクラスやメソッドの名前のように、行番号情報を組み込むことができます。最後に、「スタック」ウィンドウのポップアップ・メニュー・オプション「エクスポート」を使用すると、現在のスタック情報を外部テキスト・ファイルに保存できます。その後、問題の診断を支援してくれる人にファイルの内容を投稿または送信できます。

始める前に:

ADF宣言デバッガに関する知識が役立つ場合があります。詳細は、「ADF宣言デバッガの使用」を参照してください。

次のタスクを完了する必要があります。

  • 「ADF宣言ブレークポイントの設定」の説明に従い、アプリケーションで必要なブレークポイントを設定します。アプリケーションは、JSFアプリケーションである必要があります。ADFアプリケーションである必要はありません。

スタック情報をテキスト・ファイルに保存するには:

  1. 次のいずれかの方法で、デバッグ・プロセスを開始します。
    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  2. ブレークポイントに到達してデバッガが一時停止すると、「スタック」ウィンドウが、デバッガ・ウィンドウ領域側にウィンドウとして表示されます。「スタック」タブをクリックして、前面に表示します。「スタック」ウィンドウが表示されない場合は、メイン・メニューで「ウィンドウ」を選択して、「デバッガ」→「スタック」を選択します。
  3. たとえばエクスポート・ファイルに行番号情報を組み込むなど、「スタック」ウィンドウのプリファレンスを変更する場合は「スタック」ウィンドウの背景を右クリックして、「プリファレンス」を選択します(図48-15)。

    図48-15 「スタック」ウィンドウのポップアップ・メニュー

    この図は周囲のテキストで説明しています
  4. 「スタック」ウィンドウの背景を右クリックして「エクスポート」を選択します。
  5. スタックのエクスポート・ダイアログで、ファイルに名前を付けて、ファイルの保存場所を選択します。「OK」をクリックします。

48.9 ADF宣言ブレークポイントの設定

ADFタスク・フロー・アクティビティ、ページ定義実行可能ファイル、メソッド、アクションおよび値のバインディング、ADFライフサイクル・フェーズ、コンテキスト・イベント上でブレークポイントを宣言的に設定するには、JDeveloperでADF宣言デバッガ機能を使用します。メソッド名とクラス名などのADFコードのすべての内部構造体を知らなくても、最高抽象レベルでオブジェクトにブレークポイントを設定することができます。

タスク・フロー・ダイアグラマでタスク・フロー・アクティビティにブレークポイントを追加できます。あるいは、「ブレークポイント」ウィンドウでADFタスク・フロー・アクティビティ・ブレークポイントの作成ダイアログを起動できます。タスク・フロー・ダイアグラマでタスク・フロー・アクティビティを選択し、ポップアップ・メニューを使用してそのアクティビティのブレークポイントの有効/無効を切り替えるか、[F5]キーを押します。アプリケーションがブレークポイントで停止すると、「ADF構造」ウィンドウに、オブジェクトの実行時構造がツリー構造で表示されます。「ADFデータ」ウィンドウには、「ADF構造」ウィンドウで選択されたオブジェクトのデータのリストが表示されます。

たとえば、Browse Ordersタスク・フローのタスク・フロー・コール・アクティビティにブレークポイントを設定すると、図48-16に示すように、コール・アクティビティに赤い点のアイコンが表示されます。

図48-16 タスク・フロー・アクティビティでのADF宣言ブレークポイント

この図は周囲のテキストで説明しています

ブレークポイントに到達すると、図48-17に示すように、アプリケーションが一時停止され、アイコンが変化します。

図48-17 ADF宣言ブレークポイントで一時停止したアプリケーション

この図は周囲のテキストで説明しています

同様に、ページ定義ファイルでBeforeブレークポイントとAfterブレークポイントを設定することができます。項目の横の左余白または右余白をクリックするかまたはポップアップ・メニューから選択して、サポートされる値バインディング(サポートされる値バインディングのリストについては表48-1を参照)および実行可能ファイルに対してブレークポイントを設定します。左余白をクリックするとBeforeページ定義ブレークポイントが追加され、右余白をクリックするとAfterページ定義ブレークポイントが追加されます。この場合も、図48-18に示すように、ブレークポイントを示す赤い点アイコンが設定されます。

図48-18 ページ定義ファイルのADFバインディングのADF宣言ブレークポイント

この図は周囲のテキストで説明しています

ページ定義ファイルでも、図48-19に示すように、ページまたはページ内のリージョンによって実行時に発生するコンテキスト・イベントにブレークポイントを設定できます。

図48-19 ページ定義ファイルのコンテキスト・イベントのADF宣言ブレークポイント

この図は周囲のテキストで説明しています

すべてのADFライフサイクル・フェーズにもBeforeブレークポイントとAfterブレークポイントを設定できます。図48-20に示すようにブレークポイント・ウィンドウでADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログを起動できます。

図48-20 ブレークポイント・ウィンドウの「ブレークポイントの追加」アイコンのドロップダウン・メニュー

この図は周囲のテキストで説明しています

ADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログでは、様々なライフサイクル・ブレークポイントのオプションを選択できます(図48-21)。

図48-21 ADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログ

この図は周囲のテキストで説明しています

または、「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ブレークポイントは、次の順序で実行されます。

  • jsfRenderResponseの前。

  • prepareRenderの前。(prepareRenderフェーズが実行します)。

  • prepareRenderの後。(jsfRenderResponseフェーズが実行します)。

  • jsfRenderResponseの後。

ADFページ定義 - バインディングおよび実行可能ファイル

実行可能ファイルの前/後にブレーク:

  • イテレータ

  • リージョンのインスタンス化

ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「実行可能ファイル」セクション

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

実行可能ファイルがリフレッシュする前または後にデバッグを一時停止します。タスク・フロー・バインディングの場合、1ライフサイクルにつき2回あり、最初はprepareModel(初期リージョン作成)、2回目はprepareRender(動的リージョンにより、対応するリージョンのタスク・フローIDが入れ替えられる)。

アクション・バインディングの前/後にブレーク:

  • methodAction

  • ビルトイン操作

ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

バインディングが実行される前または後にデバッグを一時停止します。

属性値バインディングの前/後にブレーク

ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

属性のsetInputValue() ADFソース・コード・メソッドが実行される前または後にデバッグを一時停止します。新しい値は、setInputValue()へのパラメータとなる。

表バインディングの前/後にブレーク

ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

ADF階層バインディングのupdateValuesFromRows()ソース・コード・メソッドが実行される前または後にデバッグを一時停止します。新しい値は、updateValuesFromRows()へのパラメータとなる。

ツリー・バインディングの前/後にブレーク

ページ定義の概要エディタの「バインディングと実行可能ファイル」タブ、「バインディング」セクション

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

次の2つのケースのいずれかで一時停止します。

1. ツリーでノードの選択を実行している場合、ADF階層バインディングのupdateValuesFromRows()ソース・コード・メソッドが実行される前または後にデバッグを一時停止します。新しい値は、updateValuesFromRows()へのパラメータとなる。

2. ツリーを開いている場合、ADFツリー・コレクション・モデルのmodifyExpanded()ソース・コード・メソッドが実行される前または後にデバッグを一時停止します。

ADFページ定義 - コンテキスト・イベント

コンテキスト・イベントの前/後にブレーク

ページ定義の概要エディタの「コンテキスト・イベント」タブ、「イベント」セクション

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

イベントがディスパッチされる前またはイベントの後に、イベントのサブスクライバによってイベントが使用される直前にデバッグを一時停止します。

ADFタスク・フロー

アクティビティの前にブレーク

タスク・フロー・ダイアグラマ

「ブレークポイント」ウィンドウの「追加」ボタン

「ブレークポイントの設定」または[F5]

ブレークポイントの無効化

JSFアプリケーション起動フェーズ内でアクティビティが実行する前にデバッグを一時停止します。宣言ブレークポイントが定義されているアクティビティは未実行です。例外はビュー・アクティビティです。ビュー・アクティビティが実行された後で、新しいページがレンダリングする前に、JSFレスポンス・レンダリング・フェーズ内で一時停止します。このポイントで一時停止することにより、「ADF構造」ウィンドウと「ADFデータ」ウィンドウを使用してビュー・アクティビティ値を検査できます。


ADF宣言デバッガは、ADF宣言ブレークポイントのステータスの設定、切り替えおよび表示のために、標準デバッガのアイコンと表記法を使用します。

設定されたADF宣言ブレークポイントは、図48-22図48-23図48-24および図48-25に示すように、タスク・フロー・アクティビティ、ページ定義のブレークポイント余白、「ADFライフサイクル・ブレークポイント」ウィンドウに、赤い点のアイコンとして表示されます。

図48-22 タスク・フロー・アクティビティ上で有効化されたADF宣言ブレークポイント

この図は周囲のテキストで説明しています

図48-23 ページ定義実行可能ファイルで有効化されたADF宣言ブレークポイント

この図は周囲のテキストで説明しています

図48-24 ページ定義ファイルのコンテキスト・イベントの有効化されたADF宣言ブレークポイント

この図は周囲のテキストで説明しています

図48-25 ADFライフサイクル・ブレークポイント・ウィンドウで有効化されたADFライフサイクル・フェーズ・ブレークポイント

この図は周囲のテキストで説明しています

ADFタスク・フローまたはページ定義の宣言ブレークポイントを無効にすると、図48-26に示すように、赤いアイコンがグレーのアイコンになります。

図48-26 無効化されたADF宣言ブレークポイント

この図は周囲のテキストで説明しています

アクティブなADFタスク・フロー宣言ブレークポイントでは、図48-27に示すように、赤いアイコンに緑のチェックマークが付きます。

図48-27 アクティブなADF宣言ブレークポイント

この図は周囲のテキストで説明しています

アプリケーションがADF宣言ブレークポイントで一時停止すると、図48-28に示すように、実行ポイントのアイコンが表示されます。

図48-28 タスク・フローの実行ポイントで一時停止したアプリケーション

この図は周囲のテキストで説明しています

アプリケーションがADFライフサイクル宣言ブレークポイントで一時停止すると、図48-29に示すように、「ADFライフサイクル・ブレークポイント」ウィンドウのライフサイクル・フェーズの横に実行ポイントのアイコンが表示されます。現在のADFライフサイクル・フェーズの名前は「ADF構造」ウィンドウにも表示されます。

図48-29 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の後

ページ定義実行可能ファイル・ブレークポイントの前

ページ定義アクション・バインディングの前/後:

  • methodAction

  • ビルトイン操作

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コード用であるため、宣言ブレークポイントでは使用できません。前の実行ポイントに戻ることはできません。


48.9.1 タスク・フロー・アクティビティ・ブレークポイントの設定方法および使用方法

タスク・フローチャートの作成後は、タスク・フロー・アクティビティ上にADF宣言ブレークポイントを設定することができます。

始める前に:

ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

タスク・フロー・アクティビティ上にブレークポイントを設定するには:

  1. タスク・フロー・ダイアグラマでタスク・フローを開くか、「ブレークポイント」ウィンドウで「追加」アイコンをクリックし、「ADFタスク・フロー・アクティビティ・ブレークポイント」を選択します。

    「ブレークポイント」ウィンドウが表示されていない場合は、メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

  2. タスク・フロー・アクティビティ・ブレークポイントを設定します。

    • タスク・フロー・ダイアグラマを使用する場合は、右クリックしてポップアップ・メニューから「ブレークポイントの設定」を選択するか、[F5]を押します。

      タスク・フロー・アクティビティ上にブレークポイント・アイコンが表示されます。

    • 「ブレークポイント」ウィンドウでADFタスク・フロー・アクティビティ・ブレークポイントの作成ダイアログを起動した場合は、「参照」をクリックしてタスク・フロー定義を選択し、「タスク・フロー」ドロップダウン・リストからタスク・フローを選択し、「アクティビティ」ドロップダウン・リストからタスク・フロー・アクティビティを選択し、「OK」をクリックします。

  3. 必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。

    1. メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

    2. 「ブレークポイント」ウィンドウで、構成するタスク・フロー・アクティビティ・ブレークポイントを選択し、「編集」アイコンをクリックします。

    3. ADFタスク・フロー・アクティビティ・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。

    4. 「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。

      たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。

  4. 次のいずれかの方法で、デバッグ・プロセスを開始します。

    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  5. アプリケーションがブレークポイントで一時停止されると、タスク・フロー・アクティビティ上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査できます。

    注意:

    「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

    タスク・フロー・アクティビティ宣言ブレークポイントは、タスク・フロー・アクティビティの実行直前でアプリケーションを一時停止します(ビュー・アクティビティを除く)。

  6. デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。

  7. 「ADF構造」ウィンドウでノードを選択し、「ADFデータ」ウィンドウに関連情報を表示します。

    タスク・フロー・アクティビティ宣言ブレークポイントは、タスク・フロー・アクティビティの実行直前でアプリケーションを一時停止します。「トレース実行」(F7)機能を使用すると、コールされたタスク・フローのデフォルト・アクティビティを実行する直前に、アプリケーションを一時停止できます。

  8. 必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、「トレース実行」(F7)です。

    アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。

48.9.2 ページ定義実行可能ファイル・ブレークポイントの設定方法および使用方法

ページ定義に実行可能ファイルがある場合は、その実行可能ファイルの前または後でアプリケーションを一時停止するブレークポイントを設定できます。たとえば、イテレータがリフレッシュされるときにアプリケーションを一時停止するブレークポイントを設定できます。

注意:

ビュー・オブジェクト問合せが実行された後でアプリケーションを一時停止するAfterイテレータ・ブレークポイントを設定している場合、アプリケーションがこのブレークポイントで複数回一時停止することに注意してください。また、問合せが実行されなかったときにも、このブレークポイントでアプリケーションが一時停止する可能性があります。問合せが実行されたかどうかを把握する必要がある場合は、関連するADFビジネス・コンポーネントを「ADF構造」ウィンドウで選択して、「ADFデータ」ウィンドウで対応するデータを確認します。これらのウィンドウの使用方法の詳細は、「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。

ビュー・オブジェクト問合せ実行でのJavaコード・ブレークポイントの使用方法の詳細は、「Oracle ADFブレークポイントに関する必知事項」を参照してください。

始める前に:

ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

ページ定義ファイルの実行可能ファイル上にブレークポイントを設定するには:

  1. 「アプリケーション」ウィンドウで、ブレークポイントを設定する実行可能ファイルを含むページ定義ファイルをダブルクリックします。

  2. 概要エディタの「バインディングと実行可能ファイル」タブをクリックし、「実行可能ファイル」リストで実行可能ファイルを選択し、項目の左側にあるブレークポイント余白をクリックします。

    項目の隣にある余白にブレークポイント・アイコンが表示されます。

  3. 必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。

    1. メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

    2. 「ブレークポイント」ウィンドウで、構成する実行可能ファイル・ブレークポイントを選択し、「編集」アイコンをクリックします。

    3. ADFページ定義バインディング・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。

    4. 「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。

      たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。

  4. 次のいずれかの方法で、デバッグ・プロセスを開始します。

    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  5. アプリケーションがブレークポイントで一時停止されると、実行可能項目のブレークポイント・アイコンの隣にある余白に、「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。

    Executablesバインディングがリフレッシュされると、アプリケーションが一時停止します。taskFlow実行可能ファイルの場合、prepareModelおよびprepareRenderライフサイクルで一時停止が発生します。

    注意:

    「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣の「実行ポイント」アイコン(赤い右矢印)を確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

  6. デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。

  7. 「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。

  8. アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。

48.9.3 ページ定義アクション・バインディング・ブレークポイントの設定方法および使用方法

ページ定義ファイルで、アクション・バインディング上およびmethodActionバインディング上にブレークポイントを設定することができます。バインディングが実行されると、アプリケーションが一時停止します。

始める前に:

ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

ページ定義ファイルのアクション・バインディング上にブレークポイントを設定するには:

  1. 「アプリケーション」ウィンドウで、ブレークポイントを設定するバインディングを含むページ定義ファイルをダブルクリックします。

  2. 概要エディタの「バインディングと実行可能ファイル」タブをクリックし、「バインディング」リストでmethodActionバインディングまたは組込み操作項目を選択し、項目の左側にあるブレークポイント余白をクリックします。

    項目の隣にブレークポイント・アイコンが表示されます。

  3. 必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。

    1. メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

    2. 「ブレークポイント」ウィンドウで、構成するアクション・バインディング・ブレークポイントを選択し、「編集」アイコンをクリックします。

    3. ADFページ定義バインディング・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。

    4. 「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。

      たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。

  4. 次のいずれかの方法で、デバッグ・プロセスを開始します。

    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  5. アプリケーションがブレークポイントで一時停止されると、アクション・バインディング項目上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。

    バインディングが実行されると、アプリケーションが一時停止します。

    注意:

    「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

  6. デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。

  7. 「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。

  8. アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。

48.9.4 ページ定義値バインディング・ブレークポイントの設定方法および使用方法

ページ定義に次のいずれかの値バインディングがある場合、アプリケーションを一時停止するブレークポイントを設定できます。

  • 属性値バインディング

  • ツリー値のバインディング

  • 表の値のバインディング

始める前に:

ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

ページ定義ファイルの値バインディング上にブレークポイントを設定するには:

  1. 「アプリケーション」ウィンドウで、ブレークポイントを設定するバインディングを含むページ定義ファイルをダブルクリックします。

  2. 概要エディタの「バインディングと実行可能ファイル」タブをクリックし、「バインディング」リストで属性、ツリーまたは表のバインディングを選択し、項目の左側にあるブレークポイント余白をクリックします。値バインディングの隣にブレークポイント・アイコンが表示されます。

  3. 必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。

    1. メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

    2. 「ブレークポイント」ウィンドウで、構成するバインディング・ブレークポイントを選択し、「編集」アイコンをクリックします。

    3. ADFページ定義バインディング・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。

    4. 「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。

      たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。

  4. 次のいずれかの方法で、デバッグ・プロセスを開始します。

    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  5. アプリケーションがブレークポイントで一時停止されると、属性値バインディング上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。

    表48-1に示すように、ADFソース・コード実行の適切なメソッドの前でアプリケーションが一時停止します。新しい値は、このメソッドに入るパラメータになります。

    注意:

    「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

  6. デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。

  7. 「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。

  8. 必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、ステップ実行(F8)です。

    アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。

48.9.5 ページ定義コンテキスト・イベント・ブレークポイントの設定方法および使用方法

ページ定義がコンテキスト・イベントを定義している場合、コンテキスト・イベント上にブレークポイントを設定し、アプリケーションを一時停止できます。

始める前に:

ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

ページ定義ファイルのコンテキスト・イベント上にブレークポイントを設定するには:

  1. 「アプリケーション」ウィンドウで、ブレークポイントを設定するバインディングを含むページ定義ファイルをダブルクリックします。

  2. 概要エディタの「コンテキスト・イベント」タブをクリックし、「イベント」リストからコンテキスト・イベントを選択し、項目の左側にあるブレークポイント余白をクリックします。コンテキスト・イベントの隣にブレークポイント・アイコンが表示されます。

  3. 必要に応じて、次のようにデバッガを管理するためのブレークポイントの設定を構成します。

    1. メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

    2. 「ブレークポイント」ウィンドウで、構成するコンテキスト・イベント・ブレークポイントを選択し、「編集」アイコンをクリックします。

    3. ADFコンテキスト・イベント・ブレークポイントの編集ダイアログで「条件」タブをクリックし、ブレークポイントに適用する条件を指定します。条件が有効な場合のみブレークポイントが発生します。

    4. 「アクション」タブをクリックし、ブレークポイントが発生したときにデバッガで行うアクションを指定して、「OK」をクリックします。

      たとえば、ブレークポイントの通常の処理では、デバッグ中のプログラムを停止しますが、プログラムを停止せずにビープ音を鳴らし、ログ・ウィンドウにログ情報を記録することもできます。

  4. 次のいずれかの方法で、デバッグ・プロセスを開始します。

    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  5. アプリケーションがブレークポイントで一時停止されると、コンテキスト・イベント上のブレークポイント・アイコンの隣に「実行ポイント」アイコン(赤い右矢印)が表示されます。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。

    コンテキスト・イベントが発生する前にアプリケーションが一時停止します。

    注意:

    「ブレークポイント」ウィンドウを確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

  6. デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。

  7. 「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。

  8. 必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、ステップ実行(F8)です。

    アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。

48.9.6 ADFライフサイクル・フェーズ・ブレークポイントの設定方法および使用方法

ADFライフサイクル・フェーズのBeforeブレークポイントとAfterブレークポイントを任意のADFライフサイクル・フェーズに設定できます。各フェーズに、Beforeのみ、Afterのみ、または両方を設定できます。必要な数のフェーズにブレークポイントを設定できます。

「ブレークポイント」ウィンドウのメニューからADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログを使用し、ブレークポイントを作成して、オプションをカスタマイズできます。または、「ADFライフサイクル・ブレークポイント」ウィンドウを使用してデフォルト・オプションのブレークポイントを作成できます。ライフサイクル・ブレークポイントを設定した後で、「ブレークポイント」ウィンドウから開始できるADFライフサイクル・フェーズ・ブレークポイントの編集ダイアログを使用してオプションを編集できます。

ADFライフサイクル・ブレークポイントは次に示す任意のADFライフサイクル・フェーズに設定できます。

  • JSFのビューのリストア

  • コンテンツの初期化

  • モデルの準備

  • JSFのリクエスト値の適用

  • JSFの検証処理

  • JSFのモデル値の更新

  • モデル更新の検証

  • JSFのアプリケーションの起動

  • メタデータのコミット

  • レンダリング準備

  • JSFのレスポンス・レンダリング

始める前に:

ADF宣言ブレークポイントについて理解しておくと役立ちます。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

「ブレークポイント」ウィンドウでADFライフサイクル・フェーズ・ブレークポイントを設定または管理するには:

  1. メイン・メニューで、「ウィンドウ」「ブレークポイント」を選択します。

  2. 「ブレークポイント」ウィンドウで、「追加」「ADFライフサイクル・フェーズ・ブレークポイント」を選択します。

  3. ADFライフサイクル・フェーズ・ブレークポイントの作成ダイアログの「定義」タブで、次の手順を実行します。

    • ブレークポイントを設定するADFライフサイクル・フェーズを選択します。

    • 「フェーズの前」または「フェーズの後」のブレークポイントを選択します。

  4. 「条件」タブで必要なオプションを選択し、「OK」をクリックします。

  5. 「アクション」タブで必要なオプションを選択し、「OK」をクリックします。

ブレークポイント・アイコンを使用してADFライフサイクル・フェーズ・ブレークポイントを設定するには:

  1. 「アプリケーション」ウィンドウで、任意のタスク・フローの構成ファイルをダブルクリックし、概要エディタで「ダイアグラム」タブをクリックします。

  2. タスク・フロー・ダイアグラマのツールバーまたは「ADF構造」ウィンドウのタイトル・バーで、ADFライフサイクル・ブレークポイントのアイコン(図48-31)をクリックします

    図48-31 ADFライフサイクル・ブレークポイントのアイコン

    この図は周囲のテキストで説明しています
  3. 「ADFライフサイクル・ブレークポイント」ウィンドウで、ADFライフサイクル・フェーズの左余白をクリックしてBeforeブレークポイントを設定し、右余白をクリックしてAfterブレークポイントを設定します。図48-32に示すように、ブレークポイントを示す赤い点アイコンが設定されます。このブレークポイントはデフォルトのブレークポイント・オプションで設定されます。ブレークポイントを削除するには赤い点アイコンをクリックします。

    図48-32 ADFライフサイクル・ブレークポイント・ウィンドウでのブレークポイントの設定

    この図は周囲のテキストで説明しています
  4. ブレークポイント・オプションを編集する場合は、「ブレークポイント」ウィンドウでブレークポイントを選択し、「編集」アイコンをクリックします。

ADFライフサイクル・フェーズ・ブレークポイントを使用してアプリケーションをデバッグするには:

  1. 次のいずれかの方法で、デバッグ・プロセスを開始します。
    • メイン・メニューで、「実行」「<project_name>のデバッグ」を選択します。

    • 「アプリケーション」ウィンドウで、プロジェクト、adfc-config.xml、タスク・フローまたはページを右クリックし、「デバッグ」を選択します。

    • タスク・フロー・ダイアグラマで、アクティビティを右クリックして、「デバッグ」を選択します。ページ・フラグメントを使用しないタスク・フローのみを実行できます。

  2. アプリケーションがADFライフサイクル・フェーズ・ブレークポイントで一時停止すると、図48-33に示すように、「ADFライフサイクル・ブレークポイント」ウィンドウで、実行ポイントのアイコン(赤い右矢印)がブレークポイント・アイコンの横に表示され、ADFライフサイクル・フェーズが太字になります。各種デバッガ・ウィンドウを使用して、アプリケーションを調査することができます。

    図48-33 ADFライフサイクル・ブレークポイント・ウィンドウでの実行ポイントの表示

    この図は周囲のテキストで説明しています

    注意:

    「ブレークポイント」ウィンドウでブレークポイントの到達を確認するか、ブレークポイントの隣に「実行ポイント」アイコン(赤い右矢印)が表示されていることを確認することによって、アプリケーションが実際にブレークポイントをヒットしていることを確認してください。ブレークポイントの設定箇所によっては、アプリケーションが実際にはページ上でのユーザー入力を待機しているのに、停止しているように見えることがあります。

  3. デフォルトでは、「ADF構造」ウィンドウと「ADFデータ」ウィンドウ、およびいくつかのデバッガ・ウィンドウが表示されます。「ADF構造」ウィンドウでは実行時構造、「ADFデータ」ウィンドウではそれに対応するデータを調べることができます。現在のADFライフサイクル・フェーズは「ADF構造」ウィンドウの一番上に表示されます。詳細は、「「ADF構造」ウィンドウの使用方法」および「ADFデータ・ウィンドウの使用方法」を参照してください。
  4. 「ADF構造」ウィンドウでノードを選択すると、「ADFデータ」ウィンドウに関連情報が表示されます。
  5. 必要に応じて、表48-3で説明したステップ機能を使用して、アプリケーションのデバッグを継続します。主要なステップ機能は、ステップ実行(F8)です。

    アプリケーションが一時停止しているときに、既存のブレークポイントを削除または無効化し、新しいブレークポイントを設定できます。

48.9.7 「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ライフサイクル・フェーズとランタイム・オブジェクトのツリー構造が表示されます。

図48-34 「ADF構造」ウィンドウでのランタイム・オブジェクトの表示

この図は周囲のテキストで説明しています

「ADF構造」ウィンドウで項目を選択すると、その項目に関連付けられているデータと値が「ADFデータ」ウィンドウに表示されます。図48-35に、「ADF構造」ウィンドウで選択されたタスク・フローと、ADFデータ・ウィンドウに表示された関連情報を示します。

図48-35 「ADF構造」ウィンドウの選択内容とADFデータ・ウィンドウのデータ

この図は周囲のテキストで説明しています

階層のルートは、兄弟ノードである「スコープ」「ADFコンテキスト」です。処理が停止した現在のビュー・ポートは、太字で表示されます。ツリー内のデフォルトの選択内容は前のブレークポイントから保持されるため、ブレークポイント間での変化を監視することができます。ADF宣言ブレークポイントが定義されているADFオブジェクトは、対応するJDeveloperエディタ(タスク・フロー・ダイアグラマ、またはページ定義ファイルの概要エディタ)で開かれます。

「ADF構造」ツリーは、変更されたオブジェクト状態を反映するため、アプリケーションがブレークするたびに、また後続のステップでも再ビルドされます。全体のツリー階層が表示されますが、選択したり、さらに調査したりできるのは、現在のビュー・ポートとその親ビュー・ポートの範囲内の項目のみです。現在のコンテキストにない、ツリー階層の他のすべての項目は、淡色表示され、無効にされます。また、この階層を使用して、アプリケーションの範囲内でのランタイム・オブジェクト間の関係を特定することもできますが、現在のコンテキスト(およびその親のビュー・ポート)に限定されます。

表48-4に、「ADF構造」ウィンドウの階層ツリーに表示できる、各種の項目を示します。


表48-4 「ADF構造」ウィンドウの項目

「ADF構造」ツリーの項目 説明

スコープ

ADF構造階層の一番上で兄弟ノードの「ADFコンテキスト」よりも上に表示されます。ADF構造階層には「スコープ」ノードは1つしかありません。「スコープ」ノードを展開すると、子スコープ・ノード(viewScopepageFlowScopeなど)のリストが表示されます。子スコープ・ノードを選択すると、「ADFデータ」ウィンドウにそのスコープの変数と値が表示されます。

ADFコンテキスト

ADF構造階層のルート・ノードとして、兄弟ノードの「スコープ」の下に表示されます。ADF構造階層内にはADFコンテキストは1つのみ存在する。

ビュー・ポート

ビュー・ポートは、ADF Controllerの概念。このため、デバッグしているアプリケーションがADF Controllerを利用するときだけ、ADF構造階層の範囲内でビュー・ポートが表示される。

ビュー・ポートは、次のいずれかを表現可能。

  • ブラウザ: メイン・ブラウザ・ビュー・ポート(ルート・ビュー・ポート)は、ルートの「ADFコンテキスト」の子として表示されます。ランタイムのデバッグ・セッション中に複数のブラウザ・ウィンドウが開いている場合、複数のブラウザ・ビュー・ポートが階層内に示されます。各ブラウザ・ビュー・ポートのラベルにはブラウザというテキストが表示されます。ビュー・ポートにはビュー・ポートIDを示すツールチップも用意されており、ビュー・ポート: 999999のように表示されます。

  • リージョン: リージョン・ビュー・ポートは、ページまたはページ・フラグメントの子として表示される。これらは子ビュー・ポートとも呼ばれます。各リージョン・ビュー・ポートのラベルには、テキスト「リージョン」が表示される。リージョンにはビュー・ポートIDを示すツールチップも用意されており、「子ビュー・ポート: 999999」のように表示されます。

ADFタスク・フロー

各ビュー・ポートに対応するページ・フロー・スタックは、ADFタスク・フローの階層として表示されます。スタックに対応してコールされる最初のADFタスク・フローは、対応するビュー・ポートの直接の子である。各ADFタスク・フローのラベルは、対応するADFタスク・フロー表示名(存在する場合)、またはそのタスク・フローIDを反映する。リージョン・ビュー・ポートには、内包されたバインドなしタスク・フローのためのページ・フロー・スタック階層内の項目は表示されません。タスク・フローにも、ADFタスク・フロー・パスを表示するツールチップと、エディタ・ワークスペース内の、対応するADFタスク・フローを開くポップアップ・メニュー項目が用意されている。

アプリケーションがADF Controllerを利用しない場合(またはページがADFタスク・フローのコンテキストの外部で実行される場合)、ADFタスク・フローは階層内に表示されない。

ページ

ブラウザ・ビュー・ポート内で現在表示されているページ(ビュー)を表します。関連付けられたバインディング・コンテナ(ある場合)と一緒に子として示されます。デバッグしているアプリケーションがADFコントローラを利用する場合、ページは各ブラウザ・ビュー・ポートの子です。各ページのラベルは、対応するランタイム・ビューIDを反映する。ページにも、ページ・パスを表示するツールチップと、エディタ・ワークスペース内の、対応するページを開くポップアップ・メニュー項目が用意されている。アプリケーションでビジュアル・ユーザー・インタフェースが実装されていない場合、ページは階層内に表示されない。

ページ・フラグメント

リージョン・ビュー・ポート内で現在表示されているページ・フラグメントを表す。関連付けられたバインディング・コンテナ(ある場合)と一緒に子として示されます。デバッグしているアプリケーションがADF Controllerを利用する場合、ページ・フラグメントは各リージョン・ビュー・ポートの子である。各ページ・フラグメント・ノードのラベルは、対応するランタイム・ビューIDを反映する。ページ・フラグメントにも、ソース・ファイル・ページ定義パスを表示するツールチップと、エディタ・ワークスペース内の、対応するページ・フラグメントを開くポップアップ・メニュー項目が用意されています。

バインディング・コンテナ

対応するページまたはページ・フラグメントのバインディング・コンテナを表す。各バインディング・コンテナのラベルは、対応するファイル名(ページ定義ファイル)から拡張子を除いたものを反映する。バインディング・コンテナ・ノードにも、ページ・フラグメント・パスを表示するツールチップが用意されています。タスク・フロー・アクティビティ・バインディング(たとえば、メソッド・コール・アクティビティ・バインディング)を表すために使用される場合は、バインディング・コンテナも現在のタスク・フローの下に表示される。

アプリケーションでADFモデルが利用されない場合、バインディング・コンテナは表示されない。

アプリケーション・データ

対応するビュー・ポート(または、ADFコントローラが使用されない場合はバインディング・コンテナ)のデータ・コントロール・フレーム内でインスタンス化されたアプリケーション・データ・オブジェクト(ADFビジネス・コンポーネント・オブジェクトまたはADFビジネス・コンポーネント・ビジネス・サービス・オブジェクトなど)を表します。現在、アプリケーション・データ・ノードを表示するために、アプリケーション・データ・オブジェクトをインスタンス化する必要はありません。


48.9.8 ADFデータ・ウィンドウの使用方法

アプリケーションがADF宣言ブレークポイントで一時停止されるとき、「ADFデータ」ウィンドウには、「ADF構造」ウィンドウ内での選択内容に基づく関連データが表示されます。「ADFデータ」ウィンドウを開くには、メイン・メニューから「ウィンドウ」→「デバッガ」→「ADFデータ」を選択します。「ADF構造」ウィンドウでの選択内容に基づく「ADFデータ」ウィンドウの内容を、表48-5に示します。


表48-5 「ADF構造」ウィンドウの選択内容に対応するADFデータ・ウィンドウの内容

「ADF構造」ウィンドウ ADFデータの内容

スコープ

現在のコンテキストに基づくメモリー・スコープ値が表示されます。pageFlowScopeもADFタスク・フローの内容に表示されます。選択されたADFタスク・フロー(現在のコンテキストとはかぎらない)に固有のpageFlowScope値です。viewScopeもビュー・ポートの内容に表示されます。選択されたビュー・ポート(現在のコンテキストとはかぎらない)に固有のviewScope値です。

ADFコンテキスト

ADFコンテキストの変数と値の階層が表示されます。#(data.adfContext) EL式をELエバリュエータで評価して、ADFコンテキストの変数と値を検査することができます。

ビュー・ポート

viewScopeの内容などの、ビュー・ポート詳細が表示されます。

ページ・フロー・スタック・エントリ

現在のトランザクション・ステータスやADFモデル・セーブポイント・ステータスなど、選択されているページ・フロー・スタック・エントリの情報が表示されます。

ページ/ページ・フラグメント

ページまたはページ・フラグメントがレンダリングされた場合は、選択されたページまたはページ・フラグメントに対応する、ページまたはページ・フラグメントUIコンポーネント・ツリー階層が表示される。

バインディング・コンテナ

パラメータ、バインディング、実行可能ファイルなど、バインディング・コンテナの実行時値が表示されます。

アプリケーション・データ

現在のバインディング・コンテキストでインスタンス化されたアプリケーション・データ・オブジェクト(たとえばADFビジネス・コンポーネント・オブジェクト)が表示されます。ビジネス・サービス・レイヤーがADFビジネス・コンポーネント・オブジェクト(たとえばEJB)以外のテクノロジで実装されている場合、アプリケーション・データ・オブジェクトはより一般的な形式で表示されます。


「ADF構造」ウィンドウの「スコープ」ノードを展開すると、子スコープ・ノードのリストが表示されます。「ADF構造」ウィンドウで子スコープ・ノードを選択すると、「ADFデータ」ウィンドウに、選択したメモリー・スコープの現在のコンテキスト値が表示されます(図48-36)。

図48-36 「ADF構造」ウィンドウで選択された子スコープ

この図は周囲のテキストで説明しています

「スコープ」ノードそのものを選択した場合は、メモリー・スコープすべてのリストが「ADFデータ」ウィンドウにも表示されます。このリストも検査のために展開できます。図48-37では、「ADF構造」ウィンドウで「スコープ」ノードが選択され、ADFデータ・ウィンドウではviewScope子ノードが選択されて値が表示されています。requestScopeviewScopepageFlowScopeapplicationScopeおよびsessionScopeに対応する各ノードを展開して値を検査できます。pageFlowScopeも、ADFタスク・フローの内容に表示され、「ADF構造」ウィンドウで現在選択されているADFタスク・フロー固有の値を反映します。viewScopeも、ビュー・ポートの内容に表示され、「ADF構造」ウィンドウで現在選択されている特定のビュー・ポートの値を反映します。

図48-37 「ADF構造」ウィンドウで選択された「スコープ」ノード

この図は周囲のテキストで説明しています

図48-38のように「ADF構造」ウィンドウで「ADFコンテキスト」が選択されると、ADFコンテキスト変数の現在の値がADFデータ・ウィンドウに表示されます。#(data.adfContext) EL式をELエバリュエータで評価して、ADFコンテキストの変数と値を検査することもできます。詳細は、「EL式エバリュエータの使用」を参照してください。

図48-38 「ADFコンテキスト」が選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

ADF構造階層内でビュー・ポートを選択すると、図48-39に示すように、そのビュー・ポートの現在のビュー・ポート詳細がADFデータ・ウィンドウに表示されます。各ビュー・ポートで表示される値の概要を、表48-6に示します。

図48-39 ビュー・ポートが選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

表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-40 タスク・フローが選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

表48-7 タスク・フローに対応するADFデータ・ウィンドウの内容

タスク・フロー 説明

ADFタスク・フローの参照

ADFタスク・フローの参照

タスク・フロー・コール・アクティビティID

コール元タスク・フローのタスク・フロー・アクティビティID。各ビュー・ポート・タスク・フローの「コール」ウィンドウ内の最初のADFタスク・フローではnullとなる。

ビュー・アクティビティIDのコール中

ADFタスク・フロー(存在する場合)によって表示されている現在の表示アクティビティのコール元表示アクティビティ。

ビュー到達済

(ブール)

トレイン・モデル

現在のADFタスク・フロー・アクティビティがビュー・アクティビティである場合のみ適用される。

トランザクション開始済

(ブール)ADFタスク・フローのトランザクション状態の現行ステータスを特定する。たとえば、ADFタスク・フローが、新しいトランザクションを開始したかどうか。

トランザクション共有

(ブール)ADFタスク・フローのトランザクション状態の現行ステータスを特定する。たとえば、ADFタスク・フローが、既存のトランザクションに結合されたかどうか。

セーブポイント

ADFタスク・フローのADFモデル・セーブポイント作成状態の現行ステータスを特定します。たとえば、モデル・セーブポイントが、ADFタスク・フロー・エントリ上に作成されたか。

リモート・タスク・フロー・コール済

(ブール)

リモート・タスク・フロー・リターンURL

ADFタスク・フローをリモートからコールする場合にのみ適用される。リモートからコールされたタスク・フローが完了したときに戻すURLを特定する。

データ・コントロール・フレーム作成済

(ブール)

データ・コントロール・フレーム

ADFタスク・フローに関連付けられたデータ・コントロール・フレームの名前。

ページ・フロー・メモリー・スコープ

展開できるノードとして表示されます。「ADF構造」ウィンドウで選択されたタスク・フローのページ・フロー・メモリー・スコープの値を検査できます。

ページ・フロー・メモリー・スコープは、「ADF構造」ウィンドウの「スコープ」ノードにも表示されます。ただし、「スコープ」ノードのページ・フロー・メモリー・スコープは、常にアプリケーションの現在のコンテキストに対応し、選択されているタスク・フローには対応していません。


ADF構造階層でページまたはページ・フラグメント・ノードを選択すると、図48-41に示すように、対応するUIコンポーネント・ツリーがADFデータ・ウィンドウに表示されます。ページまたはページ・フラグメントがページ・テンプレートに基づいている場合、ページ・テンプレートに由来する内容をファセット参照項目の外部に組み込むことができます。これには、「ADFデータ」ウィンドウの一番上で「ページ・テンプレート・コンテンツを含める」チェックボックスを選択します。ページ・テンプレートの内容が組み込まれない場合、ページまたはページ・フラグメントのUIコンポーネント・ツリーはソース・ファイルのツリーと似た構造になります。

図48-41 ページが選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

ADF構造階層でバインディング・コンテナを選択すると、表48-8に示すノードの選択肢がADFデータ・ウィンドウに表示されます。


表48-8 バインディング・コンテナに対応するADFデータ・ウィンドウの内容

バインディング・コンテナ 説明

ページ定義リンク

対応するページ定義ソース・ファイルに移動して、エディタ・ワークスペースで開く。

データ・コントロール

バインディング・コンテナのデータ・コントロールが表示されます。

ADFビジネス・コンポーネント・オブジェクトよって実装されたデータ・コントロールと非ADFビジネス・コンポーネント・オブジェクトによって実装されたデータ・コントロールの表示は少し異なります。ADFビジネス・コンポーネント・ベースのデータ・コントロールの表示は、行コレクションを使用する実際のビジネス・サービス実装と似ています。非ADFビジネス・コンポーネント・ベースのデータ・コントロールは、通常、RAWメンバー変数として表示されます。これはADF宣言デバッガの「データ」ウィンドウに表示される項目と似ています。「ADFデータ」ウィンドウには、メンバー変数や配列など、キャッシュされた情報しか表示されません。標準デバッガ機能を使用して、各項目をカスタマイズすることもできます。

各ADFビジネス・コンポーネント・データ・コントロールについて次の情報が表示されます。

  • 行コレクション

  • 各行コレクションの問合せ文字列

  • 各行コレクションに対する変数での置換を含む問合せ文字列

  • アプリケーション・データ行

  • 現在行のインジケータ

  • 更新識別子

  • 現在の値と元の値(同じリクエスト内で変更される場合)

パラメータ

すべてのバインディング・コンテナ・パラメータの現在の値。

実行可能ファイル

実行可能ファイルが表示され、現在行のインジケータと、現在と元の値(同じリクエスト内で変更された場合)が示されます。これには次のタイプの実行可能ファイルが含まれます。

  • イテレータ - 対応する属性バインディングがRefreshプロパティおよびRefreshConditionプロパティと一緒に表示されます。

  • タスク・フロー - タスク・フロー・バインディングに割り当てられたタスク・フローIDの現在の値、および関連するすべてのパラメータ値。タスク・フローIDは、対応するタスク・フロー定義ソース・ファイルをエディタ・ワークスペースで開くためのリンクとして表示される。リンク・テキストは、<task flow source document>#<task flow id>のように構成されます。

  • 検索リージョン - イテレータと似ていますが、基準と置換情報を含む基準も表示されます。

バインディング

値、表、ツリーおよびメソッドのバインディングが表示されます。各バインディングには次の情報が含まれます。

  • 関連付けられた実行可能ファイル

  • 更新識別子

  • 現在の値と元の値(同じリクエスト内で変更される場合)

ページ・テンプレートのバインディング・コンテナ

対応するページまたはページ・フラグメントがページ・テンプレートを利用していた場合、ページ・テンプレートのバインディング・コンテナは、ページまたはページ・フラグメント・バインディング・コンテナの内容の子として表示されます。


非ADFビジネス・コンポーネント・オブジェクトに基づくアプリケーションのバインディング・コンテナを選択すると、「ADFデータ」ウィンドウにバインディング・コンテナの内容が表示されます(図48-1)。

図48-42 バインディング・コンテナ(非Business Components)が選択された「ADFデータ」ウィンドウ

この図は周囲のテキストで説明しています

ADFビジネス・コンポーネント・オブジェクトに基づくアプリケーションのバインディング・コンテナを選択すると、「ADFデータ」ウィンドウに標準の行コレクション・アイコンが表示されます(図48-2)。

図48-43 バインディング・コンテナ(ビジネス・コンポーネント)が選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

ADFデータ・ウィンドウの「パラメータ」ノードを展開すると、図48-44のように情報が表示されます。

図48-44 「パラメータ」が選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

ADFデータ・ウィンドウの「実行可能ファイル」ノードを展開すると、図48-45のように情報が表示されます。

図48-45 「実行可能ファイル」が選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

値が変更された場合、変更された項目は左側に青い点が付いてマークされ、以前の値がカッコ内に表示されます。たとえば、OrderTotalの値が7895.81から7670.11に変更されたとします。「ADFデータ」ウィンドウでは、OrderTotalと親のOrdersView1Iteratorの横に青い点が表示され、「値」列に現在の値と前の値が表示されます(図48-46)。

図48-46 値の変更が青い点で示されるADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

メソッドのバインディング情報はADFデータ・ウィンドウで図48-47のように表示されます。

図48-47 メソッドのバインディングが選択されたADFデータ・ウィンドウ

この図は周囲のテキストで説明しています

「ADF構造」ウィンドウで「アプリケーション・データ」ノードを選択すると、対応するビュー・ポート(または、ADFコントローラが使用されない場合はバインディング・コンテキスト)の現在のデータ・コントロール・フレーム内でインスタンス化されたアプリケーション・オブジェクト(ADFビジネス・コンポーネント・オブジェクトなど)が、ADFデータ・ウィンドウに表示されます。

ADFビジネス・コンポーネント・オブジェクトで実装されたビジネス・サービスによって、図48-48のようにアプリケーション・データの内容が表示されます。これは表48-9で説明します。

図48-48 ADFビジネス・コンポーネント・ビジネス・サービスのアプリケーション・データ

この図は周囲のテキストで説明しています

表48-9 アプリケーション・データに対応するADFデータ・ウィンドウの内容

バインディング・コンテナ 説明

アプリケーション・モジュール

対応するビュー・ポートのデータ・コントロール・フレームのアプリケーション・モジュールが、アプリケーション・データ階層にルート・ノードとして表示されます。アプリケーション・モジュールの設計時のアイコンによってノードが示されます。アプリケーション・モジュール・ノードでは次の情報が提供されます。

  • アプリケーション・モジュール・リンク - 対応するアプリケーション・モジュールのソース・ファイルをエディタ・ワークスペースで開くためのリンク。

  • トランザクション - アプリケーション・モジュールの現在のトランザクション・ステータス(該当する場合)

  • ビュー・オブジェクト

  • エンティティ・オブジェクト

ビュー・オブジェクト

対応するビュー・ポートのデータ・コントロール・フレーム内でインスタンス化されたビュー・オブジェクトが、対応するアプリケーション・モジュール・ルート・ノードの下に下位ノードとして表示されます。設計時のアイコンによって示されます。子ビュー・オブジェクトは、親ビュー・オブジェクトの下位階層に表示されます。名前付き行セットはビュー・オブジェクトと同様に表示されます。ビュー・オブジェクトの名前付きイテレータは子ビュー・オブジェクトと同様に表示されます。各ビュー・オブジェクト・ノードでは次の情報が提供されます。

  • ビュー・オブジェクト・リンク - 対応するビュー・オブジェクトのソース・ファイルをエディタ・ワークスペースで開くためのリンク。

  • 問合せ - 最後に実行されたビュー・オブジェクトのSQL文。値の置換を含まないバインド変数が表示されます。

  • 置換を含む問合せ - 最後に実行されたビュー・オブジェクトのSQL文。値の置換を含むバインド変数が表示されます。

  • バインド変数 - 最後に実行されたビュー・オブジェクトのSQL文のバインド変数とその値

  • ビュー・オブジェクト行 - 表示される各行は、連結されたキー値で示されます。現在行は特別なアイコンで示されます。

  • 属性 - 各行に含まれる属性では、含まれるエンティティ・オブジェクトと一緒に現在の値が表示されます。一時属性も表示されます。

  • 変更 - 同じリクエストで行われた変更は、属性、行およびビュー・オブジェクトのノード・ラベルの左側の青い点で示されます。変更前と変更後の値が両方とも表示されます。

エンティティ・オブジェクト

対応するビュー・ポートのデータ・コントロール・フレーム内でインスタンス化されたエンティティ・オブジェクトが、アプリケーション・モジュール・ルート・ノードの下に下位ノードとして表示されます。設計時のアイコンによって示されます。各エンティティ・オブジェクト・ノードでは次の情報が提供されます。

  • エンティティ・オブジェクト・リンク - 対応するエンティティ・オブジェクトのソース・ファイルをエディタ・ワークスペースで開くためのリンク。

  • エンティティ・オブジェクト行 - 表示される各行は、連結されたキー値で示されます。行の現在のエンティティ状態とポスト状態(たとえばSTATUS_MODIFIED)も表示されます。

  • 属性 - 各行に含まれる属性については現在の値が表示されます。

  • 変更 - 同じリクエストで行われた変更は、属性、行およびエンティティ・オブジェクトのノード・ラベルの左側の青い点で示されます。変更前と変更後の値が両方とも表示されます。


非ADFビジネス・コンポーネント・オブジェクトによって実装されたビジネス・サービスでは、アプリケーション・データの内容がRAWメンバー変数を使用して表示されます。この形式は、図48-42に示す、バインディング・コンテナに関する非ADFビジネス・コンポーネントの内容の表示と似ています

48.9.9 ADF宣言ブレークポイント設定時の処理

ADF宣言ブレークポイントを設定すると、ADFソースJavaコード内の対応する適切なクラス、メソッドまたは他の構造体に、JDeveloperによってブレークポイントが追加されます。コードにブレークポイントが設定されると、アプリケーションがブレークポイントに到達したときに、標準Javaデバッガ・メカニズムによって実行が一時停止されます。ブレークポイントに到達すると、「ブレークポイント」ウィンドウにおいて赤い点のアイコンで示されます。到達した宣言ブレークポイントのタイプに応じて、タスク・フロー・アクティビティ、ページ定義ブレークポイント余白、または「ADFライフサイクル・ブレークポイント」ウィンドウでも、赤い点のアイコンとして示されます。

タスク・フロー・アクティビティ・ブレークポイントの場合、JSFアプリケーション起動フェーズ内で、ブレークポイントが設定されたアクティビティの前にアプリケーションがデバッガによって一時停止されます。つまり、ブレークポイントが設定されているアクティビティは実行されません。

ただし、タスク・フロー・ビュー・アクティビティの場合、アプリケーションは、ビュー・アクティビティが実行された後で、新しいページがレンダリングする前に、JSFレスポンス・レンダリング・フェーズ内で一時停止します。

ページ定義の実行可能ファイルのBeforeブレークポイントの場合、実行可能ファイルがリフレッシュされるとアプリケーションがデバッガによって一時停止されます。ページ定義のアクション・バインディングのBeforeブレークポイントの場合、バインディングが実行されるとアプリケーションがデバッガによって一時停止されます。ページ定義の属性値バインディングのBeforeブレークポイントの場合、ADFソース・コードの属性のsetInputValue()メソッドが実行される前に、アプリケーションがデバッガによって一時停止されます。

ライフサイクルのBeforeブレークポイントの場合、アプリケーションが次のライフサイクル・フェーズに入る前にデバッガによって一時停止されます。ライフサイクルのAfterブレークポイントの場合は、ライフサイクル・フェーズの後で次のフェーズの前にアプリケーションがデバッガによって一時停止されます。

48.10 JavaコードとGroovyスクリプトのブレークポイントの設定

標準的なJavaコード・デバッガと同様に、ADF宣言デバッガを使用してJavaのクラスおよびメソッド上にブレークポイントを設定することができます。Javaコード・ブレークポイントとGroovyスニペット・ブレークポイントは、ADF宣言ブレークポイントと組み合せて使用できます。大部分のADFアプリケーションでは、ADF宣言ブレークポイントから、アプリケーションのトラブルシューティングに十分なデバッグ情報を得ることができます。ADF宣言ブレークポイントの使用の詳細は、「ADF宣言ブレークポイントの設定」を参照してください。ただし、詳細な調査のために、個別のクラスまたはメソッド上にブレークポイントを設定する必要があることがあります。あるいは、非ADFアプリケーションをデバッグする場合に、Javaコード・ブレークポイントを使用できます。

JDeveloperでは、ブレークするクラスを見つけるためのクラス・ロケータ機能が提供されます。Oracle ADFソース・コードを取得できる場合、様々なADFクラスおよびメソッドにアクセスして、デバッグの効率を上げることができます。ADFソース・コードの取得の詳細は、「デバッガでのADFソース・コードの使用」を参照してください。ADFソースを取得すると、「シンボリック・デバッグでデバッグ・ライブラリを使用する方法」で説明するように、ADFソースのデバッグ・ライブラリ・バージョンを使用してデバッグの効率を上げることができます。

48.10.1 Groovyスクリプトのブレークポイントの設定方法

Groovyスクリプトを使用して検証ルールまたは属性のデフォルト値を定義する場合は、これらのGroovyスニペットにブレークポイントを設定できます。

始める前に:

ADF宣言ブレークポイントでなくコード・ブレークポイントを使用する場合について理解しておくと役立ちます。詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。

Groovyスニペット・ブレークポイントを設定してアプリケーションをデバッグする手順:

  1. 「アプリケーション」ウィンドウで、ブレークポイントを設定するGroovyスクリプトを含むエンティティ・オブジェクトまたはビュー・オブジェクトを展開して、オブジェクトの.bcsファイルをダブルクリックします。

  2. ソース・エディタで、該当する行の横の余白をクリックしてブレークポイントを設定し、デバッガを実行します。

  3. アプリケーションがブレークポイントで停止したら、「データ」ウィンドウを使用して、現在のコンテキストのローカル変数および引数を調べることができます。

48.10.2 クラスおよびメソッド上にJavaブレークポイントを設定する方法

クラスおよびメソッド上にJavaブレークポイントを設定できます。ADFソース・コードがある場合、ソースにもJavaブレークポイントを設定することができます。ADFアプリケーションをデバッグしている場合、Javaコード・ブレークポイントでなくADF宣言ブレークポイントを使用することができないか確認することをお薦めします。詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

始める前に:

ADF宣言ブレークポイントでなくJavaコード・ブレークポイントを使用する場合について理解しておくと役立ちます。詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。

次のタスクを完了する必要があります。

  • ブレークポイントの使用を試みる前に、アプリケーションを実行し、欠落しているデータや不完全なデータ、無視されるアクションとメソッド、正しく実行されていないアクションとメソッド、あるいはその他の予期しない結果があるか調べることをお薦めします。問題がなければ、ADFログを有効にしてOracle ADFメッセージを「ログ」ウィンドウに送信するデバッグ構成を作成します。詳細は、「Oracle ADFデバッグ構成の作成方法」を参照してください。

Javaブレークポイントを設定してアプリケーションをデバッグするには:

  1. メイン・メニューで「ナビゲート」「Javaタイプに移動」を選択し(または[Ctrl]を押しながら[-]を押し)、ダイアログを使用して、処理が失敗しているエントリ・ポイントを表すOracle ADFクラスを見つけます。

    注意:

    JDeveloperにより、「アプリケーション」ウィンドウで現在フォーカスのあるユーザー・インタフェース・プロジェクトからのクラスが特定されます。ワークスペースに複数のユーザー・インタフェース・プロジェクトが含まれている場合は、デバッグの対象となるプロジェクトに現在フォーカスがあることを確認してください。

  2. ソース・エディタでクラス・ファイルを開き、メソッドの文をトレース実行できるOracle ADFメソッド・コールを見つけます。
  3. 目的のメソッドにブレークポイントを設定し、デバッガを実行します。
  4. アプリケーションがブレークポイントで停止したら、「データ」ウィンドウを使用して、現在のコンテキストのローカル変数および引数を調べます。

ヒント:

データ、監視または「スマート・データ」ウィンドウで「ソースへ移動」ポップアップ・メニュー・コマンドを使用している場合、「戻る」ボタンを使用することにより実行ポイントに戻ることができます。「ナビゲート」メニューを使用して「戻る」ボタンにアクセスすることもできます。

アプリケーションを一時停止するブレークポイントをキー・ポイント上に設定した後は、「データ」ウィンドウにデータを表示できます。WebページとADFモデル・レイヤーの対話を効率的にデバッグするには、次のことを理解する必要があります。

  • ADFページのライフサイクルと、起動されるメソッド・コール

  • アプリケーションの処理過程でADFモデル・レイヤーに含まれる必要のあるローカル変数および引数

Oracle ADFの処理を理解しておくことは、ブレークポイントを選択的に設定し、アプリケーションによりロードされたデータを調べ、エラーの要因を特定するための手がかりとなります。

注意:

JSF Webページでは、ページのコンポーネントとデータの間の対話を管理するためにバッキングBeanを使用している場合もあります。他のJavaクラス・ファイルと同様に、ブレークポイントを設定してバッキングBeanをデバッグします。

48.10.3 ソース・エディタの使用を最適化する方法

ADFソース・ライブラリをプロジェクトに追加すると、ソース・エディタで使用可能になる有用なQuick JavaDoc機能([Ctrl]+[D])([Ctrl]+[D])にアクセスできるようになります。図48-49に、findSessionCookie()などのメソッドのためのQuick Javadoc機能を示します。

図48-49 ソース・エディタでのADF API上のQuick JavaDocの使用

この図は周囲のテキストで説明しています

48.10.4 ADFソース・コードを使用してブレークポイントを設定およびデバッグする方法

ADFソース・コードをロードした後、Javaコードと同じ方法で、現在のプロジェクトに対するOracle ADFコードをデバッグできます。つまり、[Ctrl]+[-]キーを押してOracle ADFで任意のクラス名を入力すると、JDeveloperによってそのソース・ファイルが自動的に開かれるため、必要に応じてブレークポイントを設定できます。

48.10.5 シンボリック・デバッグでデバッグ・ライブラリを使用する方法

Oracle ADFソース・コードをデバッグする際、デフォルトでは現在実行中のメソッドのパラメータまたはメンバー変数の記号情報は表示されません。

たとえば、ADFソース・コード・デバッグ・ライブラリのないデバッグ・セッションでは、図48-50に示すように、「_slot」など認識できない名前があることがあります。

図48-50 デバッグ・ライブラリがないとわかりにくいローカル記号

この図は周囲のテキストで説明しています

これらの名前はわかりにくいため、デバッグが困難になります。開発環境でデバッグする場合、ソースとともに提供されるADF JARファイルのデバッグ・バージョンを使用することにより、デバッグを容易にできます。

注意:

通常、提供されたデバッグ・ライブラリは、JDeveloperに同梱されている最適化されたJARファイルに比べ、実行時パフォーマンスがわずかに劣るため、テスト環境または本番環境では使用しないでください。

デバッグ・ライブラリJARは、デバッグ情報を追加してコンパイルされたバージョンのOracle ADF JARファイルです。デフォルトの最適化されたJARファイルでなく、これらのデバッグ用JARを使用すると、デバッガにすべての情報が表示されます。たとえば、図48-51に示すように、変数evidの名前が、デバッガで確認できるようになります。

図48-51 デバッガに表示されるシンボル情報

この図は周囲のテキストで説明しています

始める前に:

ADF宣言ブレークポイントでなくJavaコード・ブレークポイントを使用する場合について理解しておくと役立ちます。詳細は、「JavaコードとGroovyスクリプトのブレークポイントの設定」を参照してください。

次のタスクを完了する必要があります。

  • 標準ライブラリJARを置き換える前に、JDeveloperが実行中でないことを確認します。実行中の場合、先に進む前に製品を終了します。

標準ライブラリJARをデバッグ・ライブラリJARに置き換えるには:

  1. JDeveloperを終了した状態で、JDeveloperインストール先の./BC4J/libディレクトリで、既存の最適化されたJARファイルすべてのbackupサブディレクトリを作成します。たとえば、jdev11をJDeveloperのホーム・ディレクトリとすると、次のようになります。
    C:\jdev11\BC4J\lib> mkdir backup
    C:\jdev11\BC4J\lib> copy *.jar backup
    
  2. デバッグ時にデバッグ記号を使用する各ADFライブラリに対して、C:\jdev11\BC4J\libディレクトリで対応する既存のライブラリに、一致するライブラリの_g.jarバージョンをコピーします。

    これは、手順2で最適化されたJARファイルのバックアップをbackupディレクトリに作成してあるため安全です。

    通常、デバッグ・ライブラリはデバッグ情報なしでコンパイルされたライブラリよりも実行速度が劣るため、この診断メッセージは実行タイミングでデバッグ・ライブラリを使用しないように注意を促すものです。

    **************************************************************************
    *** WARNING: Oracle BC4J debug build executing - do not use for timing ***
    **************************************************************************
    
  3. 最適化されたライブラリに戻すには、該当するJARファイルを./BC4J/lib/backupディレクトリから./BC4J/libディレクトリにコピーして戻します。

48.10.6 Javaコード・ブレークポイントの設定に関する必知事項

最初に、様々なJavaコード・ブレークポイントとそれを作成する場所を理解する必要があります。

デバッガの「ブレークポイント」ウィンドウを表示するには、メイン・メニューで「ウィンドウ」「ブレークポイント」を選択するか、[Ctrl]、[Shift]、[R]を同時に押します。

「ブレークポイント」ウィンドウで、ポップアップ・メニューから「ブレークポイントの作成」を選択することで、新規のJavaコード・ブレークポイントを作成できます。表48-10に示すように、「ブレークポイント型」ドロップダウン・リストでは、作成するブレークポイントの種類をコントロールします。

注意:

「ブレークポイントの作成」ダイアログを使用して、ADFライフサイクル・フェーズ宣言ブレークポイントを作成することもできます。ADF宣言ブレークポイントの作成の詳細は、「ADFライフサイクル・フェーズ・ブレークポイントの設定方法および使用方法」を参照してください。


表48-10 様々な型のJavaブレークポイント

ブレークポイント型 ブレークポイントが発生する条件 用途

例外

このクラス(またはサブクラス)の例外がスローされる場合。

例外ブレークポイントは、例外がどこで発生するかわからないが、例外の種類(たとえば、java.lang.NullPointerExceptionjava.lang.ArrayIndexOutOfBoundsExceptionoracle.jbo.JboException)はわかっているときに便利です。チェック・ボックス・オプションを使用することで、このクラスの例外を捕捉した場合にブレークするか、捕捉しなかった場合にブレークするかを制御できます。「参照」ボタンは、例外の完全修飾されたクラス名を検索するのに役立ちます。「例外クラス」コンボ・ボックスでは、最近使用した例外ブレークポイント・クラスが記憶されています。これはブレークポイント・ウィンドウでブレークポイントを作成する場合の、デフォルトのブレークポイント型であることに注意してください。

ソース

特定のパッケージで特定クラスの特定ソース行を実行する場合。

「ブレークポイントの作成」ダイアログでソース・ブレークポイントを作成することはほとんどありません。「ナビゲート」→「Javaタイプに移動」メニュー([Ctrl]を押しながら[-]を押す)を使用した後、必要な行番号までスクロールしてから(または「ナビゲート」→「指定行に移動」([Ctrl]を押しながら[G]を押す))、ブレークする行の左のブレークポイント余白をクリックする方法が簡単なためです。これは、新規のソース・ブレークポイントの作成と同じですが、パッケージ、クラスおよび行番号を手入力する必要がありません。

メソッド

指定されたクラスのメソッドが起動する場合。

メソッド・ブレークポイントは、問題のデバッグ中にコール・スタックで表示される、特定のメソッドにブレークポイントを設定するのに便利です。ソース・ブレークポイントを設定できるソースがそのクラスにある場合でも、この種のブレークポイントでは、クラスに対するソースがない場合もデバッガで停止します。

クラス

指定されたクラスのメソッドのいずれかが起動する場合。

クラス・ブレークポイントは、問題に関連するクラスのみが判明している場合に使用できますが、停止のための厳密なメソッドではありません。この種のブレークポイントはソースを必要としません。「参照」ボタンにより、ブレークするクラスの完全修飾名を迅速に検索できます。

ウォッチポイント

指定されたフィールドがアクセスまたは変更される場合。

監視ポイント・ブレークポイントは、クラス内部のコードが複数の異なる場所からメンバー・フィールドを直接変更する場合の問題の検出に使用できます。任意のフィールドが変更される際にデバッガを一時停止できます。クラスのソースのメンバー・フィールドを指し示し、ポップアップ・メニューから「監視ポイントの設定」メニュー項目を使用すると、このタイプのブレークポイントを作成できます。


48.10.7 コントロール向上のためのブレークポイントの編集方法

Javaコード・ブレークポイントの作成後は、ブレークポイントを右クリックして、ポップアップ・メニューから「編集」を選択すると、「ブレークポイント」ウィンドウでブレークポイントを編集できます。

注意:

「ブレークポイントの編集」ダイアログを使用して、ADF宣言ブレークポイントを編集することができます。ただし、他の一部の情報、たとえば「定義」タブの情報などは編集できません。「ブレークポイント」ウィンドウで、ポップアップ・メニューから「編集」を選択することで、「ブレークポイントの編集」ダイアログを起動することができます。ADF宣言ブレークポイントの作成の詳細は、「ADF宣言ブレークポイントの設定」を参照してください。

ブレークポイントの編集で使用できる機能は次のとおりです。

  • このブレークポイントをグループ化する、論理ブレークポイント・グループ名を、同じグループ名の他のグループに関連付けます。ブレークポイント・グループは、1つの操作でブレークポイントのセット全体を簡単に有効化または無効化できます。

  • ブレークポイントをヒットしたときに、デバッガ・アクションをブレークポイントに関連付けます。デフォルト・アクションでは、アプリケーションの状態を調査できるようにデバッガを停止しますが、警告音の追加、ログ・ファイルへの情報の書込み、ブレークポイントのグループの有効化または無効化も可能です。

  • 条件が合う場合にのみデバッガを停止するよう、条件式をブレークポイントに関連付けます。次のように、ほとんどすべてのブール式が可能です。

    • expr ==value

    • expr.equals("value")

    • expr instanceof.fully.qualified.ClassName

    注意:

    デバッガの「監視」ウィンドウを使用して、まず式を評価してその式が有効であるか確認します。

48.10.8 クラス・メンバーのビューのフィルタリング方法

デバッガを使用して、あらゆるクラスに対して、デバッガ・ウィンドウに表示されるメンバーをフィルタすることができます。デバッガの「データ」ウィンドウで任意のアイテムを選択し、ポップアップ・メニューから「プリファレンス」を選択すると、デバッガに表示されるメンバーと表示されないメンバー(場合によっては重要)をカスタマイズできるダイアログが表示されます。クラス・タイプを基準にフィルタすることで、デバッガの「データ」ウィンドウで必要になるスクロールの量を減らすことができます。これは特に、クラスのメンバーの少数のみに関連する場合に役立ちます。

48.10.9 Oracle ADFブレークポイントに関する必知事項

Oracle ADFソース・コードをロードした場合、表48-11にリストされているブレークポイントを使用してアプリケーションをデバッグできます。

これらのブレークポイントをヒットした際に「スタック」ウィンドウを参照してソースを確認することで、現状をよりよく把握することができます。


表48-11 よく使用されるADFブレークポイント

ブレークポイント ブレークポイント型 用途

oracle.jbo.JboException

例外

このブレークポイントは、すべてのADFビジネス・コンポーネントの実行時例外のベース・クラス上にブレークポイントを設定するために便利です。

oracle.jbo.DMLException

例外

これは、トリガーまたは制約違反によって発生する例外が原因で失敗したDML操作など、データベースから生じる例外のベース・クラスです。

doIt()

メソッド

同じデバッグ機能を、ページ定義アクション・バインディング上にADF宣言ブレークポイントを設定することによって実行することもできます。「ページ定義アクション・バインディング・ブレークポイントの設定方法および使用方法」を参照してください。

このJavaブレークポイントの方を使用する場合、JUCtrlActionBindingクラス(oracle.jbo.uicli.bindingパッケージ)にあります。

これは、任意のADFアクション・バインディングの起動時に実行されるメソッドです。関連する場合、ロジックに踏み込んでパラメータを確認できます。

oracle.jbo.server.ViewObjectImpl.executeQueryForCollection

メソッド

これはビュー・オブジェクトがSQL問合せを実行する際にコールされるメソッドです。

oracle.jbo.server.ViewRowImpl.setAttributeInternal

メソッド

これは任意のビュー行属性が設定される際にコールされるメソッドです。

oracle.jbo.server.EntityImpl.setAttributeInternal

メソッド

同じデバッグ機能を、ページ定義属性値バインディング上にADF宣言ブレークポイントを設定することによって実行することもできます。「ページ定義値バインディング・ブレークポイントの設定方法および使用方法」を参照してください。

これは任意のエンティティ・オブジェクト属性が設定される際にコールされるメソッドです。


48.11 ビジネス・コンポーネント内のGroovy式のデバッグ

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ファイルに入っているときに、デバッガのログ・ウィンドウを使用して実行データを表示できます。

48.11.1 Groovy式をデバッグする方法

JDeveloperではGroovy式をデバッグできます。Groovy式をデバッグするには、applicationmodule.xmlファイルを右クリックして「デバッグ」を選択し、Oracle ADF Model Testerを開始するか、またはJavaプログラムを実行するメイン・メソッドを含むJavaファイルを右クリックします。

Groovy式のデバッグを開始するには、次の2つの手順のいずれかを実行します。
  1. モジュール(applicationmodule.xmlファイル)を右クリックして「デバッグ」を選択し、Oracle ADFモデル・テスターを起動します。
  2. メイン・メソッドが含まれているJavaファイルを右クリックし、コンテキスト・メニューから「デバッグ」を選択してJavaプログラムの実行を開始します。または、Javaファイルをダブルクリックして開き、Javaファイル内を右クリックしてポップ・アップ・メニューから「デバッグ」を選択します。

48.11.2 Groovyのデバッグを制御する方法

.bcsファイルにブレークポイントを設定し、ステップ操作(トレース実行、ステップ実行、ステップ・アウト)を使用して、デバッガの実行を制御できます。

Groovyのデバッグを制御する方法:
  1. .bcsファイルをダブルクリックして開きます。
    図48-52.bcsファイルに設定されたブレークポイントを示しています。デバッガがGroovyスクリプトを実行し、この.bcsファイルのブレークポイントが見つかると、デバッガはこのブレークポイントで実行を中断します。トレース実行、ステップ実行、カーソルまで実行を使用して、Groovyデバッグを制御することもできます。
    ブレークポイントの詳細は、ブレークポイントの管理に関する項を参照してください。

    図48-52 .bcsファイルに設定されたブレークポイント

    img/GUID-374471D5-A829-4B6B-9E78-123503F53954-default.png
  2. .bcsファイル内のブレークポイントでデバッガが一時停止したときに、「デバッグ」メニューやツールバー・アイコン、対応するキーボード操作を使用して、ステップ操作を使用できます。トレース実行、ステップ実行、ステップ・アウトという操作があります。
    ステップ操作の詳細は、メソッドにステップ・インする方法に関する項を参照してください。

    アプリケーションではカーソル位置でのデバッガ実行もできます。詳細はカーソル位置での実行方法に関する項を参照してください。

    実行中のデバッガを一時停止できます。その後プログラムの状態を精査し、デバッガの実行を再開します。デバッガの実行を中断し、再開する方法の詳細は、デバッガの中断と再開方法に関する項を参照してください。

    デバッガ・セッションは任意の位置で終了できます。デバッガ・セッションを終了する方法の詳細は、デバッガ・セッションの終了方法に関する項を参照してください。

48.11.3 Groovy式のデバッグ時の処理

アプリケーションは.bcsファイルのGroovyスクリプトをデバッグします。ブレークポイントでデバッガの実行を中断する必要がある場合は、.bcsファイルにそうしたブレークポイントを設定します。デバッガがブレークポイントで中断したらその都度、またはステップ操作を実行したときは、データ/監視/スマート・データなどのウィンドウで情報を精査します。

デバッガがGroovyスクリプトを実行し、「データ」/「監視」/「スマート・データ」などのウィンドウに情報を表示します。図48-53では、ブレークポイントが行27に設定されていて、デバッガがこの行で停止しています。これが現在の実行行(赤色の矢印で表示)です。現在の実行行はメソッドmodifyEname()へのコールを示しています。このメソッドはEmpエンティティのEname属性を変更します。

図48-53 JavaファイルのGroovy式を参照する行に設定されたブレークポイント

img/GUID-F240B797-8025-4538-9980-ADEF41777C91-default.png
Ename属性にはバリデータが定義されています。バリデータはGroovyスクリプト/式を使用して定義されています。このGroovyスクリプトは(他のユース・ケースに定義されている他のGroovyスクリプトとともに).bcsファイルにあります。そのため、行27のこのメソッドをトレース実行すると、アプリケーションがこの.bcsファイルにアクセスし、バリデータを実行します。図48-54.bcsファイルの行23の事前設定されたブレークポイントの位置でデバッガが停止しているところを示しており、バリデータも実行されています。

図48-54 デバッガがJavaファイルから.bcsファイルに移動し、.bcsファイルのブレークポイントで停止

img/GUID-374471D5-A829-4B6B-9E78-123503F53954-default.png
この時点でデバッグを再開するか、デバッグを終了するか、またはステップ操作を使用します。詳細は「Groovyのデバッグを制御する方法」を参照してください。

48.12 JUnitを使用した回帰テスト

ビジネス・サービスのテストは、アプリケーション開発プロセスの重要な部分です。アプリケーション・モジュールで提供される機能を実行する一連の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つ以上のassertXxx()メソッドをコールして、特定の式の予測結果がどのようになる必要があるかをアサートします。テスト・スイートを実行する際、任意のテスト・ケースの任意のテストに失敗したアサーションが含まれる場合、「JUnitテスト・ランナー」ウィンドウに失敗したテストが赤の失敗アイコンとともに表示されます。

JUnitテスト生成ウィザードによってデータ・モデルの各ビュー・オブジェクト・インスタンスに対してスケルトン・テスト・ケース・クラスが生成され、それぞれのクラスにはtestAccess()という名前の1つのテスト・メソッドが含まれます。このメソッドには、ビュー・オブジェクト・インスタンスが存在することをテストするassertNotNull()メソッドへのコールが含まれます。

// In ViewInstanceNameTest.java test case class
  public void testSomeMeaningfulName() {
  // test assertions here
  }

生成されたテスト・ケースそれぞれに、そのテスト・ケース実行の一部としてJUnitフレームワークが実行する1つ以上のテスト・メソッドを含めることができます。接頭辞testで始まる名前を持つクラスでpublic voidメソッドを作成するか、注釈@Testを使用するだけで、テストをテスト・ケースに追加できます。

48.12.1 JUnit拡張機能を取得する方法

JUnitを利用可能にし、メニュー・システムに表示されるようにするには、JDeveloperに拡張機能としてロードする必要があります。

始める前に:

JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。

JUnit拡張機能をロードするには:

  1. メイン・メニューで、「ヘルプ」「更新の確認」を選択します。
  2. 「更新の確認」ダイアログの「ソース」ページで、「更新センターの検索」「Oracleの公式拡張機能と更新」を選択し、「次へ」をクリックします。

    JUnit zipファイルがある場合、またはJUnitの選択が「可能な更新」リストに表示されない場合は、「ローカル・ファイルからインストール」を選択してJUnit zipファイルをロードします。

  3. 「更新」ページで、図48-55に示すように、「JUnit統合」を選択し、「次へ」をクリックします。

    図48-55 JUnit拡張機能を追加するための「更新の確認」ウィザード

    この図は周囲のテキストで説明しています
  4. 「ライセンス契約」ページで、「同意する」「終了」の順にクリックします。

48.12.2 JUnitテスト・ケースの作成方法

JUnitテスト・ケースを作成する前に、テストされるプロジェクトの作成を完了している必要があります。

始める前に:

JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。

JUnitテスト・ケースを作成するには:

  1. 「アプリケーション」ウィンドウで、テスト・ケースを作成するプロジェクトを右クリックし、「新規」「ギャラリから」の順にクリックします。
  2. 「新規ギャラリ」で、「一般」を開き、「ユニット・テスト」、続いて「テスト・ケース」を選択し、「OK」をクリックします。
  3. 「テスト・ケースの作成」ダイアログの「テストするクラスの選択」ページで、「テスト中のクラス」に入力するか、「参照」をクリックします。
  4. 「クラス・ブラウザ」ダイアログで、テストするクラスを確認します。または、「クラス名を一致」フィールドに最初の文字を入力します。「一致するクラス」リストは識別しやすいようにフィルタ処理されます。

    たとえば、Summitと入力すると、図48-56に示すように、リストが4つの項目にまでフィルタされます。

    図48-56 テスト対象のクラス・ファイルを選択するためのクラス・ブラウザ

    この図は周囲のテキストで説明しています

    クラスを選択し、「OK」をクリックして、ダイアログを閉じます。「次へ」をクリックします。

  5. テストする個別のメソッドを選択し、「次へ」をクリックします。

    たとえば、図48-57では、チェックされた4つのメソッドがテストされます。

    図48-57 テスト対象のメソッドを選択するための「テスト・ケースの作成」ダイアログ

    この図は周囲のテキストで説明しています
  6. 「テスト・ケース・クラスの設定」ダイアログで、テスト・ケース、パッケージ、その拡張対象のクラスの名前を入力し、JUnitでスタブが作成される組込み機能のリストを選択します。「次へ」をクリックします。

    たとえば、図48-58では、JUnitが、Oracle ADFのSummitサンプル・アプリケーションのoracle.summit.baseパッケージにあるSummitViewObjectImplTestテスト・ケースのsetUp()メソッドに対するスタブを作成します。

    図48-58 テスト対象のクラスを設定するための「テスト・ケースの作成」ダイアログ

    この図は周囲のテキストで説明しています
  7. 「テスト・フィクスチャの選択」ページで、テスト・ケースに追加するテスト・フィクスチャを選択するか、「参照」をクリックします。
  8. テスト・ケースに追加するテスト・フィクスチャがすべてリスト中で選択されていることを確認し、「終了」をクリックします。

48.12.3 JUnitテスト・フィクスチャの作成方法

クラスまたはメソッドに対して複数のテストが必要な場合、JUnitテスト・フィクスチャを作成することをお薦めします。JUnitテキスト・フィクスチャを使用すると、テストを初期化するために必要なテスト・コードの重複作成を防止することができます。

始める前に:

JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。

JUnitテスト・フィクスチャを作成するには:

  1. 「アプリケーション」ウィンドウで、テスト・フィクスチャを作成するプロジェクトを右クリックし、「新規」「ギャラリから」の順にクリックします。
  2. 「新規ギャラリ」で、「一般」を開き、「ユニット・テスト」、続いて「テスト・フィクスチャ」を選択し、「OK」をクリックします。
  3. 「テスト・フィクスチャの作成」ダイアログで、テスト・フィクスチャの名前、パッケージ、およびその拡張対象のクラスを入力します。
  4. 「OK」をクリックします。

48.12.4 JUnitテスト・スイートの作成方法

JUnitテスト・スイートを作成する前に、テスト・スイートに追加できるJUnitテスト・ケースの作成を完了しておくことをお薦めします。

始める前に:

JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。

JUnitテスト・スイートを作成するには:

  1. 「アプリケーション」ウィンドウで、テスト・スイートを作成するプロジェクトを右クリックし、「新規」「ギャラリから」の順にクリックします。
  2. 「新規ギャラリ」で、「一般」を開き、「ユニット・テスト」、続いて「テスト・スイート」を選択し、「OK」をクリックします。
  3. 「テスト・スイートの作成」ダイアログの「テスト・スイート・クラスの設定」ページで、テスト・スイート、パッケージ、およびその拡張対象のクラスの名前を入力します。「次へ」をクリックします。

    たとえば、図48-59では、java.lang.Objectクラスを拡張するAllTestsテスト・スイートが作成されます。

    図48-59 「テスト・スイートの作成」ウィザード

    この図は周囲のテキストで説明しています
  4. 「テスト・スイートの作成」ダイアログの「テスト・ケースの選択」ページで、テスト・スイートに組み込むすべてのテスト・ケースが選択されていることを確認します。作成したテストケースは、リストに移入されます。組み込まないテスト・ケースがあれば、その選択を解除します。「終了」をクリックします。

48.12.5 ビジネス・コンポーネント・テスト・スイートの作成方法

作成されるテキスト・フィクスチャは、接続数を減らすシングルトン・クラスです。各テスト・ケースで接続または切断する場合は、JUnit 4の注釈、@Beforeおよび@Afterを使用してテスト・ケースをカスタマイズします。

JUnit BC4Jテスト・スイート・ウィザードでは、アプリケーション・モジュールの各ビュー・オブジェクトに対してテストが生成されます。アプリケーション・モジュールがメソッドをエクスポートしていない場合、ウィザードによって、アプリケーション・モジュールそのもののテストも生成されます。生成されるビュー・オブジェクト・クラスの形式はview_objectVOTest.javaです。パッケージにはpackage.view.viewobjectVOという形式で配置されます。このときpackageはアプリケーション・モジュール・パッケージです。生成されるアプリケーション・モジュール・テストの形式はapplication_moduleAMTest.javaです。パッケージにはpackage.applicationModuleという形式で配置されます。生成されるテスト・フィクスチャ・クラスの形式はapplicationmoduleAMFixture.javaです。アプリケーション・モジュール・テストと同じパッケージに配置されます。

生成されるすべてのテスト・スイート・クラスの形式はAllapplicationmoduleTest.javaです。アプリケーション・モジュールのパッケージ名と同じ名前でパッケージに配置されます。

各アプリケーション・モジュールまたはビュー・オブジェクト・テストについてテスト・ケースのXMLファイルも生成されます。このXMLファイルには、アプリケーション・モジュールまたはビュー・オブジェクト・テスト・ケースで定義されているテスト・メソッドが含まれます。重複が多くなりすぎる可能性があるため、ベース・クラス(ある場合)のテスト・メソッドは含まれません。

たとえば、パッケージStoreAPack内に、ビュー・オブジェクトEmployees1View1およびEmployees1View2を含むStoreAAppModuleという名前のアプリケーション・モジュールのテスト・スイートを作成したら、図48-20に示すように、「アプリケーション」ウィンドウにはテスト階層が表示されます。

図48-60 ビジネス・コンポーネントのテスト・スイートが表示された「アプリケーション」ウィンドウ

この図は周囲のテキストで説明しています

始める前に:

JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。

次のタスクを完了する必要があります。

ビジネス・コンポーネント・テスト・スイートを作成するには:

  1. メイン・メニューで、「ファイル」「新規」「ギャラリから」を選択します。

    ビジネス・コンポーネント・テスト用に別のプロジェクトを作成します。

  2. 「新規ギャラリ」で、「一般」を開き、「プロジェクト」、続いて「Javaアプリケーション・プロジェクト」を選択し、「OK」をクリックします。
  3. Javaプロジェクトの作成ウィザードの「プロジェクト名」ページで、テスト・プロジェクトの名前とディレクトリ・パスを入力し、「次へ」をクリックします。
  4. プロジェクトのJava設定ページで、パッケージ名、プロジェクトのJavaソース・コードのディレクトリ、および出力クラス・ファイルが配置される出力ディレクトリを入力し、「終了」をクリックします。
  5. 「アプリケーション」ウィンドウで、テストするアプリケーション・モジュールをダブルクリックします。
  6. 概要エディタで、「Java」ナビゲーション・タブをクリックします。
  7. 概要エディタの「Java」ページで、「Javaクラス」セクションの「編集」アイコンをクリックします。
  8. 「Javaオプションの選択」ダイアログで「アプリケーション・モジュール・クラスの生成」を選択して、「OK」をクリックします。
  9. 概要エディタの「Java」ページで、「クラス・インタフェース」セクションの「編集」アイコンをクリックします。
  10. 「クライアント・インタフェースの編集」ダイアログで、テストするメソッドを「選択済」ペインに移動して、「OK」をクリックします。
  11. 「アプリケーション」ウィンドウで、作成したテスト・プロジェクトを右クリックし、「新規」「ギャラリから」をクリックします。
  12. 「新規ギャラリ」で、「一般」を展開し、「ユニット・テスト」「ビジネス・コンポーネントのテスト・スイート」の順に選択して、「OK」をクリックします。
  13. JUnit BC4Jテスト・スイート・ウィザードの「テストの構成」ページで次の値を選択し、「次へ」をクリックします。
    • ビジネス・コンポーネント・プロジェクト: テストするアプリケーション・モジュールを含むプロジェクトを選択します。

    • アプリケーション・モジュール: テストするアプリケーション・モジュールを選択します。

    • 構成: ローカル・アプリケーション・モジュールまたは共有アプリケーション・モジュールを選択します。

    • 「ベース・クラスのテスト」→「アプリケーション・モジュール拡張」: 様々なベース・クラスを指定できます。生成されるテスト・ケース・クラスはそのベース・クラスから拡張されます。このとき、ベース・クラスのすべてのpublic抽象メソッドの本体は単純なデフォルトの実装になります。

    • 「ベース・クラスのテスト」→「ビュー・オブジェクト拡張」: ビュー・オブジェクトが拡張するクラスを指定できます。生成されるテスト・ケース・クラスはそのベース・クラスから拡張されます。このとき、ベース・クラスのすべてのpublic抽象メソッドの本体は単純なデフォルトの実装になります。

  14. 「サマリー」ページで選択内容を確認して、「終了」をクリックします。

48.12.6 Business Componentsテスト・フィクスチャの作成方法

ビジネス・コンポーネントのテスト・スイートを作成すると、ビジネス・コンポーネントのテスト・フィクスチャも一緒に作成されます。また、ビジネス・コンポーネントのテスト・フィクスチャを個別に作成することもできます。

生成されるテスト・フィクスチャ・クラスの形式はapplicationmoduleAMFixture.javaです。形式がpackage.applicationModuleのパッケージに収められます。このとき、packageはアプリケーション・モジュール・パッケージです。

始める前に:

JUnitを使用した回帰テストによるテスト・ケースの作成に関する知識が役立つ場合があります。詳細は、「JUnitを使用した回帰テスト」を参照してください。

次のタスクを完了する必要があります。

ビジネス・コンポーネント・テスト・フィクスチャを作成するには:

  1. メイン・メニューで、「ファイル」「新規」「ギャラリから」を選択します。

    ビジネス・コンポーネント・テスト用に別のプロジェクトを作成します。

  2. 「新規ギャラリ」で、「一般」を開き、「プロジェクト」、続いて「Javaアプリケーション・プロジェクト」を選択し、「OK」をクリックします。
  3. Javaプロジェクトの作成ダイアログの「プロジェクト名」ページで、テスト・プロジェクトの名前とディレクトリ・パスを入力し、「次へ」をクリックします。
  4. プロジェクトのJava設定ページで、パッケージ名、ソース・ディレクトリおよび出力ディレクトリを入力し、「終了」をクリックします。
  5. 「アプリケーション」ウィンドウで、テストするアプリケーション・モジュールをダブルクリックします。
  6. 概要エディタで「Java」ナビゲーション・タブをクリックし、「Javaクラス」セクションの「編集」アイコンをクリックします。
  7. 「Javaオプションの選択」ダイアログで「アプリケーション・モジュール・クラスの生成」を選択して、「OK」をクリックします。
  8. 概要エディタの「Java」ページで、「クラス・インタフェース」セクションの「編集」アイコンをクリックします。
  9. 「クライアント・インタフェースの編集」ダイアログで、テストするメソッドを「選択済」ペインに移動して、「OK」をクリックします。
  10. 「アプリケーション」ウィンドウで、作成したテスト・プロジェクトを右クリックし、「新規」「ギャラリから」をクリックします。
  11. 「新規ギャラリ」で、「一般」を展開し、「ユニット・テスト」「ビジネス・コンポーネントのテスト・フィクスチャ」の順に選択して、「OK」をクリックします。
  12. JUnit BC4Jテスト・フィクスチャ・ウィザードの「テストの構成」ページで次の値を選択し、「次へ」をクリックします。
    • ビジネス・コンポーネント・プロジェクト: テストするアプリケーション・モジュールを含むプロジェクトを選択します。

    • アプリケーション・モジュール: テストするアプリケーション・モジュールを選択します。

    • 構成: ローカル・アプリケーション・モジュールまたは共有アプリケーション・モジュールを選択します。

  13. 「サマリー」ページでテスト・フィクスチャ・クラスを確認して、「終了」をクリックします。

48.12.7 Antビルド・スクリプトの一部としての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ターゲットの実行」→「テスト」を選択します。