Interstage Application Server SOAPサービス ユーザーズガイド |
目次
索引
![]() ![]() |
第5章 RPC方式のアプリケーションの実装 | > 5.6 Fault情報の設定と解析 |
RPCサーバアプリケーションのメソッドが例外を投げる(throwする)と、RPCクライアントアプリケーションに対してFault情報が送信されます。Fault情報は、発生した問題に関する情報をRPCクライアントアプリケーションに通知するものです。
RPCサーバアプリケーションで例外としてjavax.xml.rpc.soap.SOAPFaultExceptionをthrowすることで、送信されるFault情報の内容を設定できます。
RPCサーバアプリケーションのメソッドがjavax.xml.rpc.soap.SOAPFaultException以外のThrowableオブジェクトをthrowした場合、以下の情報が含まれたFault情報を送信します。
Faultコード |
"Server" |
Fault説明 |
"Throwable is thrown in server application(1220)" |
以下の情報がFault情報に設定できます。
情報種別 |
内容 |
---|---|
Faultコード |
エラーの分類です。以下の値が指定できます。
|
Fault説明 |
エラーの内容を説明する文字列です(任意)。 |
Faultアクタ |
エラーの発生した場所(サーバアプリケーションなど)を表すURIです。 |
Fault詳細 |
Webサービス固有に定義されるエラー情報項目を指定します。 |
Fault情報は、javax.xml.rpc.soap.SOAPFaultExceptionのコンストラクタのパラメタに指定します。
SOAPFaultException( javax.xml.namespace.QName Faultコード, String Fault説明, String Faultアクタ, javax.xml.soap.Detail Fault詳細 ) |
Fault 詳細項目は、javax.xml.soap.DetailEntryオブジェクトとして生成します。javax.xml.soap.DetailEntryオブジェクトはSAAJ-APIのjavax.xml.soap.SOAPElementを継承したインタフェースなのでjavax.xml.soap.SOAPElementオブジェクトに対する操作をそのまま行うことができます。SAAJ-APIについての詳細は“SAAJ-APIによるSOAPメッセージの処理”を参照してください。
以下にjavax.xml.rpc.soap.SOAPFaultExceptionをthrowするRPCサーバアプリケーションのメソッドのプログラム例を示します。このメソッドでは、inパラメタのStringの配列に特定の値が含まれていたときに、javax.xml.rpc.soap.SOAPFaultExceptionをthrowし、RPCクライアントアプリケーションにFault情報が送信されます。
javax.xml.rpc.soap.SOAPFaultExceptionをthrowするSOAPサーバアプリケーションのメソッドの例
・java.lang.Stringの配列(foods)に特定文字("carrot")が含まれていたときにjavax.xml.rpc.soap.SOAPFaultExceptionをthrowします。
public void eat(String[] foods) throws java.rmi.RemoteException // SOAPFaultExceptionはRemoteExceptionから派生 { for( int i=0; i<foods.length; i++ ){ if ( foods[i].equalsIgnoreCase("carrot") ){ try{ SOAPFactory sf= SOAPFactory.newInstance(); Detail detail= sf.createDetail(); Name name = se.createName("index","carrot","urn:sample-service-carrot"); DetailEntry idx= detail.addDetailEntry(name); idx.addTextNode(Integer.toString(i)); throw new SOAPFaultException ("Client", "I don't like carrots!", detail); }catch(SOAPException se) { se.printStackTrace(); } } } } |
RPCクライアントアプリケーションでのFault情報の処理方法は、“Fault情報の解析”を参照してください。
目次
索引
![]() ![]() |