InterSystems IRIS SOAP ログ
InterSystems IRIS ネームスペースとの間でやり取りされる SOAP 呼び出しをログに記録するには、そのネームスペースで ^ISCSOAP グローバルの次のノードを設定します。
ノード |
目的 |
^ISCSOAP("Log") |
ログに含めるデータのタイプを指定します。以下の値のいずれかを使用します (大文字と小文字が区別されます)。
-
"i" — 着信メッセージをログに記録します。
-
"o" — 発信メッセージをログに記録します。
-
"s" — セキュリティ情報をログに記録します。このオプションは、SOAP フォルトに通常格納されるものよりも詳細を提供します。SOAP フォルトは、セキュリティに対する後続の攻撃を防ぐために意図的にあいまいな表現になっています。
-
"h" — SOAP ヘッダのみをログに記録します。"h" を "i" や "o" と組み合わせる必要があります。"h" を "i" と共に使用する場合、ログには着信メッセージの SOAP エンベローブ要素とヘッダ要素のみが含まれます。同様に、"h" を "o" と共に使用する場合、ログには発信メッセージの SOAP エンベローブ要素とヘッダ要素のみが含まれます。対応する SOAP 本文要素はログに記録されません。
-
"H" — HTTP ヘッダをログに記録します。"H" を "i" や "o" と組み合わせる必要があります。"H" を "i" と共に使用する場合、ログには着信メッセージの HTTP ヘッダが含まれます。同様に、"H" を "o" と共に使用する場合、ログには発信メッセージの HTTP ヘッダが含まれます。SOAP データのほかに、HTTP ヘッダがログに記録されます。
例えば "iosh" のように、これらの値を任意に組み合わせた文字列も使用できます。 |
^ISCSOAP("LogFile") |
作成するログ・ファイルの完全なパスとファイル名を指定します。 |
ログには送信者または受信者が適切に示されるので、そのやり取りにどの Web サービスまたは Web クライアントが関係しているのかを確認することができます。
次に、ログ ファイルの一部の例を示します (この例では、読みやすいように改行が追加されています)。
01/05/2010 13:27:02 *********************
Output from web client with SOAP action = http://www.mysecureapp.org/GSOAP.AddComplexSecureWS.Add
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
...
<SOAP-ENV:Header>
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
</SOAP-ENV:Header>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
**** Output HTTP headers for Web Client
User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;)
Host: hostid
Accept-Encoding: gzip
**** Input HTTP headers for Web Client
HTTP/1.1 200 OK
CACHE-CONTROL: no-cache
CONTENT-ENCODING: gzip
CONTENT-LENGTH: 479
CONTENT-TYPE: application/soap+xml; charset=UTF-8
...
01/05/2010 13:27:33 *********************
Input to web client with SOAP action = http://www.mysecureapp.org/GSOAP.AddComplexSecureWS.Add
ERROR #6059: Unable to open TCP/IP socket to server localhost:8080
string
以下の点に注意してください。
-
InterSystems IRIS XML ツールを使用すると、署名が行われた XML ドキュメントのシグニチャを検証して、暗号化された XML ドキュメントを解読できます。これらのタスクをそのネームスペースで実行する場合、ログにはそれらのタスクの詳細も含まれます。"XML ツールの使用法" を参照してください。
-
InterSystems IRIS SOAP ログは、何もメッセージが送信されない (つまり、サービスとクライアントが同じマシン上に存在する) 場合でも SOAP 呼び出しをキャプチャします。
-
サーバ・エラーが発生した場合、SOAP ログへの書き込みは停止します。代わりにメッセージ・ログを参照してください。詳細は、"監視ガイド" の "ログ・ファイルの監視" を参照してください。
-
タスク・マネージャの CheckLogging タスクは、SOAP のロギングが長時間放置される (既定では 2 日間) とアラートを作成します。
サードパーティのトレース・ツール
Web サービスのテストには、Wireshark、ProxyTrace、tcpTrace、XMLSpy、soapUI、Web Service Studio Express などのトレース・ツールを使用できます。これらのツールには、無償で利用できるものと、ライセンスが必要なものがあります。インターシステムズでは、これらのツールのいずれについてもその使用を特に推奨しているわけではありません。これらのツールの情報は一般情報として提供しています。
トレース・ツールを使用すると、実際のメソッド呼び出し、および応答を確認できます。トレース・セッションは、特定のポートで待ち受けし、そのポートで受信するメッセージを表示し、それらのメッセージを宛先ポートに転送し、応答を表示し、待ち受けるポートに応答を転送します。
例えば、http://localhost:52773/csp/gsop/GSOP.Divide.CLS に Web サービスがあるとします。
また、そのサービスと対話するために作成された Web クライアントがあるとします。この Web クライアントの LOCATION パラメータは、"http://localhost:52773/csp/gsop/GSOP.Divide.CLS" に等しくなります。
クライアントとサービスの間のメッセージをトレースするには、以下の 2 つの操作が必要です。
-
トレース・ツールで、ポート 8080 (例) で待ち受けし、宛先ポート 52773 を使用するトレース・セッションを開始します。
-
Web クライアントで、ポートとして 52773 の代わりに 8080 を使用するように LOCATION パラメータを編集し、再コンパイルします。
または、Web クライアントを呼び出すコードで、次のようにその Web クライアントの Location プロパティを変更します。
//reset location to port 8080 to enable tracing
set client.Location="http://localhost:8080/csp/gsop/GSOP.DivideWS.cls"
これで、Web クライアントを使用するときに、トレース・ツールがクライアントと Web サービスの間のメッセージを傍受して表示するようになります。この例を次に示します。
上の部分は、クライアントによって送信される要求を示しています。下の部分は、Web サービスによって送信される応答を示しています。