BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
|
e-docs > WebLogic Integration > B2B トピック > B2B Integration メッセージング アプリケーション プログラミング ガイド > XOCP ビジネス メッセージの受信 |
B2B Integration メッセージング アプリケーション プログラミング ガイド |
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 のコードは、以下の主要なタスクを実行します。