ここでは、SPML Version 1.0 と SPML Version 2.0 のトレースを有効にするためのメソッドについて説明します。
SPML 1.0 には、Identity Manager の SPML トラフィックと診断問題をログできるよう、トレース出力のチューニングに次のオプションが用意されています。
SPML 1.0 のトレースを有効に設定するには、SpmlClient と LighthouseClient クラスから提供される setTrace メソッドを使用します。
この setTrace メソッドを有効にすると、クライアントから送信された要求の XML と、サーバーから受信した応答の XML が、随時送受信時に クライアント コンソールに印字されます。
setTrace メソッドは、Boolean 引数を使用します。例を示します。
SpmlClient client = new SpmlClient(); client.setURL("http://localhost:8080/idm/spml"); client.setTrace(true); |
サードパーティである OpenSPML 団体のオープンソースクラスである org.openspml.server.SOAPRouter サーブレットの初期化時に、トレースを有効にできます。このサーブレットは、サーブレットが SPML 要求を処理できるよう、RPC トラフィック情報の出力を制御します。
このメソッドを有効にするには、次を WEB-INF/web.xml ファイルに追加します。
<servlet> <servlet-name>rpcrouter2</servlet-name> <display-name>OpenSPML SOAP Router</display-name> <description>no description</description> <servlet-class> org.openspml.server.SOAPRouter </servlet-class> <init-param> <param-name>trace</param-name> <param-value>true</param-value> </init-param> ... </servlet> |
次に、SPML 1.0 トレースの出力例を示します。
SpmlClient: sending to http://example.com:8080/idm/servlet/rpcrouter2 <spml:addRequest xmlns:spml='urn:oasis:names:tc:SPML:1:0' xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core'> <spml:operationalAttributes> <dsml:attr name='session'> <dsml:value>session token</dsml:value> </dsml:attr> </spml:operationalAttributes> <spml:identifier type='urn:oasis:names:tc:SPML:1:0#GUID'> <spml:id>suetonius</spml:id> </spml:identifier> <spml:attributes> <dsml:attr name='objectclass'> <dsml:value>person</dsml:value> </dsml:attr <dsml:attr name='password' <dsml:value>password</dsml:value> </dsml:attr> <dsml:attr name='gn'> <dsml:value>Suetonius</dsml:value> </dsml:attr> <dsml:attr name='sn'> <dsml:value>Tranquillus</dsml:value> </dsml:attr> <dsml:attr name='email'> <dsml:value>twelve@example.com</dsml:value> </dsml:attr> </spml:attributes> </spml:addRequest> SpmlClient: received <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'> <SOAP-ENV:Body> <spml:addResponse xmlns:spml='urn:oasis:names:tc:SPML:1:0' xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' result='urn:oasis:names:tc: SPML:1:0#success'> <spml:operationalAttributes> <dsml:attr name='session'> <dsml:value>session token</dsml:value> </dsml:attr> </spml:operationalAttributes> <spml:identifier type='urn:oasis:names:tc:SPML:1:0#GUID'> <spml:id>suetonius</spml:id> </spml:identifier> </spml:addResponse> /SOAP-ENV:Body> </SOAP-ENV:Envelope> |
SOAP rpcrouter サーブレットの詳細は、OpenSPML Toolkit マニュアルを参照してください。
個々の SPML RPC 要求のトレースを有効に設定するには、trace オペレーショナル属性をサーバー側の RPC 要求に渡します。
サーブレット初期化中にトレースが実行され、サーブレットの RPC トラフィックが SPML Version 1.0 の要求を処理できるように、情報を出力する方法を制御します。たとえばこのトレースは raw XML を出力します。これは System.out が (アプリケーションコンテナの関数である) そのサーブレット用のものかどうかにかかわらず、行ったりきたり送信されます。たとえば、次のようになります。
AddRequest ar = new AddRequest(); ar.setOperationalAttribute("trace", "true"); |
trace 属性を使用したとき、属性がサーバー処理に影響を与える度合いはベンダーによって異なります。現在のところ、Identity Manager は raw 要求データと応答データをサーバーコンソールに出力しています。これは、クライアントアプリケーションがコンソールウィンドウに関連付けられていない場合に有用です。
詳細は、OpenSPML Toolkit 製品のマニュアルを参照してください。
SPML 2.0 には、Identity Manager の SPML トラフィックと診断問題をログできるよう、トレース出力のチューニングに次のオプションが用意されています。
SPML 1.0 と同様、サーブレットが SPML 2.0 要求を処理できるように、RPC トラフィック情報の出力を制御する org.openspml.v2.transport.RPCRouterServlet クラスの初期化時に、SPML 2.0 用のトレースが有効に設定できます。
このメソッドを有効にするには、次を WEB-INF/web.xml ファイルに追加します。
<servlet> <servlet-name>openspmlRouter</servlet-name> <display-name>OpenSPML SOAP Router</display-name> <description>A router of RPC traffic - nominally SPML 2.0 over SOAP</description> <servlet-class> org.openspml.v2.transport.RPCRouterServlet </servlet-class> <init-param> <param-name>trace</param-name> <param-value>true</param-value> </init-param> ... </servlet> |
次の例は、rpcrouter サーブレットトレースからの出力を表したものです。
RPCRouterServlet: <?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/> <SOAP-ENV:Body><lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='random name' executionMode='synchronous' returnData='everything'> <openspml:operationalNameValuePair xmlns:openspml='urn:org:openspml:v2:util:xml' name=' session'value=session token'/> <psoID ID='random name' targetID='spml2-DSML-Target'/> </lookupRequest> </SOAP-ENV:Body></SOAP-ENV:Envelope> RPCRouterServlet: response: <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'> <SOAP-ENV:Body> <lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='random name'error='noSuchIdentifier'> <openspml:operationalNameValuePair xmlns:openspml='urn:org:openspml:v2:util:xml' name='session' value=session token/> <errorMessage>Item User:random name was not found in the repository, it may have been deleted in another session.</errorMessage> </lookupResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
詳細は、「SPML 1.0 のトレースを有効にする」セクションの「メソッド 2: org.openspml.server.SOAPRouter サーブレットの初期化」を参照してください。
SPML 2.0 は、有用なトラブルシューティングツールとして使用できる、簡易テキストのアクセスログです。このログは常に使用可能で、受信された要求の種類、その要求の処理に掛かった所要時間、要求が完了したかどうかなどの情報を、トレースを有効に設定しなくても表示できます。
この SPML テキストのアクセスログの設定手順は、『Sun Identity Manager 8.1 Web Services』の「Configuring SPML Tracing」に記載されています。