Sun Identity Manager 8.1 システム管理者ガイド

SPML のトレース

ここでは、SPML Version 1.0 と SPML Version 2.0 のトレースを有効にするためのメソッドについて説明します。

SPML 1.0 のトレースを有効にする

SPML 1.0 には、Identity Manager の SPML トラフィックと診断問題をログできるよう、トレース出力のチューニングに次のオプションが用意されています。

メソッド 1: setTrace メソッドの有効化

SPML 1.0 のトレースを有効に設定するには、SpmlClientLighthouseClient クラスから提供される setTrace メソッドを使用します。

この setTrace メソッドを有効にすると、クライアントから送信された要求の XML と、サーバーから受信した応答の XML が、随時送受信時に クライアント コンソールに印字されます。

setTrace メソッドは、Boolean 引数を使用します。例を示します。


SpmlClient client = new SpmlClient();
 client.setURL("http://localhost:8080/idm/spml");
 client.setTrace(true);

メソッド 2: org.openspml.server.SOAPRouter サーブレットの初期化

サードパーティである 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 マニュアルを参照してください。


メソッド 3: trace オペレーショナル属性の渡し

個々の 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 のトレースを有効にする

SPML 2.0 には、Identity Manager の SPML トラフィックと診断問題をログできるよう、トレース出力のチューニングに次のオプションが用意されています。

メソッド 1: org.openspml.v2.transport.RPCRouterServlet サーブレットの使用

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 サーブレットの初期化」を参照してください。


メソッド 2: SPML アクセスログの使用

SPML 2.0 は、有用なトラブルシューティングツールとして使用できる、簡易テキストのアクセスログです。このログは常に使用可能で、受信された要求の種類、その要求の処理に掛かった所要時間、要求が完了したかどうかなどの情報を、トレースを有効に設定しなくても表示できます。

この SPML テキストのアクセスログの設定手順は、『Sun Identity Manager 8.1 Web Services』「Configuring SPML Tracing」に記載されています。