ファイヤープロジェクト
TCPMon(AXIS 1.2)
2005-06-11T16:15+09:00   matsu
システムの動作を確認,調査するために,入出力を押えることは重要である.TCPMonはAXISとともに配布されるSOAP電文を中継,送受信するツールであり,Webサービスを提供するシステムの入出力を押えるのに便利であるので,これを試してみた.
TCPMonは,サーバとクライアントの間に立ち,行きかう通信電文を出力するものである. これは,スニッファの機能を限定したもののように見えるが,整形式XML文書をフォーマットする機能(改行,インデントして表示してくれる),要求電文を編集してTCPMonから再要求する機能を有しており,スニッファよりも目的を絞り込むことで,SOAPアプリケーションの開発に便利なツールとなっている. TCPMonはプログラムの仕組み上,中継する通信プロトコルはHTTPに限らず,telnetなどにも使用できる.
AXISを入手済であれば,TCPMonはCLASSPATHにaxis.jarを加えて起動するだけである. 以下は,カレントディレクトリにaxis.jarがある場合の例.
$ export CLASSPATH=axis.jar 
$ java org.apache.axis.utils.tcpmon
起動後,どのポートにてリクエストを待ち受け,どのサーバのどのポートにリクエストを転送するかを指定する画面が開く. これらのパラメータをコマンドラインから指定することもできる.
$ java org.apache.axis.utils.tcpmon 待ち受けポート 転送先サーバ 転送先ポート
当然待ち受けポートに1024未満を指定するには権限が必要である(普通一般ユーザでは指定できない).
まず,TCPMonを起動する.
$ java org.apache.axis.utils.tcpmon
今回は,待ち受けポートなどを指定しなかったので,下のような管理画面が起動した.
今回は以下の入力欄を埋めた.
待ち受けポート
TCPMonがクライアントからの接続を待ち受けるポート. Webサービスクライアントはこのポートに接続する.
ターゲットホスト名
TCPMonが待ち受けポートへの接続を転送するホスト. すなわちAXISが動作しているサーバ.
ターゲットポート
TCPMonが待ち受けポートへの接続を転送するポート. すなわちAXISが動作しているポート.
そして追加ボタンを押した. すると,待ち受けポートが見出しになっているタブが作成された.
上部に入力した待ち受けポート,ターゲットサーバ名,ターゲットポート名が表示されている. もちろん上図は私の環境での値なので,各自の環境にあわせて入力する. 次に,WebブラウザでAXISのサンプルにアクセスしてみる.
http://servername/fireproject/EchoHeaders.jws?method=list
すると,SOAP電文が回答される. これはTCPMonを使用せず,直接サーバにアクセスしているので,TCPMonの画面に変化はない. 次に,TCPMonを使用してみる.
http://localhost:8180/fireproject/EchoHeaders.jws?method=list
TCPMonはローカルホストのポート8180にて待ち受けているので,そのように指定した.
上の一覧部分に送受信の一覧がある. この一覧で選択した送受信の内容が表示される,送信電文エリア,受信電文エリアが下部分に順に並んでいる. これは,下部のレイアウト変更ボタンで上下表示/左右表示を切替えられる. また,送受信電文をXMLとして見やすく表示するためのチェック(XMLフォーマット)も下部にある. 次に送信電文エリアの冒頭
GET /fireproject/EchoHeaders.jws?method=list HTTP/1.1
GET /fireproject/EchoHeaders.jws?method=whoami HTTP/1.1
と書き換えて下部の再送ボタンを押してみると,書き換えた内容で再要求され,回答が受信電文エリアに回答される(※). 受信電文エリアでは,要素soapenv:Bodyの内容が変化している. このようにTCPMonを使用すると,クライアントとサーバの間に立って,送受信の表示や要求を編集,再要求することができる.
※ 再送の場合,電文経路にWebブラウザはないので,Webブラウザの表示に変化はない.
matsu(C)
Since 2002
Mail to matsu