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

第4章 Messaging方式のアプリケーションの実装> 4.2 受信アプリケーションの作成

4.2.2 返信を行う受信アプリケーション(RequestResponse方式)

 以下、サンプルプログラムSampleMsgSV2ReqResp.javaの例を用いて処理を説明します。

 import javax.xml.soap.*;
 import javax.xml.messaging.*;

 public class SampleMsgSV2ReqResp implements ReqRespListener //**(1)**
 {
  public SampleMsgSV2ReqResp () { }

  public SOAPMessage onMessage( SOAPMessage message ) //**(2)**
  {
 //**(3)**
   try{
    message.writeTo(System.out);

 //**(4)**
    MessageFactory mf = MessageFactory.newInstance();
    SOAPMessage resp = mf.createMessage();
    SOAPEnvelope env = resp.getSOAPPart().getEnvelope();
    SOAPBody body = env.getBody();
    SOAPBodyElement elm = body.addBodyElement(
              env.createName( "ResponseMessage", "m",
              "urn:SampleMsg" ));
    elm.addChildElement( env.createName("Response")).
              addTextNode("response string...");
    elm.addNamespaceDeclaration( "m", "urn:SampleMsg");
    resp.saveChanges();

 //**(5)**
    return resp;
   } catch( Exception e ) {
    e.printStackTrace();
    return null;
   }
  }
 }

■ReqRespListenerの実装

 SOAPメッセージを受信して処理を行い、送信元に何らかのSOAPメッセージを返信する受信アプリケーションは、javax.xml.messaging.ReqRespListenerインタフェースを実装して、public SOAPMessage onMessageメソッドを実装します。−(1),(2)

■受信したSOAPメッセージの処理

 メソッドのパラメタとして、受け取ったSOAPメッセージを表すSOAPMessageオブジェクトが渡されます。−(2)
 SAAJ-APIを使用して、SOAPMessageオブジェクトを解析して必要な処理を行います。SOAPMessageオブジェクトの解析については、“SAAJ-APIによるSOAPメッセージの処理”を参照してください。この例では、受信したSOAPメッセージを標準出力に出力しています。−(3)

■返信するSOAPメッセージの作成と返信

 送信元に返信するSOAPメッセージをSOAPMessageオブジェクトとして、SAAJ-APIを使用して作成します。
 SOAPエンベロープを表すSOAPEnvelopeオブジェクトを作成するには、createNameメソッドやaddBodyElementメソッドなどのAPIを使用してアプリケーションロジックで組み立てる方法と、DOMやSAXなどのXMLデータ、既存のファイルから読み込んだXMLデータをSOAPエンベロープの内容として取り込む方法があります。詳細については“SAAJ-APIによるSOAPメッセージの処理”を参照してください。

 この例では、アプリケーションロジックで組み立てる方法を使用して、以下のSOAPメッセージを作成しています(ただし、わかりやすくするために要素の間に改行と空白を追加して表示しています。プログラム例で実際に作られるSOAPメッセージにはこれらの改行や空白は含まれません。実際に表示どおりのSOAPメッセージを作るには、明示的に改行と空白のTextノードを追加する必要があります)。−(4)

 <soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/
          xmlns:xsd=http://www.w3.org/2001/XMLSchema
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
   <m:ResponseBody xmlns:m="urn:SampleMsg">
    <Response>response string...</Response>
   </m:ResponseBody>
  </soapenv:Body>
 </soapenv:Envelope>

 作成したSOAPMessageオブジェクトをメソッドの返り値として返信します。−(5)


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

Copyright 2003 FUJITSU LIMITED