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

第5章 RPC方式のアプリケーションの実装> 5.6 Fault情報の設定と解析

5.6.2 Fault情報の解析

 RPCサーバアプリケーションのリモート呼び出し処理で異常が発生した場合、例外javax.xml.rpc.soap.SOAPFaultExceptionがthrowされます。javax.xml.rpc.soap.SOAPFaultExceptionに、リモート呼び出しの結果を表すFault情報が保持されます。

 Fault情報には以下の情報が含まれています。

情報種別

説明

Faultコード

異常の分類です。以下の文字列が設定されています。

  • "Server"
  • "Client"

それぞれの意味については下記の“Faultコードの分類”を参照してください。

Fault説明

異常の内容を説明する文字列が設定されています。

Faultアクタ

エラーの発生した場所(サーバアプリケーションなど)を表すURIです。

Fault詳細

Webサービス固有に定義される使用するエラー情報の項目が設定されています。

■Faultコードの取

 javax.xml.rpc.soap.SOAPFaultExceptionクラスの以下のメソッドを使用して取得します。

   javax.xml.namespace.QName getFaultCode() 

●Faultコードの分類

Faultコード

説明

Server

 Webサービス・コンテナやRPCサーバアプリケーションの処理過程で問題を検出したことを示します。
 例えば、Webサービス・コンテナの設定やWebサービス情報の登録内容に誤りがある場合などに返却されます。

Client

 Webサービスが、送信したメッセージ内容に誤りを検出したことを示すコードです。
 このFaultコードがRPCクライアントアプリケーションに返された場合は、Webサービスに送信したデータを見直してください。

その他のFaultコード値

 以下のような場合に上記以外のFaultコードが返されることがあります。

  • Webサービスが独自にFaultコードを設定している場合

■Fault説明の取得

 javax.xml.rpc.soap.SOAPFaultExceptionクラスの以下のメソッドで取得します。

   java.lang.String  getFaultString()

■Faultアクタの取得

 javax.xml.rpc.soap.SOAPFaultExceptionの以下のメソッドを使用して取り出します。

   java.lang.String  getFaultActor()

■Fault詳細の取得

 Fault詳細は、任意の数のFault詳細項目で構成されたWebサービス固有の情報項目です。
 Fault詳細はjavax.xml.rpc.soap.SOAPFaultExceptionの以下のメソッドで取得します。

   javax.xml.soap.Detail  getDetail()

 Fault詳細に含まれる個々の詳細項目はjavax.xml.soap.DetailEntryオブジェクトとして表され、Detailオブジェクトの以下のメソッドを使用して取り出します。

   java.util.Iterator  getDetailEntries()

 それぞれのFault詳細項目は、java.util.Iteratorオブジェクトにjavax.xml.soap.DetailEntryオブジェクトとして保持されています。Fault詳細項目の取り出し方は以下のようなプログラムコードになります。

 import javax.xml.soap.*;
 try{
     .....
 }catch(SOAPFaultException  fault){
   javax.xml.namespace.QName faultCode = fault.getFaultCode();
   String faultString = fault.getFaultString();
   // Fault詳細の取得
   Detail detail = fault.getDetail();
   // Fault詳細項目の取得
   Iterator it = detail.getDetailEntries();
   while(it.hasNext()){
     DetailEntry entry = (DetailEntry)it.next();
       .....
   }
 }

 javax.xml.soap.DetailEntryオブジェクトはjavax.xml.soap.SOAPElementを継承するオブジェクトです。よってFault詳細に含まれる個々の詳細項目は純粋なSOAPElementオブジェクトとして操作できます。


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

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