BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

B2B Integration メッセージング アプリケーション プログラミング ガイド

 前 次 目次 索引 PDF で表示  

XOCP ビジネス メッセージの受信

以下の節では、XOCP アプリケーションで XOCP ビジネス メッセージを受信する方法について説明します。

 


XOCP ビジネス メッセージを受信する方法

XOCP アプリケーションは、ビジネス メッセージを受信および処理するために MessageListner インタフェースの onMessage メソッドを実装する必要があります。onMessage メソッドのシグネチャは次のとおりです。

コード リスト 4-1 onMessage メソッドのシグネチャ

public void onMessage(XOCPMessage msg)

ビジネス メッセージが届くと常に、XOCP アプリケーションは onMessage メソッドを呼び出し、入力パラメータとしてビジネス メッセージを渡します。XOCP アプリケーションはビジネス メッセージを格納している XOCPMessage オブジェクトを取得してから、このインスタンス上でメッセージを処理するメソッドを呼び出します。

XOCP アプリケーションが会話の中で複数のビジネス ドキュメントを受信した場合、onMessage の実装ではまず受信したドキュメントの文書型が判別され(たとえば入札要求や入札報酬など)、それに応じてドキュメントが処理されます。

また、onMessage の実装は、ビジネス メッセージを作成および送信するコードも含む場合があります。たとえば、会話参加者の XOCP アプリケーションでは、onMessage で要求を受信したり、要求を処理したり、返信のドキュメントを作成および返信するように実装されます。

 


XOCP ビジネス メッセージの受信

リスト4-2 は、Messaging API サンプル アプリケーションである MdmTp2Servlet での onMessage メソッドの実装方法を示します。この onMessage の実装は、MsmTp1Servlet から送信された初期ビジネス ドキュメント(要求)を処理します。次にこの実装は、会話開始者への応答のドキュメントを作成および返信します。

次のリストは、Messaging API サンプル アプリケーションである MdmTp2Servlet での onMessage メソッドの実装です。

コード リスト 4-2 MdmTp2Servlet での onMessage の実装

public void onMessage(XOCPMessage rmsg) {
try{

QualityOfService qos = rmsg.getQoS();

PayloadPart[] payload = rmsg.getPayloadParts();
Document rq = null;

// シングル パート ドキュメントを使用
if (payload != null && payload.length > 0){
BusinessDocument bd = (BusinessDocument)payload[0];
rq = bd.getDocument();
}
if (rq == null){
throw new Exception("Did not get a request document");
}
Conversation conv = rmsg.getConversation();

Element root = rq.getDocumentElement();
String name = root.getNodeName();
Text revStr = (Text)root.getFirstChild();

// 応答のドキュメントを作成
DOMImplementationImpl domi = new DOMImplementationImpl();
DocumentType dType = domi.createDocumentType("reply", null, "reply.dtd");
rq = new DocumentImpl(dType);
root = rq.createElement("reply");
String sendStr = new String(revStr.getData());
sendStr="Partner2 -- " + sendStr;
root.appendChild(rq.createTextNode(sendStr.toLowerCase()));
rq.appendChild(root);

XOCPMessage smsg = new XOCPMessage("");
smsg.addPayloadPart(new BusinessDocument(rq));

smsg.setQoS(qos);

//TradingPartnerFilter filter = new TradingPartnerFilter("Partner1");
smsg.setExpression("//trading-partner[@name=¥'Partner1¥']");
smsg.setCAId(rmsg.getCAId());
smsg.setConversation(conv);

smsg.sendAndWait(0);

}catch(Exception e){
e.printStackTrace();
}
}

onMessage のコードは、以下の主要なタスクを実行します。

  1. XOCPMessage インスタンスの getQoS メソッドを呼び出して、ビジネス メッセージのサービス品質設定を取得します。

    アプリケーションは、元のメッセージで使用されたのと同じサービス品質設定で応答メッセージを送信します。

  2. XOCPMessage インスタンスの getPayloadParts メソッドを呼び出して、ビジネス メッセージのペイロード部分を取得します。

  3. PayloadPart[] 配列で最初の(そして唯一の)ビジネス ドキュメントを取得します。

  4. BusinessDocument インスタンスの getDocument メソッドを呼び出して、関連付けられた XML ドキュメントを抽出します。

  5. Document インスタンスの各メソッドを使用して、XML ドキュメントの各部を取得および分析します。XML ドキュメントは、World Wide Web Consortium(www.w3.org)によって公開されている org.w3c.dom パッケージにある org.w3c.dom.Document クラスのインスタンスです。

    また、XOCP アプリケーションはサードパーティによって実装された同様のパッケージも使用できます。たとえば、Apache XML Project (www.apache.org)で提供されている org.apache.xerces.dom パッケージなどです。このパッケージは、Messaging API のサンプル アプリケーションでビジネス ドキュメントの作成および処理に使用されています。

  6. ビジネス ドキュメントに埋め込まれているデータ文字列("ABCDEFGHI")を取得して、すべて小文字に変換します。

  7. 応答のドキュメントを作成してから、要求のドキュメントに指定されていたのと同じサービス品質設定を指定します。

  8. コラボレーション アグリーメント ID および会話を設定してから、ドキュメントを Partner 1 という名前のトレーディング パートナへ送信します。

 

ページの先頭 前 次