Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第4章 Messaging方式のアプリケーションの実装> 4.4 SAAJ-APIによるSOAPメッセージの処理

4.4.5 Faultの処理

 SOAPメッセージを送信する送信アプリケーションは、サーバシステムからの復帰情報としてFaultメッセージを受信する場合があります。SAAJ-APIではFaultはSOAPFaultオブジェクトとして表されます。SOAPFaultオブジェクトはSOAPMessageオブジェクト中のSOAPBodyオブジェクトの子要素として設定されます。
 Faultを起こすアプリケーションはSOAPBody.addFaultメソッドでSOAPFaultオブジェクトを生成し、Faultを受けるアプリケーションはSOAPBody.getFaultメソッドでSOAPFaultオブジェクトを取り出すことができます。また送信アプリケーションはSOAPBody.hasFaultメソッドで受信したSOAPMessageオブジェクト中にFaultがあるかどうかを判定することができます。

 SOAPFaultオブジェクトには以下の情報が保持され、アプリケーションではそれらの情報を設定・取得することができます。

 import javax.xml.soap.*;
 import java.util.Iterator;
    ....
  MessageFactory mf = MessageFactory.newInstance();
  SOAPMessage msg = mf.createMessage();
  SOAPPart part = msg.getSOAPPart();
  SOAPEnvelope env = part.getEnvelope();
  env.getHeader().detachNode();
  SOAPBody body = env.getBody();
    .....
 // SOAPFaultを設定する場合
  SOAPFault fault = body.addFault();
  fault.setFaultActor(Faultアクタ);
  fault.setFaultCode(Faultコード);
  fault.setFaultString(Fault説明);
  Detail detail = fault.addDetail();
  DetailEntry entry = detail.addDetailEntry( ..... );
  entry.addChildElement(...);
    .....
  SOAPMessage reply = .....;
 // Faultが発生したかを判定
  env = reply.getSOAPPart().getEnvelope();
  body = env.getBody();
  if( body.hasFault() ) {
 // Fault発生
   fault = body.getFault();
   String faultActor = fault.getFaultActor();
   String faultCode = fault.getFaultCode();
   String faultString = fault.getFaultString();
   detail = fault.getDetail();
   Iterator it = detail.getDetailEntries();
   while( it.hasNext() ){
    entry = (DetailEntry)it.next();
     ......
   }
  }
  else{
 // 正常処理
    .....
  }

 SOAPFaultインタフェースはSOAPBodyの子要素を表すSOAPBodyElementインタフェースを継承しています。SOAPFault,SOAPFaultElement,Detail,DetailEntryの各インタフェースは、SOAPElementインタフェースを継承していますので、通常のSOAPメッセージの組み立てと同じようにFault情報を組み立てることができます。


下へ4.4.5.1 Fault情報の解析

目次 索引 前ページ次ページ

Copyright 2003 FUJITSU LIMITED