この章では、Oracle JDeveloperの監査とプロファイリングの機能について説明します。
この章では、次の項目について説明します。
JDeveloperに用意されている監査とプロファイリングのツールを使用して、作成したアプリケーションの状態とパフォーマンスを分析します。これらのツールは、コードの品質向上に効果的です。JDeveloperの監査機能を使用すると、Javaコードがプログラミング規格に準拠しているかどうかを分析できます。
プロファイラを使用して収集するプログラムに関する統計によって、より多くの時間を消費するメソッド、最も多くコールされるメソッド、メモリーの使用状況および作成中のオブジェクトの種類を識別し、ボトルネックなどのパフォーマンスの問題をより簡単に診断できます。
監査とは、プログラミング規格を定義している規則およびメトリックに準拠しているかどうかについてのコードの静的な分析のことです。コード監査では、コードの改善および保守を困難にしている不具合が検出されます。JDeveloperの監査ツールを使用すると、このような不具合を検出および修正できます。コンパイルが不可能または実行不可能な場合でも、コードの監査は可能です。
プロファイルを作成してカスタマイズし、使用する規則を選択して個々の規則のパラメータを設定できます。詳細は、それぞれのコード監査規則およびコード測定を参照してください。
コード監査レポートには、ルール違反および測定結果がツリーに編成されて表示されます。ツリーの各行は構成メンバーまたは違反のいずれかに対応しており、その構成メンバーまたは理論上の違反に対するすべての測定値が含まれます。構成メンバーは、メソッド、クラス、ファイル、プロジェクトまたはワークスペースです。監査ツールとコードの監査手順の詳細は、第18.9項「アプリケーションのパフォーマンスの最適化」を参照してください。
HTTPアナライザを使用すると、次のようにHTTPトラフィックを監視できます。
Webサービス・クライアントとサービスの間のリクエスト/レスポンス・トラフィックの監視。
JavaアプリケーションとWebリソースの間のHTTPリクエストの監視。
HTTPアナライザは、JDeveloperのコードとそのコードが通信するHTTPリソースとの間でプロキシとして機能し、送受信されるHTTPトラフィックに関連してアプリケーションをデバッグしやすくなります。
HTTPアナライザを実行すると、情報を提供する多くのウィンドウが表示されます。
「ツール」メニューから「Httpアナライザ」を開くと、図8-1のように「Httpアナライザ」のログ・ウィンドウが表示されます。デフォルトではJDeveloperの中央下部に、他のログ・ウィンドウと並んで表示されます。
HTTPアナライザを実行すると、「Httpアナライザ」ログ・ウィンドウにリクエスト/レスポンスのメッセージが出力されます。メッセージは、グループ化と並替えが可能です。
メッセージを並べ替えるには、「順序」タブを選択し、列ヘッダーを使用してソートします(ヘッダーのクリックでソート、ダブルクリックで2次ソート)。
メッセージをグループ化するには、「相関」タブをクリックします。
列の順序を変えるには、列ヘッダーをクリックしたまま新しい位置までドラッグします。
表8-1 「Httpアナライザ」ログ・ウィンドウのツールバー・アイコン
アイコン | 名前 | 機能 |
---|---|---|
![]() |
アナライザ・プリファレンス |
新規リスナー・ポートを指定したり、デフォルト・プロキシを変更できるHTTPアナライザのプリファレンス・ダイアログを開く場合にクリックします。「ツール」→「プリファレンス」を選択し、「Httpアナライザ」ページを選択してHTTPアナライザに進むこともできます。詳細は次の項を参照してください。 |
![]() |
新規リクエストの作成 |
ペイロード詳細の入力や、メッセージの編集および再送信を行うHTTPアナライザのテスト・ウィンドウを開く場合にクリックします。 |
![]() |
HTTPアナライザの起動 |
HTTPアナライザを起動する場合にクリックします。モニターがバックグラウンドで実行され、「停止」をクリックするか、JDeveloperを終了したときにのみ停止します。複数のリスナーを定義している場合、このボタンをクリックするとすべてのリスナーが起動します。1つのリスナーのみを起動するには、下矢印をクリックして起動するリスナーを選択します。 |
![]() |
Httpアナライザの停止 |
HTTPアナライザを停止する場合にクリックします。複数のリスナーを実行している場合、このボタンをクリックすると、すべてのリスナーが停止します。1つのリスナーのみを停止するには、下矢印をクリックして停止するリスナーを選択します。 |
![]() |
リクエストの送信 |
リクエストの内容を変更したときに、リクエストを再送信する場合にこのボタンをクリックします。変更されたリクエストが送信され、戻されたレスポンスで変更を確認できます。 |
![]() |
WS-Iログ・ファイルを開く |
既存のWS-Iログ・ファイルにナビゲートできるアップロードするWS-Iログ・ファイルの選択ダイアログを開く場合にクリックします。詳細は第16.13項「Webサービスの監視と分析」を参照してください。 |
![]() |
パケット・データの保存 |
HTTPアナライザ・ログ・ウィンドウの内容をファイルに保存する場合にクリックします。 |
![]() |
WS-I分析 |
Webサービスをパケット・レベルで検証できるWS-I Analyzeウィザードを起動する場合にクリックします。詳細は第16.13項「Webサービスの監視と分析」を参照してください。 |
![]() |
すべて選択 |
HTTPアナライザのログ・ウィンドウですべてのエントリを選択する場合にクリックします。 |
![]() |
すべて選択解除 |
HTTPアナライザですべてのエントリの選択を解除する場合にクリックします。 |
![]() |
選択した履歴のクリア(削除) |
HTTPアナライザでエントリをクリアする場合にクリックします。 |
HTTPアナライザのログ・ウィンドウで「新規リクエストの作成」ボタンをクリックすると、空のHTTPアナライザ・テスト・ウィンドウが開きます。アプリケーション・ナビゲータでWebサービス・コンテナのポップアップ・メニューから「Webサービスのテスト」を選択、またはHTTPアナライザのログ・ウィンドウで行をダブルクリックすると、図8-2のようにリクエスト/レスポンスの詳細を示すテスト・ウィンドウが開きます。デフォルトではJDeveloperの中央、ソース・エディタが表示されるのと同じ位置に表示されます。
テスト・ウィンドウでは、メッセージのヘッダーとパラメータを調べることができます。サービスをテストするには、適切なパラメータを入力して「リクエストの送信」をクリックします。
テスト・ウィンドウの下部にあるタブから、メッセージの内容の表示方法を選択できます。選択できるメッセージの表示方法は、次のとおりです。
図8-2に示されている「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アナライザ」ダイアログで作成します。
表8-2 「HTTPアナライザ・インスタンス」ウィンドウのツールバー・アイコン
アイコン | 名前 | 機能 |
---|---|---|
![]() |
アナライザ・プリファレンス |
新規リスナー・ポートを指定したり、デフォルト・プロキシを変更できる「Httpアナライザ」ダイアログを開く場合にクリックします。 |
![]() |
新規リクエストの作成 |
ペイロード詳細の入力や、メッセージの編集および再送信を行うHTTPアナライザのテスト・ウィンドウの新しいインスタンスを開く場合にクリックします。 |
![]() |
HTTPアナライザの起動 |
HTTPアナライザを起動する場合にクリックします。モニターがバックグラウンドで実行され、「停止」をクリックするか、JDeveloperを終了したときにのみ停止します。複数のリスナーを定義している場合、このボタンをクリックするとすべてのリスナーが起動します。1つのリスナーのみを起動するには、下矢印をクリックして起動するリスナーを選択します。 |
![]() |
Httpアナライザの停止 |
HTTPアナライザを停止する場合にクリックします。複数のリスナーを実行している場合、このボタンをクリックすると、すべてのリスナーが停止します。1つのリスナーのみを停止するには、下矢印をクリックして停止するリスナーを選択します。 |
HTTPアナライザを開始すると、JDeveloperによるすべてのJavaプロセスとアプリケーション・サーバーのアクティビティが、「Httpアナライザ」ダイアログのプロキシ設定を利用して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 Fusion Middleware Oracle WebLogic Serverのセキュリティについてを参照してください。デフォルトの資格証明であるHTTPS Credential
を選択する場合には、JDeveloperとHTTPアナライザがHTTPSトラフィックを処理する際に使用するキーストアを指定する必要があります。HTTPアナライザを実行するには、2つのキーストアが必要です。
クライアント・キーストア。外部接続時にJDeveloperとアナライザ(クライアントの信頼)によって信頼されるすべてのホストの証明書が含まれています。
サーバー・キーストア。アナライザがコール側クライアントに対する自身の認証に使用するキーが含まれています(サーバー・キーストア)。
クライアント・キーストアが必要なのは、相互認証が必要な場合のみです。
X509はシングル・サインオンのためのPKI標準であり、アイデンティティの提示と、メッセージの署名および暗号化に証明書を使用します。X509証明書の詳細を入力します。キーストアに対して有効なキーストアとパスワードを指定すると、クライアント・キー別名が移入されます。
JDeveloperに問題があってキーストアを検索できない、または開くことができない場合、エラー・メッセージが表示されます。
セキュリティ・トークン・サービス(STS)は、HTTPS上でセキュリティ・トークンを発行し管理するWebサービスです。セキュリティ・トークン・サーバーのプロバイダURLを入力し、オプションでポリシーURLも入力します。
注意: クライアント・トラストストアにはサーバーの公開鍵が含まれている必要があります。含まれていないと、HTTPアナライザのリクエスト時にSAMLトークンがエラーになります。 |
別のHTTPS値を使用するようにHTTPアナライザを構成するには、次のようにします。
メイン・メニューから、「ツール」→「プリファレンス」を選択します。
「設定」ダイアログで、「資格証明」ノードを選択します。詳細は、[F1]を押すか、ダイアログ・ページ内で「ヘルプ」をクリックしてください。
使用する新しいキーストアと証明書の詳細を入力します。
HTTPアナライザを使用すると、ポリシーで保護されたWebサービスをテストできます。
注意: WebLogic 9.xのポリシーで保護されているJAX-RPC Webサービスを、HTTPアナライザでテストすることはできません。WebLogic 9.xのポリシーは、JAX-RPCに対して非推奨です。 |
HTTPアナライザでは次のものがサポートされます。
HTTPS。メッセージは、信頼できる認証局によって署名された公開鍵証明書を使用して、送信前に暗号化されます。受信時に復号化されます。
ユーザー名トークン。ユーザー名/パスワードに基づくトークンを使用してBasic認証情報を伝達する手段です。
X509.これはシングル・サインオン認証のためのPKI標準であり、アイデンティティの提示と、メッセージの署名および暗号化に証明書を使用します。
STS。セキュリティ・トークン・サービス(STS)は、セキュリティ・トークンを発行し管理するWebサービスです。
HTTPアナライザのテスト・ウィンドウで使用する資格証明を選択します。
HTTPアナライザに認証情報を追加するには、次のようにします。
「ツール」→「プリファレンス」を選択して「プリファレンス」ダイアログを開き、「資格証明」ページに進みます。詳細は、[F1]を押すか、「プリファレンス」ダイアログで「ヘルプ」をクリックしてください。
Webサービスに適した認証情報であることを確認します。
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サービスの調査とテストが可能です。
JDeveloperでRESTful Webサービスを作成する前に、Jersey 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アナライザが作成した新しいリソースを検索し、サービスをテストしてから削除します。
例8-1に、POST
、GET
、DELETE
を使用するWADLドキュメントの例を示します。
例8-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のコンテンツを返すために使用されるため、「レスポンス」ペインに表示されます。
必要な場合には、左矢印を使用してペインの幅を最大化すると、コードが見やすくなります。
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アナライザの実行中に発生する可能性がある問題の解決方法について説明します。
レスポンスを待っているアプリケーションがある場合は、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
が存在する必要があります。
プロファイラは、実行中のプログラムによるプロセッサおよびメモリーのリソースの使用状況を監視し、ログに記録します。統計が収集され、パフォーマンスの問題をより容易に診断してコードの非効率な部分を修正できます。
JDeveloperには、ローカルおよびリモート・プロファイリング用に、CPUプロファイラおよびメモリー・プロファイラという2種類のプロファイラが用意されています。
CPUプロファイラは、アプリケーションがプロセッサに及ぼす影響を分析するために使用します。CPUプロファイラを使用すると、起動、初期化、再描画およびコンパイルなどのアプリケーションの機能をテストできます。
メモリー・プロファイラは、プログラムがJavaヒープのメモリーをどのように使用するかを視覚的かつ統計的に分析するものです。メモリー・プロファイラを使用すると、プログラムのメモリー・リークを検出して切り離すことができます。
プロファイリングと、アプリケーションおよびプロジェクトをプロファイリングする手順の詳細は、第18.10項「プロジェクトのプロファイリング」を参照してください。