11 Javaプロジェクトの監査とモニタリング
この章の内容は次のとおりです。
Javaプロジェクトの監査とモニタリングについて
監査およびモニタリング・ツールを使用して、アプリケーションのパフォーマンスを分析します。監査機能はJDeveloperでJavaコードがプログラミング規格に準拠しているかを分析し、HTTPアナライザはプロジェクト間のHTTPトラフィックを分析して、アプリケーションのデバッグを容易にします。
JDeveloperに用意されている監査とモニタリングのツールを使用して、アプリケーションのヘルス状態とパフォーマンスを分析します。これらのツールは、コードの品質向上に効果的です。JDeveloperの監査機能を使用すると、Javaコードがプログラミング規格に準拠しているかどうかを分析できます。
コード監査は、構文が正しいかどうかではなく、プログラミング規格に準拠しているかどうかを調べるものです。コードは、コンパイルが不可能または実行不可能な場合も監査できます。
HTTPアナライザを使用すると、プロジェクトのWebサービスのクライアントとサービス間、およびJavaアプリケーションとWebリソース間で送受信されるHTTPトラフィックの観点でアプリケーションのデバッグが容易になります。
Javaプロジェクトの監査
JDeveloperでは、規則と呼ばれる機能の有無に関する定性試験やメトリックを使用したサイズまたは複雑さの定量測定などの監査機能がサポートされます。Javaコードを監査するには、次に示す方法を使用します。
監査とは、プログラミング規格を定義している規則およびメトリックに準拠しているかどうかについてのコードの静的な分析のことです。ソフトウェアのコード監査は、バグ、セキュリティ侵害またはプログラミング規則違反を発見する目的で行われる、プログラミング・プロジェクト内のソース・コードの包括的な分析です。
-
規則は、ある機能の有無に関する定性試験です。たとえば、Javaコーディングの共通のスタイルとして、クラス名を大文字にする必要があります。規則に準拠していない場合は、違反が発生します。
-
コード測定は、サイズまたは複雑さの定量測定です。たとえば、メソッドのサイズが大きすぎたり、メソッドで扱うケースの数が多すぎる場合、その機能の一部を別のメソッドに委譲する必要があります。指定の上限を超えると、しきい値超過異常が発生します。
プロファイルを作成してカスタマイズし、使用する規則を選択して個々の規則のパラメータを設定できます。詳細は、それぞれのコード監査規則およびコード測定を参照してください。
JDeveloperのコード監査およびコード測定の機能は拡張できます。コード監査およびコード測定は、それぞれカスタマイズおよび拡張可能なソース・コード分析および変換フレームワークのある2つの側面です。コード監査およびコード測定用のパブリックAPIは、oracle.jdeveloper.audit
パッケージです。
Javaコードを監査するには:
-
監査ツールをソース・ファイルに対して実行し、コード監査レポートを生成します。「コード監査レポート生成のためにコード監査を実行する方法」を参照してください。
-
編集中にコード監査を行う場合は、コード・アシストを使用します。「コード・アシスト」により、編集中にバックグラウンドでコード監査を実行できます。編集時に、監査違反が強調表示されます。自動修正を適用できます。
-
コマンドラインからコード監査を実行して、コード監査レポートを生成します。「コマンドラインからのJavaコードの監査」を参照してください。
-
「問題」ウィンドウが表示されます。「問題」ウィンドウは、コードの監査を支援するJDeveloperの機能の1つです。このウィンドウには、「ファイル・リスト」で選択したドキュメント内の監査違反が表示され、問題を解決するための情報が提供されます。
監査レポートには、ルール違反および測定結果がツリーに編成されて表示されます。ツリーの各行は構成メンバーまたは違反のいずれかに対応しており、その構成メンバーまたは理論上の違反に対するすべての測定値が含まれます。構成メンバーは、メソッド、クラス、ファイル、プロジェクトまたはワークスペースです。
コード監査規則の理解
コード監査規則は、静的かつ定性的なコード分析です。表に示すプロパティを使用して、コード監査プロファイルで個々の規則のプロパティを有効にして構成します。
コード監査規則は、静的かつ定性的なコード分析です。
コード監査プロファイルで、プロパティを設定することによって個別ルールの有効化や構成を実行できます。コード構成メンバーが規則に従っていない場合、規則違反が報告されます。一部の規則には自動修正が定義されており、ユーザーが適用を選択できます。
ルールには、表11-1に示すプロパティが含まれています。
表11-1 規則プロパティ
プロパティ | 説明 |
---|---|
デフォルト修正 |
この規則の違反に対する修正が使用されるのは、「デフォルトの修正を適用」が構成メンバーに適用されている場合です。 |
パターン |
規則と異なる識別子を検出するフィルタとして使用される正規表現です。 |
重大度 |
コード監査レポートで規則違反をソートする場合に使用します。 |
可視性 |
アクセス・レベルのキーワードに基づくしきい値です。違反は、可視性が選択されているクラスまたはメソッドで発生した場合にのみ報告されます。 |
コード監査メトリックの理解
JDeveloperでは、静的かつ量的なコード分析であるメトリックを測定します。しきい値を設定してメトリックを構成し、コード監査プロファイル内の個々のメトリックを有効にして構成します。
監査のコード測定は、静的かつ量的なコード分析です。コード監査プロファイルで、個別メトリックの有効化と構成が実行できます。コード測定は、しきい値を使用して設定します。コード構成メンバーがしきい値を超えると、しきい値超過の測定がコード監査レポートに報告されます。
JDeveloperでは、表11-2に示すメトリックが測定されます。
表11-2 コード監査メトリック
メトリック | 説明 |
---|---|
継承ツリーの深度(DIT) |
クラスの継承ツリーの深さ。通常、 |
文の数(NOS) |
Java文でのメソッド、クラスまたは他の構成メンバーのサイズ。 |
循環的複雑度(V(G)) |
メソッドのブランチの複雑さ。メソッドを含む構成メンバー(クラスやプロジェクトなど)には、そのメソッドについて測定されたうち最大の複雑度が割り当てられます。値が10を超える場合は通常、問題ありと判断されます。 |
コード監査ツールの使用
コード監査は、プログラミング規格に関するコードの静的な評価です。コード監査ツールを使用して、「ログ」ウィンドウでコード監査レポートを表示し、違反およびしきい値を超えている測定結果を修正します。
監査ツールを使用すると、監査レポートを表示したり、規則違反やしきい値を超える測定結果を調査および修正できます。コード監査が開始されると、「ログ」ウィンドウに新しいタブが作成され、このタブにコード監査レポートが表示されます。
監査とは、プログラミング規格を定義している規則およびメトリックに準拠しているかどうかについてのコードの静的な分析のことです。コード監査では、コードの改善および保守を困難にしている不具合が検出されます。JDeveloperの監査ツールを使用すると、このような不具合を検出および修正できます。コンパイルが不可能または実行不可能な場合でも、コードの監査は可能です。
「コード監査」ウィンドウの「レポート」パネルの使用
コード監査レポートでは、規則違反およびメトリックの測定結果が、メソッド、クラス、パッケージ、ファイル、プロジェクトまたはワークスペースの各構成メンバーで編成されるツリーとして表示されます。規則を含むコード監査プロファイルには「重大度」列が含まれ、メトリックを含むコード監査プロファイルには測定結果列が含まれます。
コード監査レポートとは、構成に編成されたツリーとして表示される規則違反およびコード測定結果のセットのことです。構成には、メソッド、クラス、パッケージ、ファイル、プロジェクトまたはワークスペースがあります。監査プロファイルに規則が含まれている場合、表には「重大度」列が含まれ、指定した構成の重大度が表示されます。監査プロファイルにメトリックが含まれている場合、表にはメトリックごとに列が追加され、構成の測定結果が表示されます。
列のコンテンツを基にレポートをソートするには、列ヘッダーをクリックします。ソート順序を逆にするには、再度クリックします。
「コード監査」ウィンドウのツールバーの使用
「ログ」ウィンドウのツールバーを使用して、リフレッシュ、取消しおよびエクスポートなどの操作を実行できます。
「ログ」ウィンドウのツールバーから、表11-3に示した操作を実行できます。
表11-3 「コード監査」ウィンドウのツールバー・アイコン
アイコン | 名前 | 説明 |
---|---|---|
|
リフレッシュ |
同じプロファイルを使用して同じ選択項目に対してコード監査を再実行する場合にクリックします。 |
|
取消 |
実行中の監査を中断する場合にクリックします。結果の一部が表示される場合があります。 |
|
エクスポート |
レポートをファイルに保存できる「結果のエクスポート」ダイアログを開く場合にクリックします。結果は、XML、HTMLまたはプレーン・テキストで保存できます。 |
|
すべて展開 |
レポート内のすべてのコンテナ・ノードを展開し、すべての行を表示する場合にクリックします。 |
|
すべて閉じる |
レポート内のすべてのコンテナ・ノードを閉じ、トップレベルの構成以外のすべてを非表示にする場合にクリックします。 |
|
グループ化 |
表示するコンテナ構成のタイプを指定できる「グループ化」ダイアログを開く場合にクリックします。構成別にグループ化すると、結果の適切な編成、不具合および違反の迅速な追跡、結果を簡単に分析できます。 |
|
異常のみ表示 |
許容範囲内にある測定結果の表示を切り替えます。しきい値は、コード測定の設定可能なプロパティの1つです。 |
|
抑制された問題の表示 |
抑制スキームの問題の表示を切り替えます。 |
|
修正 |
ドロップダウン・メニューから規則違反に対する修正を選択します。個々の規則違反に対して、その違反タイプに定義されている修正から選択します。グループ構成には、「デフォルトの修正を適用」のみを選択できます。これにより、そのタイプに定義されているデフォルトの修正(存在する場合)が適用されます。 |
|
エラーを示す問題の表示 |
選択したファイルのエラー数のみの表示、またはファイルのエラーのリスト表示を切り替えます。 |
|
警告を示す問題の表示 |
選択したファイルの警告数のみの表示、またはファイルの警告のリスト表示を切り替えます。 |
|
不完全を示す問題の表示 |
選択したファイル内の不完全な問題の数のみを表示するか、ファイル内の不完全な問題をリスト表示するかを切り替えます。 |
|
アドバイザリを示す問題の表示 |
選択したファイル内のアドバイザリを示す問題の数のみを表示するか、ファイル内のアドバイザリを示す問題をリスト表示するかを切り替えます。 |
「コード監査」ウィンドウのポップアップ・メニューの使用
「コード監査」ウィンドウで、選択された1つ以上の構成メンバーまたは規則違反を右クリックしてコンテキスト・メニューを開き、作成、取消し、リフレッシュおよびエクスポートなどの操作を使用します。
1つ以上の構成(コンテナ・ノード)または規則違反(リーフ・ノード)を選択し、右クリックしてポップアップ・メニューを開きます。ポップアップ・メニューから、選択した構成または規則違反に対して、表11-4に示す操作を実行できます。
表11-4 「コード監査」ウィンドウのポップアップ・メニュー項目
名前 | 説明 |
---|---|
<構成メンバー>の作成 |
選択すると、指定した修正(定数、staticフィールド、インスタンス・フィールド、変数またはメソッド)が適用されます。 |
規則<構成メンバー>に関する情報 |
この規則違反に対して適用される規則の説明を表示する場合に選択します。 |
問題<規則>を非表示 |
選択した規則のすべての違反をレポートから削除する場合に選択します。 |
非表示の問題の表示 |
選択すると、前に非表示にしたすべての問題がリストアされます。 |
異常のみ表示 |
許容範囲内にある測定結果の表示を切り替える場合にクリックします。 |
エラーを示す問題の表示 |
選択したファイルのエラー数の表示、またはファイルのエラーのリスト表示を切り替えます。 |
警告を示す問題の表示 |
クリックすると、選択したファイルの警告数の表示、またはファイルの警告のリスト表示を切り替えます。 |
不完全を示す問題の表示 |
クリックすると、選択したファイルの不完全な問題数の表示、またはファイルの不完全な問題のリスト表示を切り替えます。 |
アドバイザリを示す問題の表示 |
クリックすると、選択したファイルのアドバイザリ問題数の表示、またはファイルのアドバイザリ問題のリスト表示を切り替えます。 |
抑制された問題の表示(X) |
許容範囲内にある測定結果の表示を切り替える場合にクリックします。 |
取消 |
実行中のコード監査を終了する場合に選択します。 |
リフレッシュ |
コード監査を再実行する場合に選択します。 |
グループ化 |
表示するコンテナ構成のタイプを指定できる「グループ化」ダイアログを開く場合に選択します。 |
すべて展開 |
レポート内のすべてのコンテナ・ノードを展開し、すべての行を表示する場合にクリックします。 |
すべて閉じる |
レポート内のすべてのコンテナ・ノードを閉じ、トップレベルの構成以外のすべてを非表示にする場合にクリックします。 |
ソースに移動 |
規則違反があった位置でソース・ファイルを開く場合に選択します。必要に応じて、ファイルを編集して違反を修正できます。 |
エクスポート |
レポートをファイルに保存できる「結果をエクスポート」ダイアログを開く場合に選択します。 |
JDeveloperでJavaコードを監査する方法
JDeveloperのコード監査ツールを使用して、コードの不具合を検出して修正します。Javaコードを監査する手順を使用してください。
JDeveloperのコード監査ツールを使用すると、コードの改善および保守を困難にしている不具合が検出され修正できます。コードは、コンパイルが不可能または実行不可能な場合も監査できます。監査のフォーカスは、コード監査の規則およびコード測定のセットであるプロファイルによって定義されます。「監査プロファイルの使用」を参照してください
Javaコードを監査するには:
完了したコード監査レポートをXMLファイル、HTML形式またはテキスト・ファイルとして保存できます。書式設定は、/jdev//audit/stylesheets
ディレクトリ(このディレクトリはコード監査を実行するまで作成されません)のXSLスタイルシート・ファイルで定義されます。カスタム・フォーマットを作成するには、事前定義されたスタイルシート・ファイルの1つをコピーして、このディレクトリに追加します。
コマンドラインからのJavaコードの監査
コマンドラインからojaudit.exe
を起動して、ワークスペース、プロジェクトまたはソース・ファイルを監査します。監査の際に使用できるパラメータを表に示します。
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コードの分析に使用する規則、コード・アシスト、メトリックを指定します。事前定義済のプロファイルを使用するか、プロファイルを変更してカスタム・プロファイルを作成します。
コード監査プロファイルでは、Javaコードの分析に使用する規則、コード・アシストおよびメトリックを指定することによって、監査対象を定義します。「コード監査プロファイル」プリファレンス・ページから、コード監査プロファイルのルール、コード・アシストおよびメトリックをアクティブ化および非アクティブ化することができます。いくつかのプロファイルは事前定義済ですが、既存のプロファイルを変更してその他のプロファイルを作成できます。規則、コード・アシストおよびメトリックを有効化または無効化するか、またはそれらの構成を変更することによって、コード監査プロファイルを変更できます。
表11-6に示すように、特定の監査プロファイルは、デフォルトでは、一部のJDeveloperプロセスと機能により使用されます。
表11-6 コード監査プロファイル
プロファイル | 説明 |
---|---|
コード・アシスト規則 |
ソース・エディタ、「問題」ウィンドウ、「アプリケーション概要」、および「ファイル・リスト」により使用されます。 |
コンパイル規則 |
「プリファレンス」ダイアログの「コード監査」ページで「コンパイル中のコード監査」が選択されている場合に、コンパイルの最後で使用されます。 |
コード監査規則 |
ソース・エディタ、「問題」ウィンドウ、「アプリケーション概要」、および「ファイル・リスト」により使用されます。 これは、Auditコマンドの初期値です。ただし、「監査」ダイアログでは最後に選択されたプロファイルが記憶されるため、設定は永続的ではありません。 |
Javadoc規則 |
ソース・エディタで使用されます。 |
ADFベスト・プラクティスのルール |
ADFアプリケーションに使用されます。 |
JDeveloperには事前定義プロファイルがあり、使用可能なルール、コード・アシスト、およびメトリックの組合せがそれぞれ異なっています。
-
ADFベスト・プラクティスのルール
-
すべてのメトリック
-
すべての規則
-
コード監査規則
-
コード・アシスト規則
-
コンパイル規則
-
Javadoc規則
プロファイルのシール
「コード監査プロファイル」ページで「シール済」オプションが選択された状態でコード監査プロファイルを保存するとプロファイルがシールされ、次にコード監査プロファイルがロードされるときには選択された規則のみが有効になります。コード監査プロファイルをシールするとプロジェクト環境が保存されるため、新しい監査問題の発生が抑えられます。
「監査プロファイル」ページで「シール済」オプションが選択された状態で監査プロファイルを保存することにより、現在の監査プロファイルをシールします。これは、次回その特定の監査プロファイルをロードするときに、そのプロファイルに選択されたルールのみが有効になるということです。プロファイルが最後に保存された後の新しいルールは、(そのデフォルト状態に関係なく)無効になります。新しいルールは、JDeveloperの更新時に新しい拡張機能をインストールする場合など、様々な方法で導入できます。プロジェクトの開発過程では、監査プロファイルをシールすると、プロジェクト環境が保存されるため、新しい監査問題の発生が抑えられます。
抑制スキームの無効化
抑制スキームはプロジェクト監査により検出された問題を抑制し、抑制スキームを無効にすると監査時間が短縮され、ログの出力が削減されます。抑制スキームを無効にする手順を使用してください。
抑制スキームは、プロジェクトの監査で発見された抑制問題(監査違反)のスキームを記述します。プロジェクトを監査すると、監査ログ・ウィンドウに抑制問題を表示できます。「監査プロファイル」ダイアログにより、抑制スキームの監査の有効(デフォルト状態)と無効を切り替えることができます。抑制スキームを無効にすると、監査時間が短縮され、「ログ」ウィンドウでの出力が減少します。
抑制スキームを無効にするには:
コード監査プロファイルの削除方法
事前定義されたプロファイルは削除できませんが、既存のコード監査プロファイルおよび「別名保存」コマンドを使用して作成されたカスタム・プロファイルは削除できます。既存のコード監査プロファイルを削除する手順を使用してください。
既存のコード監査プロファイルは削除できますが、事前定義プロファイルは削除できません。「別名保存」コマンドで作成したカスタム・プロファイルはすべて削除できます。
既存のコード監査プロファイルを削除するには:
コード監査プロファイルをインポートまたはエクスポートする方法
コード監査プロファイルをXMLファイルとしてインポートまたはエクスポートすると、プロファイルを共有したり、ojaudit
および夜間ビルドによって使用されるチェックイン済プロファイルを管理できるようになります。コード監査プロファイルをインポートまたはエクスポートする手順を使用してください。
コード監査プロファイルをインポートまたはエクスポートできます。この操作によって、たとえば、プロファイルを共有したり、ojaudit
および夜間ビルドによって使用されるチェックイン済プロファイルを管理できます。コード監査プロファイルは、XMLファイルとしてインポートまたはエクスポートされます。
コード監査プロファイルをインポートまたはエクスポートするには:
- 「ツール」メニューで、「プリファレンス」を選択して「プリファレンス」ダイアログを開きます。
- 「監査」を選択して、「監査」ページの「プロファイルの管理」をクリックします。
- 「その他のアクション」ドロップダウン・リストから、「インポート」または「エクスポート」を選択して、インポートまたはエクスポートするプロファイルを選択します。
コード監査レポート生成のためにコード監査を実行する方法
Javaプログラムを監査するときにコード監査レポートを生成して、規則違反やしきい値を超えている測定結果を修正できるようにします。コード監査レポートを生成する手順を使用してください。
Javaプログラムを監査する際に、コード監査レポートを生成できます。コード監査レポートは、規則違反およびしきい値を超えている測定結果のリストです。コード監査レポートでは、これらの問題を調べ、手動または自動で修正できます。
コード監査レポートを生成するには:
シリアライズできないフィールドのコード監査方法
java.io.Serializable
インタフェースを実装するとオブジェクトがシリアル化され、オブジェクトをバイト単位のサイズに圧縮して、後で展開できるようになります。コード監査規則を設定する手順を使用してください。
オブジェクトは、java.io.Serializable
インタフェースを実装することによってシリアル化可能とマークされます。これは、バイトにフラット化し後で展開できることを示します。
オブジェクトのフィールドでシリアル化を無効にするには、そのオブジェクトのクラスのフィールドに、Javaのtransientキーワードでタグを設定します。クラスがシリアル化可能とマークされていても、transientとしてマークされておらずシリアル化できないフィールドを含んでいる場合、そのクラスはシリアル化できません。コード監査を実行すると、このようなシリアル化できないフィールドを検出できます。
コード監査規則を設定するには:
serialVersionUIDを持たないシリアライズ可能なフィールドの監査方法
識別子serialVersionUID
を使用するとバージョニングが可能になりますが、この識別子を使用しなくても、コード監査を実行してjava.io.Serializable
を実装するクラスにフラグを設定できます。コード監査規則を設定する手順を使用してください。
バージョニングを可能にする、serialVersionUID
という識別子があります。java.io.Serializable
を実装しているがserialVersionUID
を持たないすべてのクラスにフラグを設定するコード監査を実行できます。
コード監査規則を設定するには:
コード監査レポートの表示
JDeveloperでは、すべてのコード監査規則違反およびしきい値を超えている測定結果のレポートが生成され、これらを修正できます。コード監査レポートをリフレッシュし、コード監査の規則違反を調査する手順を使用してください。
JDeveloperでは、すべてのコード監査規則違反に関するレポートが生成されます。コード監査レポートを使用すると、ルール違反およびしきい値を超えている測定結果を調べ、これを修正できます。図に示すように、コード監査レポートは「ログ」ウィンドウのタブ付きペインとして表示されます。このウィンドウでは、ドロップダウン・メニューからルール違反に対する修正を選択できます。個々の規則違反に対して、その違反タイプに定義されている修正から選択します。
リフレッシュにより、同じプロファイルを使用してコード監査を再実行できます。コードを変更および修正した後でリフレッシュすることもできます。
コード監査レポートをリフレッシュするには:
-
「ログ」ウィンドウのツールバー内をクリックするか、右クリックして「リフレッシュ」を選択します。
「コード監査結果のエクスポート」ダイアログがクリアされ、新しいコード監査が始まります。コード監査を停止するには、ログのツールバーをクリックします。
コード監査規則違反をインスペクトするには:
コード監査レポートの列を左または右の位置に再配置できます。
コード監査レポート列を編成するには:
-
列ヘッダーを、任意の位置の左または右までドラッグします。
コード監査レポート行の編成方法
コード監査レポートはツリー構造を持ち、各行が測定値または論理上の違反を含む構成メンバーまたは違反に対応します。コード監査レポート行を編成する手順を使用してください。
コード監査レポート行は、ルール違反や測定結果、または違反および測定結果のグループです。レポートはツリーとして編成されます。ツリーの行は、構成メンバーまたは違反に対応しており、構成メンバーまたは理論上の違反の測定値が含まれます。構成メンバーは、メソッド、クラス、ファイル、パッケージ・ディレクトリ、プロジェクトまたはワークスペースです。
レポートに表示される構成メンバーを選択できます。
コード監査レポート行を編成するには:
レポートでのフィルタの使用
フィルタのパターンによってフィルタを通過するクラスが決定され、パッケージ名またはクラス名、あるいはその両方でフィルタを指定することで、違反が表示されるJavaクラスのセットが絞り込まれます。指定できるフィルタを表に示します。
違反が表示されているJavaクラスのセットを削除する場合はフィルタを指定します。パッケージ名、クラス名またはその両方を基準にしてフィルタできます。フィルタは、カンマで区切られた1つ以上のパターンで構成されます。
パターンには、次の特殊文字を含めることができます。
-
*は、任意の数の文字に一致します。
-
?は、任意の1文字に一致します。
-
!がパターンの先頭にある場合は、除外パターンを示します。
フィルタを渡すクラスのセットは、パターンの順序を考慮して決定されます。非除外パターンでは、パターンに一致するすべてのクラスがセットに追加され、除外パターンでは、パターンに一致するすべてのクラスがセットから削除されます。表11-7は、指定できるフィルタを示しています。
表11-7 フィルタ
名前 | 説明 |
---|---|
パッケージ |
完全修飾クラス名の最後の要素以外のすべてに適用されるフィルタのパターンを入力します。このフィールドが空の場合、フィールドは無効です。 |
ファイル |
完全修飾クラス名の最後の要素にのみ適用されるフィルタのパターンを入力します。このフィールドが空の場合、フィールドは無効です。 |
適用 |
特定の「パッケージ」フィルタおよび「ファイル」フィルタをレポート行に適用する場合にクリックします。 |
クリア |
「パッケージ」フィルタおよび「ファイル」フィルタを消去する場合やレポート行をリストアする場合にクリックします。 |
コード監査レポートの保存方法
コード監査レポートを、XMLファイル、HTML形式またはテキスト・ファイルとして保存します。コード監査レポートを保存するステップを使用してください。
コード監査レポートをXMLファイル、HTML形式またはテキスト・ファイルとして保存できます。フォーマットは、jdev_install/jdev
/system/audit
/stylesheets
ディレクトリのXSLスタイルシート・ファイルによって定義されます(このディレクトリはコード監査を実行するまで作成されません)。カスタム・フォーマットを作成するには、事前定義されたスタイルシート・ファイルの1つをコピーして、このディレクトリに追加します。
コード監査レポートを保存するには:
-
「ログ」ウィンドウのツールバー内をクリックするか、右クリックして「エクスポート」を選択します。
「コード監査結果のエクスポート」ダイアログが表示されます。タイトル、書式およびレポートの保存先を選択して、「OK」をクリックします。
コード監査規則違反の修正方法
ソース・コードを編集してコード監査規則違反を手動で修正するか、自動修正を選択します。個別の規則には定義済の修正を使用し、グループ構成には「デフォルトの修正を適用」を使用します。コード監査規則違反を手動で修正したり、コード監査規則違反に自動修正を適用する手順を使用してください。
コード監査規則違反を、手動でソースを編集して修正できます。一部の規則違反については、自動修正を選択して修正できます。個々の規則違反に対して、その違反タイプに定義されている修正から選択します。グループ構成には、「デフォルトの修正を適用」のみを選択できます。これにより、そのタイプに定義されているデフォルトの修正(存在する場合)が適用されます。
コード監査の規則違反を手動で修正するには:
-
コード監査レポートで、規則違反(「構成」ツリー内のリーフ・ノード)を選択します。
-
右クリックし、「ソースへ移動」を選択します。
ソース・ファイルのエディタが開き、規則違反の場所にカーソルが移動します。
-
コードを編集して、違反の原因を修正します。
コード監査規則違反に自動修正を適用するには:
構成メンバーのコード監査規則違反を修正する方法
「デフォルト修正」プロパティに「なし」以外の値が指定されている構成メンバーでは、各規則違反に自動修正が適用されます。構成メンバーのコード監査規則違反を修正する手順を使用してください。
構成メンバーでのすべての規則違反に自動修正を適用できます。Default Fix
プロパティがNone
以外の値に設定されている構成メンバーでは、デフォルトの修正が各規則違反に適用されます。
構成メンバーのコード監査規則違反を修正するには:
コード監査規則違反を非表示にする方法
コード監査レポートで特定の規則の違反をすべて非表示にすると、レポートがより読みやすくなります。コード監査規則違反を非表示にしたり、非表示のコード監査規則違反を復元する手順を使用してください。
コード監査レポートで特定のタイプの規則違反をすべて非表示にできます。この操作によって、特定の規則の違反がすべて非表示になるため、レポートが読みやすくなります。個別の規則違反を非表示にすることはできません。
コード監査規則違反を非表示するには:
-
コード監査レポートで、規則違反(「構成」ツリー内のリーフ・ノード)を選択します。
-
右クリックして、「問題"ルール"を非表示」を選択します。
監査ルールのすべての違反が監査レポートから削除されます。削除された規則が親の構成メンバーのサマリーに記録されることはありません。「しきい値を超えるもののみ表示」が有効になっている場合は、空の構成メンバーは削除されます。有効になっていない場合は、違反のみが削除されます。
非表示のコード監査規則違反を復元するには:
コード監査レポートのコード測定結果を非表示にする方法
他の測定結果を非表示にすることで、しきい値を超えている測定結果に焦点を当ててメトリック・レポートを表示します。「ログ」ウィンドウで「異常のみ表示」オプションを使用して、しきい値を超えている測定結果のみを表示します。
コード測定レポートには、分析対象コードの構成メンバーに関する測定結果が表示されます。しきい値以下の結果を非表示にすると、しきい値を超えている測定結果にレポートをフォーカスできます。しきい値は、コード測定の設定可能なプロパティの1つです。
しきい値を超えている測定結果のみを表示するには:
-
「ログ」ウィンドウのツールバーで、「異常のみ表示」アイコンをクリックします。もう一度クリックすると、すべての測定結果が表示されます。
削除された測定が、その親となる構成メンバーのサマリーに記録されることはありません。「しきい値を超えるもののみ表示」が有効になっている場合は、空の構成メンバーは削除されます。有効になっていない場合は、違反のみが削除されます。
HTTPアナライザを使用したHTTPの監視
HTTPアナライザはJDeveloperのコードおよびHTTPリソース間のプロキシとして動作するため、アプリケーションのデバッグに役立ちます。
HTTPアナライザを使用すると、次のようにHTTPトラフィックを監視できます。
-
Webサービス・クライアントとサービスの間のリクエスト/レスポンス・トラフィックの監視。
-
JavaアプリケーションとWebリソースの間のHTTPリクエストの監視。
HTTPアナライザは、JDeveloperのコードとそのコードが通信するHTTPリソースとの間でプロキシとして機能し、送受信されるHTTPトラフィックに関してアプリケーションをデバッグしやすくなります。
HTTPアナライザを実行すると、情報を提供する多くのウィンドウが表示されます。
ログ・ウィンドウの使用方法
「ツール」メニューから「HTTPアナライザ」を開くと、「HTTPアナライザ」ログ・ウィンドウが開きます。「HTTPアナライザ」ログ・ウィンドウ・ツールバーのツールを使用して、ログ・ウィンドウのメッセージを並替えまたはグループ化します。
「ツール」メニューから「HTTPアナライザ」を開くと、図に示すように「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ログ・ファイルの選択」ダイアログを開く場合にクリックします。「Webサービスの監視と分析」を参照してください。 |
|
パケット・データの保存 |
HTTPアナライザ・ログ・ウィンドウの内容をファイルに保存する場合にクリックします。 |
|
WS-I分析 |
Webサービスをパケット・レベルで検証できるWS-I Analyzeウィザードを起動する場合にクリックします。「Webサービスの監視と分析」を参照してください。 |
|
すべて選択 |
HTTPアナライザのログ・ウィンドウですべてのエントリを選択する場合にクリックします。 |
|
すべて選択解除 |
クリックすると、HTTPアナライザ内のすべてのエントリが選択解除されます。 |
|
選択した履歴のクリア(削除) |
HTTPアナライザでエントリをクリアする場合にクリックします。 |
テスト・ウィンドウの使用方法
「アプリケーション」ウィンドウでWebサービス・コンテナのコンテキスト・メニューから「Webサービスのテスト」を使用して、テスト・ウィンドウにリクエストまたはレスポンスの詳細を表示します。SOAP形式でまたはHTTPコードとしてメッセージを表示します。
HTTPアナライザのログ・ウィンドウで「新規リクエストの作成」ボタンをクリックすると、空のHTTPアナライザ・テスト・ウィンドウが開きます。テスト・ウィンドウには、「アプリケーション」ウィンドウでWebサービス・コンテナのコンテキスト・メニューから「Webサービスのテスト」を選択したとき、または次の図に示すように「HTTPアナライザ」ログ・ウィンドウで行をダブルクリックすしたときに表示されるリクエスト/レスポンスの詳細が表示されます。デフォルトではJDeveloperの中央、ソース・エディタが表示されるのと同じ位置に表示されます。
テスト・ウィンドウでは、メッセージのヘッダーとパラメータを調べることができます。サービスをテストするには、適切なパラメータを入力して「リクエストの送信」をクリックします。
テスト・ウィンドウの下部にあるタブから、メッセージの内容の表示方法を選択できます。選択できるメッセージの表示方法は、次のとおりです。
-
前述の図に示す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アナライザ・インスタンス」ウィンドウを開き、現在実行しているまたは過去に実行されていたHTTPアナライザのインスタンスを表示します。このウィンドウで、インスタンスを起動および停止できます。
「ツール」メニューから「Httpアナライザ」を開くと、「HTTPアナライザ・インスタンス」ウィンドウが表示されます。デフォルトではJDeveloperの中央下部に、HTTPアナライザのログ・ウィンドウと並ぶタブとして表示されます。このウィンドウには、現在実行中または実行後に停止されたHTTPアナライザのインスタンスに関する情報が表示されます。インスタンスはホストとポートで識別され、ルールがあれば表示されます。このウィンドウからインスタンスの起動と停止が可能です。
新規インスタンスは、「プリファレンス」ダイアログの「HTTPアナライザ」ページに作成します。これは、をクリックすると開きます。
表11-9 「HTTPアナライザ・インスタンス」ウィンドウのツールバー・アイコン
アイコン | 名前 | 機能 |
---|---|---|
|
アナライザ・プリファレンス |
新規リスナー・ポートを指定したり、デフォルト・プロキシを変更できる、「プリファレンス」ダイアログの「HTTPアナライザ」ページを開く場合にクリックします。 |
|
新規リクエストの作成 |
ペイロード詳細の入力や、メッセージの編集および再送信を行うHTTPアナライザのテスト・ウィンドウの新しいインスタンスを開く場合にクリックします。 |
|
HTTPアナライザの起動 |
HTTPアナライザを起動する場合にクリックします。モニターがバックグラウンドで実行され、「停止」をクリックするか、JDeveloperを終了したときにのみ停止します。複数のリスナーを定義している場合、このボタンをクリックするとすべてのリスナーが起動します。1つのリスナーのみを起動するには、下矢印をクリックして起動するリスナーを選択します。 |
|
HTTPアナライザの停止 |
クリックすると、HTTPアナライザが停止します。複数のリスナーを実行している場合、このボタンをクリックすると、すべてのリスナーが停止します。1つのリスナーのみを停止するには、下矢印をクリックして停止するリスナーを選択します。 |
HTTPアナライザの実行時に行われる処理
HTTPアナライザを実行し、「プリファレンス」ダイアログの「HTTPアナライザ」ページのプロキシ設定を使用して、JDeveloperによるすべてのJavaプロセスとアプリケーション・サーバー・アクティビティのトラフィックをHTTPアナライザ経由で送信します。
HTTPアナライザを開始すると、JDeveloperによるすべてのJavaプロセスとアプリケーション・サーバーのアクティビティが、「プリファレンス」ダイアログの「HTTPアナライザ」ページのプロキシ設定を利用してHTTPアナライザ経由でトラフィックを送信します。このダイアログは、「インスタンス」ウィンドウまたは「ログ」ウィンドウの「HTTPアナライザの起動」ボタンをクリックすると開きます。デフォルトでは、HTTPアナライザは1つのアナライザ・インスタンス上で1つのプロキシ(デフォルトは8099
)を使用しますが、必要な場合には独自のプロキシを追加できます。
各アナライザ・インスタンスには、異なるホスト/URLへのリクエストのリダイレクト、Webサービスのエミュレートなどの動作を決定する一連のルールがあります。
HTTPアナライザ設定の指定方法
別のホストおよびポート番号などのHTTPアナライザ設定を指定します。HTTPアナライザのプリファレンスを設定する手順を使用してください。
デフォルトでは、HTTPアナライザは1つのアナライザ・インスタンス上で1つのプロキシ(デフォルトは8099)を使用しますが、必要な場合には独自のプロキシを追加できます。
HTTPアナライザのプリファレンスを設定するには:
複数のインスタンスを使用する方法
HTTPアナライザの複数のインスタンスが実行されている場合、各インスタンスがそれぞれ異なるホストとポートの組合せを使用し、「HTTPアナライザ・インスタンス」ウィンドウにインスタンスのサマリーが表示されます。HTTPアナライザのインスタンスを追加する手順を使用してください。
HTTPアナライザの複数インスタンスを実行できます。それぞれが異なるホストとポートの組合せを使用し、「HTTPアナライザ・インスタンス」ウィンドウでそのサマリーを確認できます。
HTTPアナライザのインスタンスを追加するには:
外部Webブラウザの構成方法
外部Webブラウザを使用してHTTPアナライザ経由でメッセージをルーティングし、Webブラウザとクライアント間のトラフィックを確認します。HTTPアナライザのFirefoxプロファイルを構成する手順を使用してください。
外部Webブラウザを使用するとHTTPアナライザを通じてメッセージのルーティングが可能になり、Webブラウザとクライアントの間でトラフィックを確認できます。この項では、HTTPアナライザを開始してJDeveloper内からHTML、JSPまたはJSFページを実行するとき、デバッガ・プロファイルを使用する新しいFirefoxインスタンスが起動するように、Firefoxのプロファイルを使用する方法について説明します。
ノート:
次のステップではコマンドfirefox
を使用していますが、これはLinuxのコマンドです。Windowsを使用している場合は、firefox.exe
に置き換えてください。
HTTPアナライザを使用するようにFirefoxプロファイルを構成するには:
「OK」をクリックします。HTTPアナライザを開始し、JDeveloper内からHTML、JSPまたはJSFページを実行すると、デバッガ・プロファイルを使用する新しいFirefoxインスタンスが起動します。
HTTPアナライザによるSSLの使用
JDeveloperでは、事前構成済のHTTPS資格証明、HTTPメッセージを暗号化するためのHTTPSキーストア、Basic認証用のユーザー名トークン、SSO用のPKI X509証明書、HTTPS経由でセキュリティ・トークンを管理するためのセキュリティ・トークン・サービス、認証用のOAuthプロトコルおよびJRF Webサービスにアクセスするためのjps-config.xml
を使用して、HTTPアナライザを保護しています。
保護されたサービスまたはアプリケーション、たとえばポリシーで保護されたWebサービスに対してHTTPアナライザを使用できます。JDeveloperには、事前構成済の資格証明としてHTTPS Credential
が付属しており、これが常駐しています。HTTPS Credential
は削除も編集もできませんが、コピーして同じタイプの新しい資格証明を作成できます。
サービスまたはアプリケーションを実行すると、アナライザでは、適切なアイコンの実行に提供された資格証明を使用します。
HTTPアナライザでは、次のタイプの資格証明を使用できます。
- HTTPSキーストア
-
HTTPSは、送信前にHTTPメッセージを暗号化し、受信時に復号化します。信頼できる認証局によって署名された公開キー証明書を使用します。統合アプリケーション・サーバーを初めて起動すると、マシンに固有の
DemoIdentity
が生成され、その中にあるキーを使用してHTTPSチャネルが設定されます。HTTPSの構成には、クライアント・キーストア・アイデンティティが使用されます。サーバー・キーストア・アイデンティティは、HTTPアナライザがサーバーとして機能する際に使用され、リモート・サーバーへの接続時には使用されません。
キーストアおよびキーストア・プロバイダの詳細は、「キーストアの構成」を参照してください。デフォルトの資格証明であるHTTPSキーストアを選択する場合には、JDeveloperとHTTPアナライザがHTTPSトラフィックを処理する際に使用するキーストアを指定する必要があります。HTTPアナライザを実行するには、2つのキーストアが必要です。
-
クライアント・キーストア。今後の接続時にJDeveloperとアナライザ(クライアントの信頼)によって信頼されるすべてのホストの証明書が含まれています。
-
サーバー・キーストア。アナライザがコール側クライアントに対する自身の認証に使用するキーが含まれています(サーバー・キーストア)。
クライアント・キーストアが必要なのは、相互認証が必要な場合のみです。
JDeveloperで提供されるデフォルトのキーストアの他に、追加のHTTPSキーストアを作成できます。
-
- ユーザー名トークン
-
ユーザー名トークンは、Basic認証情報の伝達に利用されます。認証に使用されるユーザー名/パスワードを指定します。
- X509証明書
-
X509はシングル・サインオンのためのPKI標準であり、アイデンティティの提示と、メッセージの署名および暗号化に証明書を使用します。X509証明書の詳細を入力します。キーストアに対して有効なキーストアとパスワードを指定すると、クライアント・キー別名が移入されます。
JDeveloperに問題があってキーストアを検索できない、または開くことができない場合、エラー・メッセージが表示されます。
- STS構成
-
セキュリティ・トークン・サービス(STS)は、HTTPS上でセキュリティ・トークンを発行し管理するWebサービスです。セキュリティ・トークン・サーバーのプロバイダURLを入力し、オプションでポリシーURLも入力します。
ノート:
クライアント・トラストストアにはサーバーの公開キーが含まれている必要があります。含まれていないと、HTTPアナライザのリクエスト時にSAMLトークンがエラーになります。
- OAuthの詳細
-
OAuthはオープン認証プロトコルです。これにより、ユーザーにかわって機能するアプリケーションを、パスワードを共有せずに承認できます。OAuthプロトコル・セキュリティによって保護されるリソースは、有効なOAuth資格証明を使用してテストできます。たとえば、ツイッターのフィードを使用するリソースをテストする場合などがあります。
ノート:
ユーザーが所有するリソースにサービス・プロバイダでアクセスするには、まずそのサービス・プロバイダに登録する必要があります。
- JPS構成からのインポート
-
JRF Webサービスのテストに使用します。
jps-config.xml
には、HTTPアナライザがサービスへのアクセスに必要とするセキュリティ情報が含まれます。jps-config.xml
のデータを資格証明レコードにインポートできます。jps-config.xml
の場所を指定し、CSFキーの名前を入力すると、JDeveloperでは、jps-config.xml
および基礎となるウォレット・ファイルから読み取られた必要なデータで資格証明レコードが作成されます。jps-config.xml
からインポートされたデータは、「X509証明書」タブと「ユーザー名トークン」タブに移入されます。資格証明レコードが保存されると、そのレコードは、キーストア、キーおよびその他の必須データのソースとして、HTTPアナライザでWebサービス・プロキシの生成時に繰り返し使用できます。
HTTPアナライザの実行方法
JDeveloperには、クライアント・キーストアを構成し、資格証明を作成、削除するためのHTTPS資格証明と呼ばれる、一連のHTTPSキーストア資格証明が用意されています。資格証明を構成する手順を使用してください。
HTTPアナライザを使用すると、リクエストおよびレスポンスHTTPメッセージの内容を表示できます。
HTTPパケットを監視するには:
HTTPアナライザを使用して、JDeveloperで開発したWebサービスの動作を調べる場合は、「アプリケーション」ウィンドウでWebサービスのポップアップ・メニューから「Webサービスのテスト」を選択すると、HTTPアナライザが自動的に開始されます。
HTTPアナライザを使用してWebページをデバッグする方法
HTTPアナライザを使用してWebページをデバッグすると、入出力Webトラフィックを直接確認できます。HTTPアナライザを使用してWebページをデバッグする手順を使用してください。
HTML、JSPまたはJSFページなどのWebページをデバッグするときにもHTTPアナライザを使用できます。こうすると、ブラウザとの間で相互に送信されるトラフィックを直接調べることができます。
HTTPアナライザを使用してWebページをデバッグするには:
HTTPリクエストの編集と再送信の方法
HTTPリクエストを再送信する必要がある場合は、メッセージを編集し、メッセージ・レスポンスで変更を確認します。リクエストを送信したり、リクエストを編集して再送信する手順を使用してください。
HTTPリクエストの内容を編集し、再送信できます。次に、レスポンスを検証して、予想した変更が行われたかどうかを確認できます。
リクエストを送信するには:
-
HTTPアナライザの「テスト」ウィンドウの「リクエスト」ペインで、パラメータ値を入力します。
-
「リクエストの送信」ボタンをクリックします。
-
処理された値が「レスポンス」ペインに戻されます。
リクエストを編集して再送信するには:
ルールを使用して動作を決定する方法
「パス・スルー・ルール」、「転送ルール」、「URL置換ルール」および「テープ・ルール」などのルールを設定して、ルールによってHTTPアナライザの実行方法を指定します。
HTTPアナライザがルールによって決定される動作を利用して実行するように、ルールを設定できます。1つのHTTPアナライザ・インスタンスで複数のルールを設定できます。サービスのURLがルールに一致した場合は、そのルールが適用されます。一致しない場合は、リストの次のルールがチェックされます。サービスがどのルールにも一致しない場合は、クライアントがエラーを返します。このような理由から、先行するルールによって捕捉されないメッセージが捕捉されるように、「パス・スルー・ルール」は常に、リストの最後のルールにブランク・フィルタ(単にリクエストを渡す)を設定して使用します。
次のタイプのルールがあります。
-
パス・スルー・ルール
-
転送ルール
-
URL置換ルール
-
テープ・ルール
パス・スルー・ルールの使用
パス・スルー・ルールは、URLフィルタで一致が検出された場合にリクエストをサービスに渡します。デフォルト・ルールが2つ表示される「ルール設定」ダイアログで、パス・スルー・ルールを定義します。
パス・スルーは、URLフィルタが一致する場合にリクエストを単純にサービスに渡します。「ルール設定」ダイアログを最初に開くと、2つのパス・スルー・ルールが定義されています。
-
1つ目は
http://localhost:631
というURLフィルタを使用し、印刷サービス・リクエストを無視します。 -
2つ目はURLがブランクのフィルタで、単純にリクエストを元のサービスに渡します。新規ルールを追加する場合には、通常このルールをリストの最後に移動する必要があります。
URL置換ルールの使用
URL置換ルールを使用してURL範囲の一部を置換し、サービスを再ホストできるようにします。
URL置換ルールを使用すると、URL範囲の一部を置換してサービスを再ホストできます。たとえば、統合アプリケーション・サーバーとOracle WebLogic Serverの間で移動するときマシン名を置き換えることができます。
テープ・ルールの使用
標準のWS-Iログ・ファイルをルールへの入力として使用し、シミュレータ・モードでテープ・ルールを使用してHTTPアナライザを実行します。外部Webサービスに対して実行されるように開発されたWebサービス・クライアントをテストする手順を使用してください。
テープ・ルールを使用すると、標準のWS-Iログ・ファイルをルールへの入力として、HTTPアナライザをシミュレータ・モードで実行できます。テープ・ルールを設定するときには、次のような強力なオプションを使用できます。
-
ループ・テープ。テープを繰り返して実行できます。
-
一致するURLおよびメソッドにスキップ。一致するURLとHTTPリクエスト・メソッドが見つかった場合にのみ結果を返します。つまり、同じテープ・ルールでWSDLとエンドポイント・リクエストを使用できるということです。
-
「ヘッダー日付の修正」および「コンテンツ・サイズの修正」。リクエストが失敗しないように、メッセージのヘッダー日付とコンテンツ・サイズを現在の値に変更できます。
テープ・ルールを使用する例としては、外部Webサービスに対して実行されるように開発されたWebサービス・クライアントのテストなどがあります。
外部Webサービスに対して実行されるように開発されたWebサービス・クライアントをテストするには:
ノート:
テープ・ルールは、失効日が設定された資格証明またはヘッダーを使用するSOAPメッセージに対しては動作しません。
ルールの設定方法
異なるホストまたはURLへのリクエストのリダイレクトやWebサービスのエミュレートなどのHTTPアナライザの機能を決定するルールを設定します。HTTPアナライザのインスタンスにルールを設定する手順を使用してください。
HTTPアナライザがルールによって決定される動作を利用して実行するように、ルールを設定できます。各アナライザ・インスタンスには、異なるホスト/URLへのリクエストのリダイレクト、Webサービスのエミュレートなどの動作を決定する一連のルールがあります。
HTTPアナライザのインスタンスにルールを設定するには:
Webサービスに対するHTTPアナライザの使用
HTTPアナライザを使用して、Webサービスのコンテンツを調べます。
この項では、JDeveloperで開発したWebサービスに対してHTTPアナライザを使用する方法について説明します。一般的には、HTTP間のパケットを調べるときと同じように、Webサービスのコンテンツを調べる際にHTTPアナライザを使用します。
ノート:
WebLogic Server 9.xのポリシーがアタッチされているJAX-RPC Webサービスを、HTTPアナライザでテストすることはできません。WebLogic 9.xのポリシーは、JAX-RPCで非推奨になっています。
HTTPアナライザを使用したWebサービスのテスト
HTTPアナライザを使用してWebサービスをテストし、JDeveloperで開発され、Webサービスに接続しているプロキシのネットワーク・トラフィックを調べます。Webサービスをテストする手順を使用してください。
JDeveloperでは、HTTPアナライザを使用してWebサービスをテストし、JDeveloperで開発されたWebサービスへのプロキシ接続のネットワーク・トラフィックを調べることができます。
Webサービスをテストするには:
リクエストおよびレスポンス・パケットのHTTPヘッダーの内容を調べ、HTTPアナライザ・テスト・ウィンドウの下部にある該当のタブを選択して、SOAP構造、HTTPコンテンツ、16進コンテンツまたはRAWメッセージ・コンテンツを確認できます。
RESTful Webサービスに対するHTTPアナライザの使用
RESTful Webサービス用にJerseyによって作成されたWADLをHTTPアナライザが読み込み、HTTPアナライザのテスト・ウィンドウにWADLが表示されます。RESTfulサービスを調べ、RESTfulサービスをテストし、リソースを使用する手順を使用してください。
HTTPアナライザを使用して、RESTful Webサービスを操作できます。REST (Representational State Transfer)とは、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サービスの調査とテストが可能です。
- JerseyとWADL
-
Java API for RESTful Web Services (JAX-RS)は、RESTアーキテクチャ・スタイルに準じたWebサービスの作成をサポートします。JAX-RSはアノテーションを使用して、RESTful Webサービスの開発を簡略化します。アノテーションをWebサービスに追加することで、リソースと、そのリソースで実行できるアクションを定義できます。WebLogic ServerはJersey 2.x (JAX-RS 2.0 RI)をサポートします。Jersey 2.xの詳細は、
https://jersey.java.net/download.html
を参照してください。JAX-RS 2.0 API Specification (Rev a)は、
https://jax-rs-spec.java.net/nonav/2.0-rev-a/apidocs/index.html
を参照してください。Web Application Description Language (WADL)はJerseyによって作成されるXMLファイルで、サーブレットのリソースを記述します。
https://wadl.dev.java.net/
を参照してください。 - RESTfulサービスのテスト
-
WADLを使用したRESTfulサービスのテストについて、まずここで概略を示し、手順の詳細なステップを後述します。すべてのRESTfulサービスがこのように動作するわけではありません。RESTful Webサービス用にJerseyによって作成されたWADLをHTTPアナライザが読み込んだら、HTTPアナライザのテスト・ウィンドウでWADLを調べます。WADLからは、HTTPアナライザ・テスト・ウィンドウのインスタンスをメソッドから直接開くことができ、パラメータを入力してそれをサービスにポストしてメソッドをテストできます。HTTPアナライザは新しいURLにレスポンスをリダイレクトし、表示されたそのURLをクリックするとHTTPアナライザ・テスト・ウィンドウの別のインスタンスが開いてレスポンスが表示されます。完了したら、WADLを使用してHTTPアナライザが作成した新しいリソースを検索し、サービスをテストしてから削除します。
次の例は、
POST
、GET
およびDELETE
を使用する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サービス・アプリケーションをコンパイルして統合アプリケーション・サーバー・インスタンスにバインドします。これは「アプリケーション・サーバー」ウィンドウの統合WebLogic Serverノードです。
-
統合アプリケーション・サーバーのログ・ウィンドウを表示します(まだ開かれていない場合)。
-
-
HTTPアナライザのテスト・ウィンドウで「HTTPコンテンツ」タブをクリックします。RESTful WebサービスはSOAPを使用しないため、「SOAP構造」タブは使用しません。
-
統合アプリケーション・サーバーの「ログ」ウィンドウで、「ターゲット・アプリケーションWADL --」の隣にあるリンクをクリックします。テスト・ウィンドウの2つ目のインスタンスが開きます。URLにWADLが表示され、メソッドがGETであることを確認してください。
-
「リクエストの送信」をクリックします。GETメソッドはWADLのコンテンツを返すために使用されるため、「レスポンス」ペインに表示されます。
必要な場合には、左矢印を使用してペインの幅を最大化すると、コードが見やすくなります。
-
WADLファイルを任意の時点で表示するには、RESTful WebサービスのURLの右にある「WADLを開く」をクリックします。WADLファイルの読取り専用バージョンがソース・エディタで開き、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」を選択し、「リクエストの送信」をクリックします。
WebSocketsに対するHTTPアナライザの使用
HTTPアナライザは、プロキシを使用して保護されていないWebSocketリクエストを渡します。HTTPアナライザには、リクエスト/レスポンス・ストリームの内容が表示されます。
HTTPアナライザは、保護されていないWebSocketsリクエストをプロキシ経由で渡します。
リクエスト/レスポンス・ストリームの内容は、メッセージを閉じてから開きなおすとHTTPアナライザで使用できるようになります。WebSocketsメッセージは、レスポンス・コードが101
のメッセージです。
Fast InfosetでのHTTP解析の使用
HTTPアナライザがFast Infoセットを使用するようにするには、HTTPヘッダーでContent-Typeをオーバーライドし、デフォルトのsoap/xmlが使用されないようにします。
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アナライザを起動または停止する前に、レスポンスを待機しているすべてのアプリケーションを停止します。
レスポンスを待っているアプリケーションがある場合は、HTTPアナライザを起動または停止しないでください。HTTPアナライザを起動または停止する前に、アプリケーションを終了してください。
プロキシ設定の変更
HTTPアナライザを使用するときに、JDeveloperのプロキシ設定を変更します。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プロキシ・サーバーを設定し、例外リストを編集するには: