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

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

4.3.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.3.5.1 Fault情報の解析

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

All Rights Reserved, Copyright(C) 富士通株式会社 2005