Webアプリケーションでは、通常Webブラウザを使って動作確認をしながら開発を進めていくことでしょう。しかし、Cookieや認証などHTTPヘッダに含まれる情報を使ったプログラムを作っている場合や、ファイルアップロードなどの際にPOSTフォームで送信されるデータの中身を確認したい場合には、Webブラウザとサーバとでやり取りされている生のHTTPメッセージの内容を確認したくなります。たいていのWebブラウザでは、HTMLソースの閲覧はできますが、ヘッダ情報も含んだHTTPメッセージを見ることはできません。
そんなときに使える便利なツールが、「Axis TCPモニタ」(以降tcpmon)です。tcpmonを使えば、Webブラウザとサーバ間で送受信されるHTTPメッセージをモニタリングすることができます。tcpmonは、ApacheのWebサービスプロジェクトAxisの付属ツールとして提供されているものです。本来の用途は、Webサービスでやり取りされるSOAPメッセージをモニタリングするためのものですが、独立したTCPモニタとして完成されており、Webアプリケーション開発に十分役立てることができます。
注:筆者が調査した限りでは、先ごろ正式リリースされたJ2SE5.0ではtcpmonは動かないようです(執筆時点)。本稿では、J2SE1.4.2_05で動作確認を行っています。
tcpmonは通常のJavaプログラムです。プログラム本体が含まれるjarファイルをクラスパスへ通すだけで、javaコマンドから実行できます。
以下のApache AxisサイトからAxis本体「axis-x_x.zip」(xはバージョン番号)をダウンロードしてください(現時点の最新安定版は「Axis 1.1」です)。
ダウンロードした圧縮ファイルを解凍してできるフォルダ「axis-x_x\lib」から、ファイル「axis.jar」を取り出し、適当な場所へ保存してください。Javaの拡張フォルダへ保存しておけば、tcpmonの起動毎にクラスパスを設定しなくてよいので便利です。本稿では、説明のために敢えて拡張フォルダへは置かず、コマンドを実行するカレントフォルダに置くことにします。
tcpmonの起動は以下のようにコマンドを実行します。
> java -cp axis.jar org.apache.axis.utils.tcpmon
すると、画面1のようなウィンドウが立ち上がります。この「Admin」画面でtcpmonが使用するポート番号を入力します(「Listen Port #」部分)。本稿では、「1234」と入力します。つづいて、ターゲットとなるサーバ側のホスト名(「Target Hostname」部分)とそのポート番号(「Target Port #」部分)を入力します。本稿では、ターゲットを仮に「www.wings.msn.to」(WINGSプロジェクトのWebサイト)とします。プロトコルはHTTPですので、ポート番号は「80」になります。ブラウザは、ここで指定したtcpmonのポート番号へアクセスすることで、tcpmonを経由したターゲットのホストとの通信を行うことになります。
上記データを入力し終えたら、画面一番下にある「Add」ボタンを押してみましょう。すると、画面上部の「Admin」タブの横に新たに「Port 1234」というタブが作られます。これで、HTTPをモニタリングする準備は完了です(画面2)。
ブラウザから、「http://localhost:1234/」へアクセスしてみましょう。Webブラウザには、WINGSプロジェクトのTOPページが表示されるはずです(画面3)。tcpmonでは、このときのHTTPメッセージの送受信がモニタされており、以下のようにしてHTTPメッセージの全文を見ることができます。画面下部の上段がHTTPリクエスト、下段がHTTPレスポンスです。
なお、本稿ではターゲットをあらかじめ定めておくリスナ方式での使い方を説明しましたが、HTTPプロキシとして動作させることも可能です。プロキシ方式の場合、Webブラウザで送受信されるすべてのHTTPメッセージをモニタリングすることができます。プロキシとして利用する場合は、「Admin」画面でtcpmonが利用するポート番号を設定し、次に「Listener」の代わりに「Proxy」を選択するだけです。最後に、Webブラウザで通常のHTTPプロキシを登録する場合と同様にして、tcpmonのプロキシを登録します。
Copyright © ITmedia, Inc. All Rights Reserved.