この章では、Oracle JDeveloperの監査とモニタリングの機能について説明します。
この章の内容は次のとおりです。
JDeveloperに用意されている監査とモニタリングのツールを使用して、アプリケーションのヘルス状態とパフォーマンスを分析します。これらのツールは、コードの品質向上に効果的です。JDeveloperの監査機能を使用すると、Javaコードがプログラミング規格に準拠しているかどうかを分析できます。
コード監査は、構文が正しいかどうかではなく、プログラミング規格に準拠しているかどうかを調べるものです。コードは、コンパイルが不可能または実行不可能な場合も監査できます。
HTTPアナライザを使用すると、プロジェクトのWebサービスのクライアントとサービス間、およびJavaアプリケーションとWebリソース間で送受信されるHTTPトラフィックの観点でアプリケーションのデバッグが容易になります。
監査とは、プログラミング規格を定義している規則およびメトリックに準拠しているかどうかについてのコードの静的な分析のことです。ソフトウェアのコード監査は、バグ、セキュリティ侵害またはプログラミング規則違反を発見する目的で行われる、プログラミング・プロジェクト内のソース・コードの包括的な分析です。
規則は、ある機能の有無に関する定性試験です。たとえば、Javaコーディングの共通のスタイルとして、クラス名を大文字にする必要があります。規則に準拠していない場合は、違反が発生します。
コード測定は、サイズまたは複雑さの定量測定です。たとえば、メソッドのサイズが大きすぎたり、メソッドで扱うケースの数が多すぎる場合、その機能の一部を別のメソッドに委譲する必要があります。指定の上限を超えると、しきい値超過異常が発生します。
プロファイルを作成してカスタマイズし、使用する規則を選択して個々の規則のパラメータを設定できます。詳細は、それぞれのコード監査規則およびコード測定を参照してください。
JDeveloperのコード監査およびコード測定の機能は拡張できます。コード監査およびコード測定は、それぞれカスタマイズおよび拡張可能なソース・コード分析および変換フレームワークのある2つの側面です。コード監査およびコード測定用のパブリックAPIは、oracle.jdeveloper.audit
パッケージです。
Javaコードを監査するには、次のようにします。
監査ツールをソース・ファイルに対して実行し、コード監査レポートを生成します。詳細は、第11.2.12項「コード監査レポート生成のためにコード監査を実行する方法」を参照してください。
編集中にコード監査を行う場合は、コード・アシストを使用します。「コード・アシスト」により、編集中にバックグラウンドでコード監査を実行できます。編集時に、監査違反が強調表示されます。自動修正を適用できます。
コマンドラインからコード監査を実行して、コード監査レポートを生成します。詳細は、第11.2.8項「コマンドラインからのJavaコードの監査」を参照してください。
「問題」ウィンドウが表示されます。「問題」ウィンドウは、コードの監査を支援するJDeveloperの機能の1つです。このウィンドウには、「ファイル・リスト」で選択したドキュメント内の監査違反が表示され、問題を解決するための情報が提供されます。
監査レポートには、ルール違反および測定結果がツリーに編成されて表示されます。ツリーの各行は構成メンバーまたは違反のいずれかに対応しており、その構成メンバーまたは理論上の違反に対するすべての測定値が含まれます。構成メンバーは、メソッド、クラス、ファイル、プロジェクトまたはワークスペースです。
コード監査規則は、静的かつ定性的なコード分析です。
コード監査プロファイルで、プロパティを設定することによって個別ルールの有効化や構成を実行できます。コード構成メンバーが規則に従っていない場合、規則違反が報告されます。一部の規則には自動修正が定義されており、ユーザーが適用を選択できます。
ルールには、表11-1に示すプロパティが含まれています。
監査のコード測定は、静的かつ量的なコード分析です。コード監査プロファイルで、個別メトリックの有効化と構成が実行できます。コード測定は、しきい値を使用して設定します。コード構成メンバーがしきい値を超えると、しきい値超過の測定がコード監査レポートに報告されます。
JDeveloperでは、表11-2に示すメトリックが測定されます。
監査ツールを使用すると、監査レポートを表示したり、規則違反やしきい値を超える測定結果を調査および修正できます。コード監査が開始されると、「ログ」ウィンドウに新しいタブが作成され、このタブにコード監査レポートが表示されます。
監査とは、プログラミング規格を定義している規則およびメトリックに準拠しているかどうかについてのコードの静的な分析のことです。コード監査では、コードの改善および保守を困難にしている不具合が検出されます。JDeveloperの監査ツールを使用すると、このような不具合を検出および修正できます。コンパイルが不可能または実行不可能な場合でも、コードの監査は可能です。
コード監査レポートとは、構成に編成されたツリーとして表示される規則違反およびコード測定結果のセットのことです。構成には、メソッド、クラス、パッケージ、ファイル、プロジェクトまたはワークスペースがあります。監査プロファイルに規則が含まれている場合、表には「重大度」列が含まれ、指定した構成の重大度が表示されます。監査プロファイルにメトリックが含まれている場合、表にはメトリックごとに列が追加され、構成の測定結果が表示されます。
列のコンテンツを基にレポートをソートするには、列ヘッダーをクリックします。ソート順序を逆にするには、再度クリックします。
「ログ」ウィンドウのツールバーから、表11-3に示した操作を実行できます。
表11-3 「コード監査」ウィンドウのツールバー・アイコン
アイコン | 名前 | 説明 |
---|---|---|
|
リフレッシュ |
同じプロファイルを使用して同じ選択項目に対してコード監査を再実行する場合にクリックします。 |
|
取消 |
実行中の監査を中断する場合にクリックします。結果の一部が表示される場合があります。 |
|
エクスポート |
レポートをファイルに保存できる「結果のエクスポート」ダイアログを開く場合にクリックします。結果は、XML、HTMLまたはプレーン・テキストで保存できます。 |
|
すべて開く |
レポート内のすべてのコンテナ・ノードを展開し、すべての行を表示する場合にクリックします。 |
|
すべて閉じる |
レポート内のすべてのコンテナ・ノードを閉じ、トップレベルの構成以外のすべてを非表示にする場合にクリックします。 |
|
グループ化 |
表示するコンテナ構成のタイプを指定できる「グループ化」ダイアログを開く場合にクリックします。構成別にグループ化すると、結果の適切な編成、不具合および違反の迅速な追跡、結果を簡単に分析できます。 |
|
異常のみ表示 |
許容範囲内にある測定結果の表示を切り替えます。しきい値は、コード測定の設定可能なプロパティの1つです。 |
|
抑制された問題の表示 |
抑制スキームの問題の表示を切り替えます。 |
|
修正 |
ドロップダウン・メニューから規則違反に対する修正を選択します。個々の規則違反に対して、その違反タイプに定義されている修正から選択します。グループ構成には、「デフォルトの修正を適用」のみを選択できます。これにより、そのタイプに定義されているデフォルトの修正(存在する場合)が適用されます。 |
|
エラーを示す問題の表示 |
選択したファイルのエラー数のみの表示、またはファイルのエラーのリスト表示を切り替えます。 |
|
警告を示す問題の表示 |
選択したファイルの警告数のみの表示、またはファイルの警告のリスト表示を切り替えます。 |
|
不完全を示す問題の表示 |
選択したファイル内の不完全な問題の数のみを表示するか、ファイル内の不完全な問題をリスト表示するかを切り替えます。 |
|
アドバイザリを示す問題の表示 |
選択したファイル内のアドバイザリを示す問題の数のみを表示するか、ファイル内のアドバイザリを示す問題をリスト表示するかを切り替えます。 |
1つ以上の構成(コンテナ・ノード)または規則違反(リーフ・ノード)を選択し、右クリックしてポップアップ・メニューを開きます。ポップアップ・メニューから、選択した構成または規則違反に対して、表11-4に示す操作を実行できます。
表11-4 「コード監査」ウィンドウのポップアップ・メニュー項目
名前 | 説明 |
---|---|
<'コンストラクト>の作成 |
選択すると、指定した修正(定数、staticフィールド、インスタンス・フィールド、変数またはメソッド)が適用されます。 |
<コンストラクト>のルールについて |
この規則違反に対して適用される規則の説明を表示する場合に選択します。 |
問題"<ルール>"を非表示 |
選択した規則のすべての違反をレポートから削除する場合に選択します。 |
非表示の問題の表示 |
選択すると、前に非表示にしたすべての問題がリストアされます。 |
異常のみ表示 |
許容範囲内にある測定結果の表示を切り替える場合にクリックします。 |
エラーを示す問題の表示 |
選択したファイルのエラー数の表示、またはファイルのエラーのリスト表示を切り替えます。 |
警告を示す問題の表示 |
クリックすると、選択したファイルの警告数の表示、またはファイルの警告のリスト表示を切り替えます。 |
不完全を示す問題の表示 |
クリックすると、選択したファイルの不完全な問題数の表示、またはファイルの不完全な問題のリスト表示を切り替えます。 |
アドバイザリを示す問題の表示 |
クリックすると、選択したファイルのアドバイザリ問題数の表示、またはファイルのアドバイザリ問題のリスト表示を切り替えます。 |
抑制された問題の表示(X) |
許容範囲内にある測定結果の表示を切り替える場合にクリックします。 |
取消 |
実行中のコード監査を終了する場合に選択します。 |
リフレッシュ |
コード監査を再実行する場合に選択します。 |
グループ化 |
表示するコンテナ構成のタイプを指定できる「グループ化」ダイアログを開く場合に選択します。 |
すべて開く |
レポート内のすべてのコンテナ・ノードを展開し、すべての行を表示する場合にクリックします。 |
すべて閉じる |
レポート内のすべてのコンテナ・ノードを閉じ、トップレベルの構成以外のすべてを非表示にする場合にクリックします。 |
ソースに移動 |
規則違反があった位置でソース・ファイルを開く場合に選択します。必要に応じて、ファイルを編集して違反を修正できます。 |
エクスポート |
レポートをファイルに保存できる「結果をエクスポート」ダイアログを開く場合に選択します。 |
JDeveloperのコード監査ツールを使用すると、コードの改善および保守を困難にしている不具合が検出されます。コードは、コンパイルが不可能または実行不可能な場合も監査できます。監査のフォーカスは、コード監査の規則およびコード測定のセットであるプロファイルによって定義されます。
Javaコードを監査するには、次のようにします。
Javaプログラムの分析に使用する規則、コード・アシスト、コード測定を指定するコード監査プロファイルを作成します。コード監査プロファイルで、プロパティの設定によって個別の規則やメトリックを有効にしたり、構成できます。コード構成メンバーが規則に従っていない場合、規則違反が報告されます。詳細は、第11.2.9項「コード監査プロファイルの作成方法」を参照してください。
監査レポートを実行します。
メイン・メニューから、「ビルド」→「監査 - <プロジェクト>」を選択します。詳細は、第11.2.12項「コード監査レポート生成のためにコード監査を実行する方法」を参照してください。
Javaコードは、ojaudit.exeを呼び出してコマンドラインから監査することもできます。ojaudit.exeはJDeveloperのインストールに付属しています。詳細は、第11.2.8項「コマンドラインからのJavaコードの監査」を参照してください。
完了した監査レポートで規則違反をインスペクトします。詳細は、第11.2.15項「コード監査レポートの表示」を参照してください。
監査レポートには、ルール違反および測定結果がツリーに編成されて表示されます。ツリーの各行は構成メンバーまたは違反のいずれかに対応しており、その構成メンバーまたは理論上の違反に対するすべての測定値が含まれます。構成メンバーは、メソッド、クラス、ファイル、プロジェクトまたはワークスペースです。
コード監査規則違反を、手動でソースを編集して修正できます。一部の規則違反については、自動修正を選択して修正します。詳細は、第11.2.19項「コード監査規則違反の修正方法」を参照してください。
監査を再実行する場合には、規則、コード・アシストおよびメトリックを有効化または無効化するか、またはそれらの構成を変更することによって、コード監査プロファイルを変更できます。詳細は、第11.2.9項「コード監査プロファイルの作成方法」を参照してください。
完了したコード監査レポートをXMLファイル、HTML形式またはテキスト・ファイルとして保存できます。詳細は、第11.2.18項「コード監査レポートの保存方法」を参照してください。書式設定は、/jdev//audit/stylesheets
ディレクトリ(このディレクトリはコード監査を実行するまで作成されません)のXSLスタイルシート・ファイルで定義されます。カスタム・フォーマットを作成するには、事前定義されたスタイルシート・ファイルの1つをコピーして、このディレクトリに追加します。
JDeveloperインストールに付属しているjdev_install
/jdeveloper/jdev/bin
ディレクトリ内のojaudit.exe
を起動すると、コマンド行からワークスペース、プロジェクトまたはソース・ファイルを監査できます。
シノプシス
ojaudit option... file...
表11-5は、監査の際に使用できるパラメータを示しています。
表11-5 コマンドライン・パラメータ
パラメータ | 説明 |
---|---|
|
コード監査対象のワークスペース・ファイル( |
- |
プロジェクトが監査されていない場合に、監査するファイルのクラスパスを設定します。 |
|
プロファイルの指定したルールまたはメトリックを無効にします。複数の値を指定するには、このオプションを繰り返します。このオプションでは |
|
プロファイルの指定したルールまたはメトリックを有効にします。複数の値を指定するには、このオプションを繰り返します。 |
|
レポートの文字エンコーディングを設定します。指定しない場合は、プロジェクトに指定されている文字コードが使用されます(プロジェクトの「プロジェクト・プロパティ」ダイアログの「コンパイラ」ページを参照してください)。 |
|
監査者によって障害とみなされる問題の重大度を設定します。 |
|
デフォルトの修正をコードに適用します。このオプションを適用すると、ソース・ファイルが変更されます。 |
|
helpコマンドに関するヘルプを表示して終了します。 |
|
問題のないファイルを含む、すべての監査済ファイルを監査レポートに表示します。 |
|
監査する最大ファイル・サイズをMB単位で指定します。 |
|
指定したメトリックを有効にします。 |
|
指定したメトリックを無効にします。このオプションでは |
|
指定した監査ルールを無効にします。このオプションでは |
|
空の監査レポートのタイトルを設定します。 |
|
出力ファイルのパス名を指定します。省略時は、出力は標準出力に書き込まれます。 |
|
(必須)使用するプロファイルを指定します。JDeveloperで定義されているプロファイル(「ツール」→「プリファレンス」ダイアログの「コード監査」→「コード監査プロファイル」ページで設定)のいずれか、またはエクスポートされたコード監査プロファイル・ファイルのパス名です。 一致するプロファイルを検索するときに、大文字/小文字および空白は無視されます。 |
|
定義済プロファイル名を出力して終了します。 |
|
マージしたプロファイルの出力ファイルを設定します。 |
- |
ソース・ファイルであるパラメータに使用されるプロジェクト・コンテキスト。すべてのパラメータがプロジェクトまたはワークスペースの場合、このオプションは必要ありません。 |
- |
著作権メッセージを非表示にします。 |
-role name |
JDeveloperのアクティブなカスタマイズ・ロールを設定します。 |
-rule name |
指定したルールを有効にします。 |
-seal |
指定したプロファイルをシールします。このオプションでは、明示的なパスを指定した |
-rulehelp |
使用可能なルールを出力して、終了します。 |
|
プロジェクトが監査されていない場合に、監査するファイルのソースパスを設定します。 |
|
レポートに適用されるXSLTスタイルシート。この名前は、JDeveloperで定義されているスタイルシートか、またはスタイルシート・ファイルのパス名です。指定しない場合、XMLファイルで出力されます。 一致する定義済スタイルシートを検索するとき、大文字/小文字および空白は無視されます。 |
|
定義済スタイルシート名を出力して終了します。 |
|
レポートに使用されるタイトル。 |
|
実行メッセージをすべて表示します。 |
- |
コマンドのバージョンを表示して終了します。 |
|
監査するファイルのワーキング・セットを設定します。このオプションでは |
|
ワークスペースに使用可能なワーキング・セットを出力して、終了します。 |
|
監査するファイルのワークスペース・コンテキストを設定します。 |
|
既存のXMLレポートの形式を変更します。このオプションでは |
|
出力ファイルを、プレーンXMLレポートとして設定します。このオプションでは |
|
監査ファイルのオプションとパラメータを含めます。 |
次のことに注意してください。
指定されたfile
がワークスペースまたはプロジェクトの場合を除き、-project
、-sourcepath
または-classpath
を指定する必要があります。
プロジェクトがワークスペースの他のプロジェクトに依存する場合、-workspace
を指定する必要があります。
オプション-profile
および-style
では、名前またはURLを受け入れます。名前の大/小文字および空白は無視されます。
オプション-enable
および-disable
では、IDまたはラベルを受け入れます。名前の大/小文字および空白は無視されます。
オプション-rule
および-metric
は、-enableと同義です。オプション-norule
および-nometric
は、-disable
と同義です。
コード監査プロファイルでは、Javaコードの分析に使用する規則、コード・アシストおよびメトリックを指定することによって、監査対象を定義します。「コード監査プロファイル」プリファレンス・ページから、コード監査プロファイルのルール、コード・アシストおよびメトリックをアクティブ化および非アクティブ化することができます。いくつかのプロファイルは事前定義済ですが、既存のプロファイルを変更してその他のプロファイルを作成できます。規則、コード・アシストおよびメトリックを有効化または無効化するか、またはそれらの構成を変更することによって、コード監査プロファイルを変更できます。
表11-6に示すように、特定の監査プロファイルは、デフォルトでは、一部のJDeveloperプロセスと機能により使用されます。
表11-6 監査プロファイル
プロファイル | 説明 |
---|---|
コード・アシスト・ルール |
ソース・エディタ、「問題」ウィンドウ、「アプリケーション概要」、および「ファイル・リスト」により使用されます。 |
コンパイル・ルール |
「プリファレンス」ダイアログの「コード監査」ページで「コンパイル中のコード監査」が選択されている場合に、コンパイルの最後で使用されます。 |
監査ルール |
ソース・エディタ、「問題」ウィンドウ、「アプリケーション概要」、および「ファイル・リスト」により使用されます。 これは、Auditコマンドの初期値です。ただし、「監査」ダイアログでは最後に選択されたプロファイルが記憶されるため、設定は永続的ではありません。 |
Javadocルール |
ソース・エディタで使用されます。 |
ADFベスト・プラクティスのルール |
ADFアプリケーションに使用されます。 |
JDeveloperには事前定義プロファイルがあり、使用可能なルール、コード・アシスト、およびメトリックの組合せがそれぞれ異なっています。
ADFベスト・プラクティスのルール
すべてのメトリック
すべてのルール
監査ルール
コード・アシスト・ルール
コンパイル・ルール
Javadocルール
監査プロファイルを作成する手順:
メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「監査」を選択して、「監査」ページの「プロファイルの管理」をクリックします。
「プロファイル」ドロップダウン・リストから、コピーするプロファイルを選択します。
図11-1に示すように、選択されたプロファイルのプロパティ名と現在の値が右側のパネルに表示されます。選択されたアイテムの説明が「説明」ボックスに表示されます。そのプロパティと設定が右側のペインに表示されます。
新しいプロファイルを有効にするための規則、アシストおよびコード測定を選択します。
「別名保存」をクリックします。
新しいプロファイルの名前を入力し、「保存」をクリックします。
注意: 名前では大/小文字および空白は区別されませんが、大/小文字および空白は保持されます。新しい名前が既存の名前と大/小文字または空白のみが異なる場合は、そのことを通知する警告メッセージが表示されます。 |
新しいプロファイル名が、プリファレンスの「コード監査」→「プロファイル」ページの「プロファイル」ボックスに表示されます。
「OK」をクリックします。
「監査プロファイル」ページで「シール済」オプションが選択された状態で監査プロファイルを保存することにより、現在の監査プロファイルをシールします。これは、次回その特定の監査プロファイルをロードするときに、そのプロファイルに選択されたルールのみが有効になるということです。プロファイルが最後に保存された後の新しいルールは、(そのデフォルト状態に関係なく)無効になります。新しいルールは、JDeveloperの更新時に新しい拡張機能をインストールする場合など、様々な方法で導入できます。プロジェクトの開発過程では、監査プロファイルをシールすると、プロジェクト環境が保存されるため、新しい監査問題の発生が抑えられます。
抑制スキームは、プロジェクトの監査で発見された抑制問題(監査違反)のスキームを記述します。プロジェクトを監査すると、監査ログ・ウィンドウに抑制問題を表示できます。「監査プロファイル」ダイアログにより、抑制スキームの監査の有効(デフォルト状態)と無効を切り替えることができます。抑制スキームを無効にすると、監査時間が短縮され、「ログ」ウィンドウでの出力が減少します。
抑制スキームを無効にするには:
メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「監査」を選択して、「監査」ページの「プロファイルの管理」をクリックします。
「抑制スキーム」タブをクリックします。最上位ノードを選択解除すると、特定のカテゴリのすべての抑制スキームが無効になります。あるいは、ノードを開いて特定のスキームを無効にします。
ボックスを選択して抑制スキームを有効にします。
ダイアログで「OK」をクリックします。
既存のコード監査プロファイルは削除できますが、事前定義プロファイルは削除できません。「別名保存」コマンドで作成したカスタム・プロファイルはすべて削除できます。
既存のコード監査プロファイルを削除するには、次のようにします。
メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「設定」ダイアログが開きます。
「監査」を選択して、「監査」ページの「プロファイルの管理」をクリックします。
「プロファイル」ドロップダウン・リストから、削除するカスタム・プロファイルを選択します。
「その他のアクション」ドロップダウン・リストから、「削除」を選択します。
プロファイルが「プロファイル」ボックスから削除されます。IDEで提供される事前定義済プロファイルはグレー表示になっているため、削除できないことに注意してください。
「OK」をクリックします。
コード監査プロファイルをインポートまたはエクスポートできます。この操作によって、たとえば、プロファイルを共有したり、ojaudit
および夜間ビルドによって使用されるチェックイン済プロファイルを管理できます。コード監査プロファイルは、XMLファイルとしてインポートまたはエクスポートされます。
コード監査プロファイルをインポートまたはエクスポートするには、次の手順を実行します。
「ツール」メニューで、「プリファレンス」を選択して「プリファレンス」ダイアログを開きます。
「監査」を選択して、「監査」ページの「プロファイルの管理」をクリックします。
「その他のアクション」ドロップダウン・リストから、「インポート」または「エクスポート」を選択して、インポートまたはエクスポートするプロファイルを選択します。
Javaプログラムを監査する際に、コード監査レポートを生成できます。コード監査レポートは、規則違反およびしきい値を超えている測定結果のリストです。コード監査レポートでは、これらの問題を調べ、手動または自動で修正できます。
コード監査レポートを生成する手順は次のとおりです。
「アプリケーション」ウィンドウで、1つ以上のアプリケーション、プロジェクト、またはJavaソース・ファイルを選択します。
コード監査コマンドは、エディタや「構造」ウィンドウなど、他のビューから選択して実行することもできます。
メイン・メニューから、「ビルド」→「コード監査 - <target>」、たとえば、「ビルド」→「コード監査 - helloWorld.java」を選択します。
「コード監査 - <target>」ダイアログで、使用するプロファイルを次の2つの方法のいずれかで選択します。
「プロファイル」ドロップダウン・リストから、使用するプロファイルを選択します。
「編集」をクリックしてプロファイルを作成または変更します。
「実行」をクリックします。
コード監査レポートが「ログ」ウィンドウに表示され、コード監査が開始されます。監査を停止する場合には、ログのツールバーの停止アイコンをクリックします。
オブジェクトは、java.io.Serializable
インタフェースを実装することによってシリアル化可能とマークされます。これは、バイトにフラット化し後で展開できることを示します。
オブジェクトのフィールドでシリアル化を無効にするには、そのオブジェクトのクラスのフィールドに、Javaのtransientキーワードでタグを設定します。クラスがシリアル化可能とマークされていても、transientとしてマークされておらずシリアル化できないフィールドを含んでいる場合、そのクラスはシリアル化できません。コード監査を実行すると、このようなシリアル化できないフィールドを検出できます。
コード監査規則を設定するには、次のようにします。
メイン・メニューから、「ツール」→「設定」→「監査」→「プロファイルの管理」を選択します。
「ルール」タブをクリックして、「Java SE」→「Java」→「シリアライズ」の各ノードを開きます。
「シリアライズ可能なクラス」で、「シリアライズ不可」フィールドを選択します。
ルールの説明が右側のパネルに表示されます。違反に対するデフォルトの修正、違反の重大度レベル、警告のスタイルを設定できます。
「OK」をクリックします。
バージョニングを可能にする、serialVersionUID
という識別子があります。java.io.Serializable
を実装しているがserialVersionUID
を持たないすべてのクラスにフラグを設定するコード監査を実行できます。
コード監査規則を設定するには、次のようにします。
メイン・メニューから、「ツール」→「設定」→「監査」→「プロファイルの管理」を選択します。
「ルール」タブをクリックして、「Java SE」→「Java」→「シリアライズ」の各ノードを開きます。
「シリアライズUIDがありません」を選択します。
ルールの説明が右側のパネルに表示されます。違反に対するデフォルトの修正、違反の重大度レベル、警告のスタイルを設定できます。
「OK」をクリックします。
JDeveloperでは、すべてのコード監査規則違反に関するレポートが生成されます。コード監査レポートを使用すると、ルール違反およびしきい値を超えている測定結果を調べ、これを修正できます。図11-2に示すように、コード監査レポートは「ログ」ウィンドウのタブ付きペインとして表示されます。このウィンドウでは、ドロップダウン・メニューからルール違反に対する修正を選択できます。個々の規則違反に対して、その違反タイプに定義されている修正から選択します。
リフレッシュにより、同じプロファイルを使用してコード監査を再実行できます。コードを変更および修正した後でリフレッシュすることもできます。
コード監査レポートをリフレッシュするには、次のようにします。
「ログ」ウィンドウのツールバー内をクリックするか、右クリックして「リフレッシュ」を選択します。
「コード監査結果のエクスポート」ダイアログがクリアされ、新しいコード監査が始まります。コード監査を停止するには、ログのツールバーをクリックします。
コード監査規則違反をインスペクトするには、次のようにします。
コード監査レポートで、表示する構成を選択します。
右クリックして「ソースへ移動」を選択するか、構成メンバーをダブルクリックします。
ソース・ファイルのエディタが開き、規則違反または測定されたコード要素の場所にカーソルが移動します。
違反または異常を右クリックし、「ルール"違反"に関する情報」を選択して、違反が発生したルールの詳細を知ることができます。図11-3に示すように、ルールを記述したダイアログが表示されます。
コード監査レポートの列を左または右の位置に再配置できます。
コード監査レポート列を編成するには、次のようにします。
列ヘッダーを、任意の位置の左または右までドラッグします。
コード監査レポート行は、ルール違反や測定結果、または違反および測定結果のグループです。レポートはツリーとして編成されます。ツリーの行は、構成メンバーまたは違反に対応しており、構成メンバーまたは理論上の違反の測定値が含まれます。構成メンバーは、メソッド、クラス、ファイル、パッケージ・ディレクトリ、プロジェクトまたはワークスペースです。
レポートに表示される構成メンバーを選択できます。
コード監査レポート行を編成するには、次のようにします。
「ログ」ウィンドウのツールバーで、「グループ化」をクリックします。
表示する構成を選択します。
「OK」をクリックします。
列ヘッダーをクリックして、その列で行をソートします。
ソート順序を逆にするには、再度クリックします。
違反が表示されているJavaクラスのセットを削除する場合はフィルタを指定します。パッケージ名、クラス名またはその両方を基準にしてフィルタできます。フィルタは、カンマで区切られた1つ以上のパターンで構成されます。
パターンには、次の特殊文字を含めることができます。
*は、任意の数の文字に一致します。
?は、任意の1文字に一致します。
!がパターンの先頭にある場合は、除外パターンを示します。
フィルタを渡すクラスのセットは、パターンの順序を考慮して決定されます。非除外パターンでは、パターンに一致するすべてのクラスがセットに追加され、除外パターンでは、パターンに一致するすべてのクラスがセットから削除されます。表11-7は、指定できるフィルタを示しています。
表11-7 フィルタ
名前 | 説明 |
---|---|
パッケージ |
完全修飾クラス名の最後の要素以外のすべてに適用されるフィルタのパターンを入力します。このフィールドが空の場合、フィールドは無効です。 |
ファイル |
完全修飾クラス名の最後の要素にのみ適用されるフィルタのパターンを入力します。このフィールドが空の場合、フィールドは無効です。 |
適用 |
特定の「パッケージ」フィルタおよび「ファイル」フィルタをレポート行に適用する場合にクリックします。 |
クリア |
「パッケージ」フィルタおよび「ファイル」フィルタを消去する場合やレポート行をリストアする場合にクリックします。 |
コード監査レポート行をフィルタするには、次のようにします。
コード監査のログ・ウィンドウの「パッケージ」フィールドで、完全修飾クラス名の最後の要素を除くすべての要素に適用される一連のパターンを入力します。このボックスは、「ファイル」フィルタを指定した場合、空白にしておくこともできます。
「ファイル」フィールドで、完全修飾クラス名の最後の要素のみに適用される一連のパターンを入力します。このボックスは、「パッケージ」フィルタを指定した場合、空白にしておくこともできます。
「適用」をクリックします。
選択した行のみを示したレポートが再表示されます。
「クリア」をクリックして、テキストを「パッケージ」ボックスおよび「ファイル」ボックスから削除します。
コード監査レポートをXMLファイル、HTML形式またはテキスト・ファイルとして保存できます。フォーマットは、jdev_install/jdev
/system/audit
/stylesheets
ディレクトリのXSLスタイルシート・ファイルによって定義されます(このディレクトリはコード監査を実行するまで作成されません)。カスタム・フォーマットを作成するには、事前定義されたスタイルシート・ファイルの1つをコピーして、このディレクトリに追加します。
コード監査レポートを保存するには、次のようにします。
「ログ」ウィンドウのツールバー内をクリックするか、右クリックして「エクスポート」を選択します。
「コード監査結果のエクスポート」ダイアログが表示されます。タイトル、書式およびレポートの保存先を選択して、「OK」をクリックします。
コード監査規則違反を、手動でソースを編集して修正できます。一部の規則違反については、自動修正を選択して修正できます。個々の規則違反に対して、その違反タイプに定義されている修正から選択します。グループ構成には、「デフォルトの修正を適用」のみを選択できます。これにより、そのタイプに定義されているデフォルトの修正(存在する場合)が適用されます。
コード監査の規則違反を手動で修正する手順は次のとおりです。
コード監査レポートで、規則違反(「構成」ツリー内のリーフ・ノード)を選択します。
右クリックし、「ソースへ移動」を選択します。
ソース・ファイルのエディタが開き、規則違反の場所にカーソルが移動します。
コードを編集して、違反の原因を修正します。
コード監査規則違反に自動修正を適用するには、次のようにします。
コード監査レポートで、規則違反(「構成」ツリー内のリーフ・ノード)を選択します。
右クリックし、<規則>修正の適用メニュー項目があれば、それを選択します。
または
「ログ」ウィンドウのツールバー内をクリックし、<規則>修正の適用メニュー項目のいずれかを選択します。
構成メンバーでのすべての規則違反に自動修正を適用できます。Default Fix
プロパティがNone
以外の値に設定されている構成メンバーでは、デフォルトの修正が各規則違反に適用されます。
構成メンバーのコード監査規則違反を修正するには、次のようにします。
コード監査レポートで、構成メンバー(「構成」ツリー内のコンテナ・ノード)を選択します。
デフォルトの修正は、次の2つの方法のいずれかを使用して適用できます。
右クリックして「デフォルトの修正を適用」を選択します。
「ログ」ウィンドウのツールバー内をクリックし、デフォルトの値を適用を選択します。
コード監査レポートで特定のタイプの規則違反をすべて非表示にできます。この操作によって、特定の規則の違反がすべて非表示になるため、レポートが読みやすくなります。個別の規則違反を非表示にすることはできません。
コード監査規則違反を非表示するには、次のようにします。
コード監査レポートで、規則違反(「構成」ツリー内のリーフ・ノード)を選択します。
右クリックして、「問題"ルール"を非表示」を選択します。
監査ルールのすべての違反が監査レポートから削除されます。削除された規則が親の構成メンバーのサマリーに記録されることはありません。「しきい値を超えるもののみ表示」が有効になっている場合は、空の構成メンバーは削除されます。有効になっていない場合は、違反のみが削除されます。
非表示のコード監査規則違反を復元するには、次のようにします。
コード監査レポートで右クリックして、ポップアップ・メニューを開きます。
「非表示の問題の表示」を選択します。
以前非表示にされたすべての規則違反が、コード監査レポートに復元されます。
コード測定レポートには、分析対象コードの構成メンバーに関する測定結果が表示されます。しきい値以下の結果を非表示にすると、しきい値を超えている測定結果にレポートをフォーカスできます。しきい値は、コード測定の設定可能なプロパティの1つです。
しきい値を超えている測定結果のみを表示するには、次のようにします。
「ログ」ウィンドウのツールバーで、「異常のみ表示」アイコンをクリックします。もう一度クリックすると、すべての測定結果が表示されます。
削除された測定が、その親となる構成メンバーのサマリーに記録されることはありません。「しきい値を超えるもののみ表示」が有効になっている場合は、空の構成メンバーは削除されます。有効になっていない場合は、違反のみが削除されます。
HTTPアナライザを使用すると、次のようにHTTPトラフィックを監視できます。
Webサービス・クライアントとサービスの間のリクエスト/レスポンス・トラフィックの監視。
JavaアプリケーションとWebリソースの間のHTTPリクエストの監視。
HTTPアナライザは、JDeveloperのコードとそのコードが通信するHTTPリソースとの間でプロキシとして機能し、送受信されるHTTPトラフィックに関連してアプリケーションをデバッグしやすくなります。
HTTPアナライザを実行すると、情報を提供する多くのウィンドウが表示されます。
「ツール」メニューから「HTTPアナライザ」を開くと、図11-4のようにHTTPアナライザ・ログ・ウィンドウが表示されます。デフォルトではJDeveloperの中央下部に、他のログ・ウィンドウと並んで表示されます。
HTTPアナライザを実行すると、「Httpアナライザ」ログ・ウィンドウにリクエスト/レスポンスのメッセージが出力されます。メッセージは、グループ化と並替えが可能です。
メッセージを並べ替えるには、「順序」タブを選択し、列ヘッダーを使用してソートします(ヘッダーのクリックでソート、ダブルクリックで2次ソート)。
メッセージをグループ化するには、「相関」タブをクリックします。
列の順序を変えるには、列ヘッダーをクリックしたまま新しい位置までドラッグします。
表11-8 「Httpアナライザ」ログ・ウィンドウのツールバー・アイコン
アイコン | 名前 | 機能 |
---|---|---|
|
アナライザ・プリファレンス |
新規リスナー・ポートを指定したり、デフォルト・プロキシを変更できるHTTPアナライザのプリファレンス・ダイアログを開く場合にクリックします。「ツール」→「プリファレンス」を選択し、「Httpアナライザ」ページを選択してHTTPアナライザに進むこともできます。 |
|
新規リクエストの作成 |
ペイロード詳細の入力や、メッセージの編集および再送信を行うHTTPアナライザのテスト・ウィンドウを開く場合にクリックします。 |
|
HTTPアナライザの起動 |
HTTPアナライザを起動する場合にクリックします。モニターがバックグラウンドで実行され、「停止」をクリックするか、JDeveloperを終了したときにのみ停止します。複数のリスナーを定義している場合、このボタンをクリックするとすべてのリスナーが起動します。1つのリスナーのみを起動するには、下矢印をクリックして起動するリスナーを選択します。 |
|
HTTPアナライザの停止 |
HTTPアナライザを停止する場合にクリックします。複数のリスナーを実行している場合、このボタンをクリックすると、すべてのリスナーが停止します。1つのリスナーのみを停止するには、下矢印をクリックして停止するリスナーを選択します。 |
|
リクエストの送信 |
リクエストの内容を変更したときに、リクエストを再送信する場合にこのボタンをクリックします。変更されたリクエストが送信され、戻されたレスポンスで変更を確認できます。 |
|
WS-Iログ・ファイルを開く |
既存のWS-Iログ・ファイルにナビゲートできる「アップロードするWS-Iログ・ファイルの選択」ダイアログを開く場合にクリックします。詳細は第20.10項「Webサービスの監視と分析」を参照してください。 |
|
パケット・データの保存 |
HTTPアナライザ・ログ・ウィンドウの内容をファイルに保存する場合にクリックします。 |
|
WS-I分析 |
Webサービスをパケット・レベルで検証できるWS-I Analyzeウィザードを起動する場合にクリックします。詳細は第20.10項「Webサービスの監視と分析」を参照してください。 |
|
すべて選択 |
HTTPアナライザのログ・ウィンドウですべてのエントリを選択する場合にクリックします。 |
|
すべて選択解除 |
HTTPアナライザですべてのエントリの選択を解除する場合にクリックします。 |
|
選択した履歴のクリア(削除) |
HTTPアナライザでエントリをクリアする場合にクリックします。 |
HTTPアナライザのログ・ウィンドウで「新規リクエストの作成」ボタンをクリックすると、空のHTTPアナライザ・テスト・ウィンドウが開きます。「アプリケーション」ウィンドウで、Webサービス・コンテナのコンテキスト・メニューから「Webサービスのテスト」を選択したり、HTTPアナライザのログ・ウィンドウで行をダブルクリックすると、図11-5のようにリクエスト/レスポンスの詳細を示すテスト・ウィンドウが開きます。デフォルトではJDeveloperの中央、ソース・エディタが表示されるのと同じ位置に表示されます。
テスト・ウィンドウでは、メッセージのヘッダーとパラメータを調べることができます。サービスをテストするには、適切なパラメータを入力して「リクエストの送信」をクリックします。
テスト・ウィンドウの下部にあるタブから、メッセージの内容の表示方法を選択できます。選択できるメッセージの表示方法は、次のとおりです。
図11-5に示されている「SOAP構造」。
次のようなHTTPコード。
<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://annotation/"> <env:Header/> <env:Body> <ns1:getDeptInfo> <arg0/> </ns1:getDeptInfo> </env:Body> </env:Envelope>
次のようなメッセージの16進コンテンツ。
[000..015] 3C 3F 78 6D 6C 20 ... 3D 22 31 <?xml version="1 [016..031] 2E 30 22 20 65 6E ... 22 55 54 .0" encoding="UT [032..047] 46 2D 38 22 3F 3E ... 6E 76 65 F-8"?> <env:Enve [048..063] 6C 6F 70 65 20 78 ... 76 3D 22 lope xmlns:env="
次のようなRAWメッセージ。
POST http://localhost:7101/WebService-Annotation-context-root/MyCompanyPort HTTP/1.1 SOAPAction: "" Content-Type: text/xml; charset=UTF-8 Host: localhost:7101 Content-Length: 277 <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://annotation/"> <env:Header/> <env:Body> <ns1:getDeptInfo> <arg0/> </ns1:getDeptInfo> </env:Body> </env:Envelope>
「ツール」メニューから「Httpアナライザ」を開くと、「HTTPアナライザ・インスタンス」ウィンドウが表示されます。デフォルトではJDeveloperの中央下部に、HTTPアナライザのログ・ウィンドウと並ぶタブとして表示されます。このウィンドウには、現在実行中または実行後に停止されたHTTPアナライザのインスタンスに関する情報が表示されます。インスタンスはホストとポートで識別され、ルールがあれば表示されます。このウィンドウからインスタンスの起動と停止が可能です。
新規インスタンスは、「プリファレンス」ダイアログの「HTTPアナライザ」ページに作成します。これは、をクリックすると開きます。
表11-9 「HTTPアナライザ・インスタンス」ウィンドウのツールバー・アイコン
アイコン | 名前 | 機能 |
---|---|---|
|
アナライザ・プリファレンス |
新規リスナー・ポートを指定したり、デフォルト・プロキシを変更できる、「プリファレンス」ダイアログの「HTTPアナライザ」ページを開く場合にクリックします。 |
|
新規リクエストの作成 |
ペイロード詳細の入力や、メッセージの編集および再送信を行うHTTPアナライザのテスト・ウィンドウの新しいインスタンスを開く場合にクリックします。 |
|
HTTPアナライザの起動 |
HTTPアナライザを起動する場合にクリックします。モニターがバックグラウンドで実行され、「停止」をクリックするか、JDeveloperを終了したときにのみ停止します。複数のリスナーを定義している場合、このボタンをクリックするとすべてのリスナーが起動します。1つのリスナーのみを起動するには、下矢印をクリックして起動するリスナーを選択します。 |
|
HTTPアナライザの停止 |
HTTPアナライザを停止する場合にクリックします。複数のリスナーを実行している場合、このボタンをクリックすると、すべてのリスナーが停止します。1つのリスナーのみを停止するには、下矢印をクリックして停止するリスナーを選択します。 |
HTTPアナライザを開始すると、JDeveloperによるすべてのJavaプロセスとアプリケーション・サーバーのアクティビティが、「プリファレンス」ダイアログの「HTTPアナライザ」ページのプロキシ設定を利用してHTTPアナライザ経由でトラフィックを送信します。このダイアログは、「インスタンス」ウィンドウまたは「ログ」ウィンドウの「HTTPアナライザの起動」ボタンをクリックすると開きます。デフォルトでは、HTTPアナライザは1つのアナライザ・インスタンス上で1つのプロキシ(デフォルトは8099
)を使用しますが、必要な場合には独自のプロキシを追加できます。
各アナライザ・インスタンスには、異なるホスト/URLへのリクエストのリダイレクト、Webサービスのエミュレートなどの動作を決定する一連のルールがあります。
デフォルトでは、HTTPアナライザは1つのアナライザ・インスタンス上で1つのプロキシ(デフォルトは8099)を使用しますが、必要な場合には独自のプロキシを追加できます。
HTTPアナライザのプリファレンスを設定するには、次のようにします。
次のいずれかの方法でHTTPアナライザの「プリファレンス」ダイアログを開きます。
「HTTPアナライザ・インスタンス」ウィンドウまたはログ・ウィンドウで「Httpアナライザの起動」ボタンをクリックします。
「ツール」→「プリファレンス」を選択して「プリファレンス」ダイアログを開き、「Httpアナライザ」ページに移動します。
詳細は、[F1]を押すか、HTTPアナライザの「プリファレンス」ダイアログで「ヘルプ」をクリックしてください。
HTTPアナライザ・インスタンスに対して必要な変更を行います。たとえばホストとポート番号を変更する場合には、「プロキシの構成」をクリックして「プロキシ設定」ダイアログを開きます。
HTTPアナライザの複数インスタンスを実行できます。それぞれが異なるホストとポートの組合せを使用し、「HTTPアナライザ・インスタンス」ウィンドウでそのサマリーを確認できます。
HTTPアナライザのインスタンスを追加するには、次のようにします。
次のいずれかの方法でHTTPアナライザの「プリファレンス」ダイアログを開きます。
「HTTPアナライザ・インスタンス」ウィンドウまたはログ・ウィンドウで「アナライザ・プリファレンス」ボタンをクリックします。
「ツール」→「プリファレンス」を選択して「プリファレンス」ダイアログを開き、「Httpアナライザ」ページに移動します。
詳細は、[F1]を押すか、HTTPアナライザのプリファレンス・ダイアログで「ヘルプ」をクリックしてください。
新しいリスナーとなる新しいHTTPアナライザ・インスタンスを作成するには、「追加」をクリックします。新しいリスナーがリストされてデフォルトとして選択され、値を変更できます。
外部Webブラウザを使用するとHTTPアナライザを通じてメッセージのルーティングが可能になり、Webブラウザとクライアントの間でトラフィックを確認できます。この項では、HTTPアナライザを開始してJDeveloper内からHTML、JSPまたはJSFページを実行するとき、デバッガ・プロファイルを使用する新しいFirefoxインスタンスが起動するように、Firefoxのプロファイルを使用する方法について説明します。
注意: 次の手順ではコマンドfirefox を使用していますが、これはLinuxのコマンドです。Windowsを使用している場合は、firefox.exe に置き換えてください。 |
HTTPアナライザを使用するようにFirefoxプロファイルを構成するには、次のようにします。
まず、新しいFirefoxプロファイルを作成します。デフォルトでは、コマンドラインからFirefoxを起動すると現在開いているFirefoxインスタンスでウィンドウが開きます。したがって、別個に構成されるインスタンスを作成するには-no-remoteを使用する必要があります。コマンドラインから次のように実行してください。
firefox -no-remote -CreateProfile Debugging
このプロファイルを使用してFirefoxを起動します。
firefox -no-remote -P Debugging
次に、このバージョンのFirefoxを起動するようにJDeveloperを構成します。メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「プリファレンス」ダイアログで、「Webブラウザとプロキシ」ノードを選択します。詳細は、[F1]を押すか、ダイアログ・ページ内で「ヘルプ」をクリックしてください。
「ブラウザのコマンドライン」で、適切な位置を入力または参照し、firefox -no-remote -P Debugging
と入力します。これには赤い下線が付き、ダイアログを閉じるときにも「コマンド・ライン検証エラー」警告が表示されますが、これは無視してかまいません。
「OK」をクリックします。HTTPアナライザを開始し、JDeveloper内からHTML、JSPまたはJSFページを実行すると、デバッガ・プロファイルを使用する新しいFirefoxインスタンスが起動します。
「OK」をクリックします。HTTPアナライザを開始し、JDeveloper内からHTML、JSPまたはJSFページを実行すると、デバッガ・プロファイルを使用する新しいFirefoxインスタンスが起動します。
保護されたサービスまたはアプリケーション、たとえばポリシーで保護されたWebサービスに対してHTTPアナライザを使用できます。JDeveloperには、事前構成済の資格証明としてHTTPS Credential
が付属しており、これが常駐しています。HTTPS Credential
は削除も編集もできませんが、コピーして同じタイプの新しい資格証明を作成できます。
サービスまたはアプリケーションを実行すると、アナライザでは、適切なアイコンの実行に提供された資格証明を使用します。
HTTPアナライザでは、次のタイプの資格証明を使用できます。
HTTPSは、送信前にHTTPメッセージを暗号化し、受信時に復号化します。信頼できる認証局によって署名された公開鍵証明書を使用します。統合アプリケーション・サーバーを初めて起動すると、マシンに固有のDemoIdentity
が生成され、その中にあるキーを使用してHTTPSチャネルが設定されます。
HTTPSの構成には、クライアント・キーストア・アイデンティティが使用されます。サーバー・キーストア・アイデンティティは、HTTPアナライザがサーバーとして機能する際に使用され、リモート・サーバーへの接続時には使用されません。
キー・ストアおよびキーストア・プロバイダの詳細は、『Oracle WebLogic Serverセキュリティの理解』を参照してください。デフォルトの資格証明であるHTTPSキーストアを選択する場合には、JDeveloperとHTTPアナライザがHTTPSトラフィックを処理する際に使用するキーストアを指定する必要があります。HTTPアナライザを実行するには、2つのキーストアが必要です。
クライアント・キーストア。外部接続時にJDeveloperとアナライザ(クライアントの信頼)によって信頼されるすべてのホストの証明書が含まれています。
サーバー・キーストア。アナライザがコール側クライアントに対する自身の認証に使用するキーが含まれています(サーバー・キーストア)。
クライアント・キーストアが必要なのは、相互認証が必要な場合のみです。
JDeveloperで提供されるデフォルトのキーストアのほかに、追加のHTTPSキーストアを作成できます。
ユーザー名トークンは、Basic認証情報の伝達に利用されます。認証に使用されるユーザー名/パスワードを指定します。
X509はシングル・サインオンのためのPKI標準であり、アイデンティティの提示と、メッセージの署名および暗号化に証明書を使用します。X509証明書の詳細を入力します。キーストアに対して有効なキーストアとパスワードを指定すると、クライアント・キー別名が移入されます。
JDeveloperに問題があってキーストアを検索できない、または開くことができない場合、エラー・メッセージが表示されます。
セキュリティ・トークン・サービス(STS)は、HTTPS上でセキュリティ・トークンを発行し管理するWebサービスです。セキュリティ・トークン・サーバーのプロバイダURLを入力し、オプションでポリシーURLも入力します。
注意: クライアント・トラストストアにはサーバーの公開鍵が含まれている必要があります。含まれていないと、HTTPアナライザのリクエスト時にSAMLトークンがエラーになります。 |
OAuthはオープン認証プロトコルです。これにより、ユーザーにかわって機能するアプリケーションを、パスワードを共有せずに承認できます。OAuthプロトコル・セキュリティによって保護されるリソースは、有効なOAuth資格証明を使用してテストできます。たとえば、ツイッターのフィードを使用するリソースをテストする場合などがあります。
注意: ユーザーが所有するリソースにサービス・プロバイダでアクセスするには、まずそのサービス・プロバイダに登録する必要があります。 |
JRF Webサービスのテストに使用します。jps-config.xml
には、HTTPアナライザがサービスへのアクセスに必要とするセキュリティ情報が含まれます。
jps-config.xml
のデータを資格証明レコードにインポートできます。jps-config.xml
の場所を指定し、CSFキーの名前を入力すると、JDeveloperでは、jps-config.xml
および基礎となるウォレット・ファイルから読み取られた必要なデータで資格証明レコードが作成されます。
jps-config.xml
からインポートされたデータは、「X509証明書」タブと「ユーザー名トークン」タブに移入されます。
資格証明レコードが保存されると、そのレコードは、キーストア、キーおよびその他の必須データのソースとして、HTTPアナライザでWebサービス・プロキシの生成時に繰り返し使用できます。
JDeveloperには、HTTPS Credential
と呼ばれるHTTPSキーストア資格証明のセットが付属しています。次の操作を実行できます。
相互認証が必要な場合、HTTPS Credential
のクライアント・キーストアを構成します。
サポートされるいずれかのタイプの新しい資格証明を作成します。
既存の資格証明に基づいて、新しい資格証明を作成します。
資格証明を削除します。HTTPS Credential
は削除できないことに注意してください。
資格証明を構成するには:
メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「設定」ダイアログで、「資格証明」ノードを選択します。詳細は、[F1]を押すか、ダイアログ・ページ内で「ヘルプ」をクリックしてください。
適切な変更を行います。
「HTTPSキーストア」タブを選択して、HTTPS Credential
のクライアント情報を追加します。
をクリックして適切なタブを選択することで、新しい資格証明を追加します。
をクリックして、既存の資格証明に基づいた新しい資格証明を作成します。タイプと値が同じ新しい資格証明が作成され、デフォルト名のCredential_
n
に1ずつ増分されます。
リストから資格証明を選択してをクリックすることで、その資格証明を削除します。HTTPS Credential
は削除できないことに注意してください。
HTTPアナライザを使用すると、リクエストおよびレスポンスHTTPメッセージの内容を表示できます。
HTTPパケットを監視するには、次のようにします。
「ツール」→「Httpアナライザ」を選択して、HTTPアナライザを開きます。HTTPアナライザのドッキングしたウィンドウが開きます。
「Httpアナライザの起動」ボタンをクリックしてHTTPアナライザを起動します。デフォルトでは、ポート8098のlocalhostのホスト名でリスナーが起動します。新しいリスナーを追加し、別のホストとポートを使用する、HTTPSを構成する、またはアナライザの処理方法を決めるルールを設定できます。
通常の方法で分析するクラス、アプリケーション、Webサービスなどを実行します。
リクエストとレスポンスの各パケットが、HTTPアナライザのログ・ウィンドウにリストされ、HTTPアナライザのテスト・ウィンドウに詳細に表示されます。
HTTPアナライザを使用して、JDeveloperで開発したWebサービスの動作を調べる場合は、「アプリケーション」ウィンドウでWebサービスのポップアップ・メニューから「Webサービスのテスト」を選択すると、HTTPアナライザが自動的に開始されます。
HTML、JSPまたはJSFページなどのWebページをデバッグするときにもHTTPアナライザを使用できます。こうすると、ブラウザとの間で相互に送信されるトラフィックを直接調べることができます。
HTTPアナライザを使用してWebページをデバッグするには、次のようにします。
HTTPアナライザを通じてメッセージをルーティングするようにブラウザを構成し、Webブラウザとクライアントの間でトラフィックを確認できるようにします。
HTTPアナライザを起動します。
通常の方法で分析するクラス、アプリケーションまたはWebページを実行します。
リクエストとレスポンスの各パケットが、HTTPアナライザのログ・ウィンドウにリストされ、HTTPアナライザのテスト・ウィンドウに詳細に表示されます。
HTTPリクエストの内容を編集し、再送信できます。次に、レスポンスを検証して、予想した変更が行われたかどうかを確認できます。
リクエストを送信するには、次のようにします。
HTTPアナライザの「テスト」ウィンドウの「リクエスト」ペインで、パラメータ値を入力します。
「リクエストの送信」ボタンをクリックします。
処理された値が「レスポンス」ペインに戻されます。
リクエストを編集して再送信するには、次のようにします。
HTTPアナライザの「テスト」ウィンドウの「リクエスト」ペインで、「コピー・リクエスト」をクリックします。新しいテスト・ウィンドウが開き、送信する新しいパラメータを入力できます。
あるいは、HTTPアナライザのログ・ウィンドウで行をダブルクリックして新しいテスト・ウィンドウを開くこともできます。
HTTPアナライザがルールによって決定される動作を利用して実行するように、ルールを設定できます。1つのHTTPアナライザ・インスタンスで複数のルールを設定できます。サービスのURLがルールに一致した場合は、そのルールが適用されます。一致しない場合は、リストの次のルールがチェックされます。サービスがどのルールにも一致しない場合は、クライアントがエラーを返します。このような理由から、先行するルールによって捕捉されないメッセージが捕捉されるように、「パス・スルー・ルール」は常に、リストの最後のルールにブランク・フィルタ(単にリクエストを渡す)を設定して使用します。
次のタイプのルールがあります。
パス・スルー・ルール
転送ルール
URL置換ルール
テープ・ルール
パス・スルーは、URLフィルタが一致する場合にリクエストを単純にサービスに渡します。「ルール設定」ダイアログを最初に開くと、2つのパス・スルー・ルールが定義されています。
1つ目はhttp://localhost:631
というURLフィルタを使用し、印刷サービス・リクエストを無視します。
2つ目はURLがブランクのフィルタで、単純にリクエストを元のサービスに渡します。新規ルールを追加する場合には、通常このルールをリストの最後に移動する必要があります。
URL置換ルールを使用すると、URL範囲の一部を置換してサービスを再ホストできます。たとえば、統合アプリケーション・サーバーとOracle WebLogic Serverの間で移動するときマシン名を置き換えることができます。
テープ・ルールを使用すると、標準のWS-Iログ・ファイルをルールへの入力として、HTTPアナライザをシミュレータ・モードで実行できます。テープ・ルールを設定するときには、次のような強力なオプションを使用できます。
ループ・テープ。テープを繰り返して実行できます。
一致するURLおよびメソッドにスキップ。一致するURLとHTTPリクエスト・メソッドが見つかった場合にのみ結果を返します。つまり、同じテープ・ルールでWSDLとエンドポイント・リクエストを使用できるということです。
「ヘッダー日付の修正」および「コンテンツ・サイズの修正」。リクエストが失敗しないように、メッセージのヘッダー日付とコンテンツ・サイズを現在の値に変更できます。
テープ・ルールを使用する例としては、外部Webサービスに対して実行されるように開発されたWebサービス・クライアントのテストなどがあります。
外部Webサービスに対して実行されるように開発されたWebサービス・クライアントをテストするには、次のようにします。
外部Webサービスへのクライアントを作成します。
HTTPアナライザを実行してWebサービスに対してクライアントを実行し、結果をWS-Iログ・ファイルとして保存します。
WS-Iファイルを編集し、クライアントに返された値を変更します。
「プリファレンス」ダイアログの「Httpアナライザ」ページで、テープ・ルールを作成します。
ルールのリストで、ブランクの「パス・スルー・ルール」の上になっていることを確認してください。
「ルール設定」ダイアログで、WS-Iファイルのパスを「ルール設定」ダイアログの「テープ・パス」として使用します。
クライアントを再実行すると、外部Webサービスに対してではなく、WS-Iファイルのエントリに対して実行されます。
次の操作が可能なその他のオプションもあります。
クライアントに返されるメッセージが正しくなるように、WS-Iログ・ファイルでエントリの時刻とサイズを修正します。
複数回実行されるように、テープをループさせます。
同じテープ・ルールでWSDLとエンドポイント・リクエストを使用できるように、一致するURLとHTTPリクエスト・メソッドをスキップします。
注意: テープ・ルールは、失効日が設定された資格証明またはヘッダーを使用するSOAPメッセージに対しては動作しません。 |
HTTPアナライザがルールによって決定される動作を利用して実行するように、ルールを設定できます。各アナライザ・インスタンスには、異なるホスト/URLへのリクエストのリダイレクト、Webサービスのエミュレートなどの動作を決定する一連のルールがあります。
HTTPアナライザのインスタンスにルールを設定するには、次のようにします。
「ツール」→「Httpアナライザ」を選択して、HTTPアナライザを開きます。HTTPアナライザのドッキングしたウィンドウが開きます。
あるいは、「アプリケーション」ウィンドウでWebサービス・コンテナのポップアップ・メニューから「Webサービスのテスト」を選択すると、HTTPアナライザが自動的に開きます。
「アナライザ・プリファレンス」ボタンをクリックしてHTTPアナライザのプリファレンス・ダイアログを開き、新規リスナー・ポートを指定したり、デフォルト・プロキシを変更できます。
または、「ツール」→「プリファレンス」を選択し、「Httpアナライザ」ページに移動します。
「ルールの設定」をクリックして「ルール設定」ダイアログを開き、HTTPアナライザで実行されるアクションを決定するルールを定義します。詳細は、[F1]を押すか、「ルール設定」ダイアログで「ヘルプ」をクリックしてください。
「ルール設定」ダイアログで、「参照URL」としてテストする対象の参照サービスのURLを入力します。こうすると、ルールを適用するかどうかと適用方法を確認できるため、ルールの作成を開始しやすくなります。
クライアントを実行する対象のサービスに、1つ以上のルールを定義します。新しいルールを追加するには、「追加」の隣にある下矢印をクリックし、リストからルールのタイプを選択します。ダイアログのフィールドは、現在選択されているルールのタイプによって異なります。
ルールは上から下の順序で適用されます。並べ替えるには、上下の並替えボタンを使用します。ブランクの「パス・スルー・ルール」が最後のルールになるようにしてください。
この項では、JDeveloperで開発したWebサービスに対してHTTPアナライザを使用する方法について説明します。一般的には、HTTP間のパケットを調べるときと同じように、Webサービスのコンテンツを調べる際にHTTPアナライザを使用します。
注意: WebLogic Server 9.xのポリシーがアタッチされているJAX-RPC Webサービスを、HTTPアナライザでテストすることはできません。WebLogic 9.xのポリシーは、JAX-RPCで非推奨になっています。 |
JDeveloperでは、HTTPアナライザを使用してWebサービスをテストし、JDeveloperで開発されたWebサービスへのプロキシ接続のネットワーク・トラフィックを調べることができます。
Webサービスをテストするには、次のようにします。
統合アプリケーション・サーバー上でWebサービスを実行し、「アプリケーション」ウィンドウでWebサービスのノードを右クリックして「Webサービスのテスト」を選択し、HTTPアナライザを開きます。JDeveloperが自動的に次のように動作します。
まだ実行されていない場合には、統合アプリケーション・サーバーを起動します。
Webサービス・アプリケーションをコンパイルして統合アプリケーション・サーバーにバインドします。これは「アプリケーション・サーバー」ウィンドウに表示されます。
統合アプリケーション・サーバーのログ・ウィンドウを表示します(まだ開かれていない場合)。
HTTPアナライザ・テスト・ウィンドウの「リクエスト」ペインで、パラメータを入力してサービスをテストし、「リクエストの送信」をクリックします。
デプロイされたWebサービスからのレスポンスが、HTTPアナライザ・テスト・ウィンドウの「レスポンス」ペインに表示されます。
リクエストおよびレスポンス・パケットのHTTPヘッダーの内容を調べ、HTTPアナライザ・テスト・ウィンドウの下部にある該当のタブを選択して、SOAP構造、HTTPコンテンツ、16進コンテンツまたはRAWメッセージ・コンテンツを確認できます。
HTTPアナライザを使用して、RESTful Webサービスを操作できます。Representational State Transfer (REST)は、SOAPなどの追加メッセージング・レイヤーなしで、標準化されたインタフェース(HTTPなど)を介してデータを送信する単純なインタフェースを記述するものです。RESTには、ステートレス・サービスを作成するための一連の設計ルールが用意されており、これらはリソース(特定の情報のソース)として表示されます。それぞれのリソースは固有のURIで識別できます。クライアントがURIを使用してリソースにアクセスすると、標準化された固定のメソッド・セットと、リソースの表示が返されます。クライアントは、新しい各リソース表示を使用してステートを転送します。
HTTPプロトコルを使用してRESTfulリソースにアクセスする際は、リソース識別子がリソースのURLとなります。そのリソースに対して実行する標準操作は、HTTPメソッドの1つ(GET
、PUT
、DELETE
、POST
またはHEAD
)です。
HTTPアナライザは、Hypermedia as the Engine of Application State (HATEOAS)をサポートしているため、HTTPアナライザを使用してRESTful Webサービスの調査とテストが可能です。
Java API for RESTful Web Services (JAX-RS)は、RESTアーキテクチャ・スタイルに準じたWebサービスの作成をサポートします。JAX-RSでは、RESTful Webサービスの開発を単純化するために注釈を使用します。Webサービスに注釈を追加するだけで、リソースおよびそのリソース上で実行可能なアクションを定義できます。WebLogic Serverでは、http://jcp.org/en/jsr/summary?id=311
で定義されているJSR-311 JAX-RS 1.1仕様の本番品質実装である、Jersey 1.9 JAX-RS参照実装(RI)がサポートされます。
Web Application Description Language (WADL)はJerseyによって作成されるXMLファイルで、サーブレットのリソースを記述します。WADLの詳細は、https://wadl.dev.java.net/
を参照してください。
WADLを使用したRESTfulサービスのテストについて、まずここで概略を示し、詳細な手順を後述します。すべてのRESTfulサービスがこのように動作するわけではありません。RESTful Webサービス用にJerseyによって作成されたWADLをHTTPアナライザが読み込んだら、HTTPアナライザのテスト・ウィンドウでWADLを調べます。WADLからは、HTTPアナライザ・テスト・ウィンドウのインスタンスをメソッドから直接開くことができ、パラメータを入力してそれをサービスにポストしてメソッドをテストできます。HTTPアナライザは新しいURLにレスポンスをリダイレクトし、表示されたそのURLをクリックするとHTTPアナライザ・テスト・ウィンドウの別のインスタンスが開いてレスポンスが表示されます。完了したら、WADLを使用してHTTPアナライザが作成した新しいリソースを検索し、サービスをテストしてから削除します。
例11-1に、POST
、GET
、DELETE
を使用するWADLドキュメントの例を示します。
例11-1 WADLの単純な例
<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?> <application xmlns="http://research.sun.com/wadl/2006/10"> <doc xmlns:jersey="http://jersey.dev.java.net/" jersey:generatedBy="Jersey: 1.1.0-ea 04/30/2009 04:46 PM"/> <resources base="http://localhost:7101/RESTDemo-ContainerProject-context-root/jersey/"> <resource path="buckets"> <method name="POST" id="createNewBucket"> <request> <representation mediaType="*/*"/> </request> <response> <representation mediaType="*/*"/> </response> </method> <method name="GET" id="getBuckets"> <response> <representation mediaType="application/buckets+xml"/> </response> </method> <resource path="/{id}"> <param xmlns:xs="http://www.w3.org/2001/XMLSchema" type="xs:int" style="template" name="id"/> <method name="DELETE" id="delete"> <response> <representation mediaType="*/*"/> </response> </method> <method name="GET" id="getBucket"> <response> <representation mediaType="*/*"/> </response> </method> </resource> </resource> </resources> </application>
REST Webサービスをテストするには、次のようにします。
REST Webサービスをテストするには、次の手順が必要です。
RESTfulサービスのテスト
サービスのテスト
リソースの操作
RESTfulサービスを調べるには、次のようにします。
統合アプリケーション・サーバーでREST Webサービスを実行します。
「アプリケーション」ウィンドウでWebサービス・ノードを右クリックして、「Webサービスのテスト」を選択します。JDeveloperが自動的に次のように動作します。
まだ実行されていない場合には、統合アプリケーション・サーバーを起動します。
Webサービス・アプリケーションをコンパイルして統合アプリケーション・サーバー・インスタンスにバインドします。これは「アプリケーション・サーバー」ウィンドウのIntegratedWebLogicServerノードです。
統合アプリケーション・サーバーのログ・ウィンドウを表示します(まだ開かれていない場合)。
HTTPアナライザのテスト・ウィンドウで「HTTPコンテンツ」タブをクリックします。RESTful WebサービスはSOAPを使用しないため、「SOAP構造」タブは使用しません。
統合アプリケーション・サーバーの「ログ」ウィンドウで、「ターゲット・アプリケーションWADL --」の隣にあるリンクをクリックします。テスト・ウィンドウの2つ目のインスタンスが開きます。URLにWADLが表示され、メソッドがGETであることを確認してください。
「リクエストの送信」をクリックします。GETメソッドはWADLのコンテンツを返すために使用されるため、「レスポンス」ペインに表示されます。
必要な場合には、左矢印を使用してペインの幅を最大化すると、コードが見やすくなります。
WADLファイルを任意の時点で表示するには、RESTful WebサービスのURLの右にある「WADLを開く」をクリックします。WADLファイルの読取り専用バージョンがソース・エディタで開き、RESTful Webサービス・リソースおよびメソッドのサマリー、またはWADLソースを表示できるようになります。詳細は、第20.5.1.8項「RESTful WebサービスのWADLへのアクセス」を参照してください。
RESTfulサービスをテストするには、次のようにします。
「レスポンス」ペインに表示されるWADLで、[Ctrl]キーを押しながらクリックして「宣言に移動」機能を使用すると、アクセス可能なHTTPメッセージの一部が表示されます。リンクとして表示されたPOSTメソッドをクリックします。これで、テスト・ウィンドウの新しいインスタンスが開きます。
「リクエスト」ペインにパラメータを入力し、「リクエストの送信」をクリックします。POSTメソッドが使用され、「リクエスト」ペインには201 Created HTTP
ステータス・コードと、レスポンスが含まれるURLの場所が表示されます。
「レスポンス」ペインのURLをクリックします。テスト・ウィンドウの次のインスタンスが開きます。URLにリダイレクトURLが表示され、メソッドがGETであることを確認してください。「リクエストの送信」をクリックすると、入力したパラメータに対するレスポンスが「リクエスト」ペインに表示されます。
注意: WADLをクリックすると、content-typeとacceptの正しいヘッダーが生成されます。 |
リソースを操作するには、次のようにします。
WADLのテスト・ウィンドウ・インスタンスを選択し、GET
メソッドに移動します。[Ctrl]キーを押しながらクリックして、テスト・ウィンドウの新しいインスタンスを開きます。URLにリダイレクトURLが表示され、メソッドがGET
であることを確認してください。
リソースを更新するには、「メソッド」リストから「PUT」を選択し、「リクエストの送信」をクリックします。
このリソースを削除するには、「メソッド」リストから「DELETE」を選択し、「リクエストの送信」をクリックします。
HTTPアナライザは、保護されていないWebSocketsリクエストをプロキシ経由で渡します。
リクエスト/レスポンス・ストリームの内容は、メッセージを閉じてから開きなおすとHTTPアナライザで使用できるようになります。WebSocketsメッセージは、レスポンス・コードが101
のメッセージです。
HTTPアナライザはFast Infoセットと連携しますが、HTTPヘッダーでContent-Type
をオーバーライドする場合を除き、デフォルトではかわりにsoap/xmlの送信に設定されます。
SOAP 1.1は、Content-Type
をapplication/fastinfoset
に変更します。
SOAP 1.2には、次のようなアクション名が含まれます。
application/soap+fastinfoset;action="http://project1/HelloWorldSOAP12/helloRequest
この項では、HTTPアナライザの実行中に発生する可能性がある問題の解決方法について説明します。
レスポンスを待っているアプリケーションがある場合は、HTTPアナライザを起動または停止しないでください。HTTPアナライザを起動または停止する前に、アプリケーションを終了してください。
HTTPアナライザを使用するとき、JDeveloperのプロキシ設定の変更が必要になる場合があります。次に例を示します。
外部サービスをテストしており、マシンがファイアウォールの内部にある場合には、JDeveloperがHTTPプロキシ・サーバーを使用していることを確認してください。
「アプリケーション」ウィンドウで、Webサービスのポップアップ・メニューから「Webサービスのテスト」を選択する場合など、統合アプリケーション・サーバーでサービスをテストする場合は、JDeveloperでHTTPプロキシ・サーバーが使用されていないことを確認してください。
HTTPアナライザの実行中に、次のメッセージが表示されることがあります。
500 Server Error The following error occurred: [code=CANT_CONNECT_LOOPBACK] Cannot connect due to potential loopback problems
プロキシの除外リストに、localhost|127.0.0.1
を追加する必要がある可能性があります。
HTTPプロキシ・サーバーを設定し、例外リストを編集するには、次のようにします。
「ツール」→「プリファレンス」を選択し、「Webブラウザとプロキシ」を選択します。
必要に応じて、「HTTPプロキシ・サーバーを使用」が選択または選択解除されていることを確認します。
「例外」リストに適切な値を追加します。セパレータには「|
」を使用してください。
Javaがプロキシとしてlocalhostを使用するためには、それが唯一のエントリである場合も含めて、「例外」リストに~localhost
が存在する必要があります。