ページの先頭行へ戻る
Interstage Service Integrator V9.2.0 アプリケーション開発ガイド

D.7.3 ESIAPIReceiveTest.java(非同期受信処理)

共通APIを使用した非同期受信処理のサービス利用側アプリケーションのサンプルプログラムです。

        :
        :
public class ESIAPIReceiveTest {

        public static void main(String[] args) {
                // (1) エンドポイント名の指定
                String strEndpoint = "receivetest";
                if (args.length >= 1) {
                        strEndpoint = args[0];
                }
                try {
                        System.out.println("java.home=" + 
                                System.getProperty("java.home"));

                        // (2) Serviceクラスの生成
                        ESIService es = ESIServiceFactory.getService(strEndpoint);

                        // (3) 受信APIの呼出し
                        ESIMessage retMessage = es.receive();
                        
                        if (retMessage != null) {
                                // (4) ペイロードの取り出し
                                byte[] bytePayload = 
                                        retMessage.getPayload().getBytePayload().getObject();
                                String byteString = new String(bytePayload);
                                System.out.println("objectPayload=[" + byteString + "]");

                                // (5) ヘッダの取り出し
                                System.out.println("user.result=" + retMessage.getHeader().getParameter().get("result"));
                                        :
                                        :
                                }
                        } else {
                                // (6) 受信するメッセージがなかったときの処理
                                System.out.println("ESIMessage was not queuing.");
                        }

                } catch (ESIAPIException e) {
                        e.printStackTrace();
                }
        }
        :
        :
}
  1. エンドポイント名の設定
    エンドポイント名“receivetest”を設定します。
    エンドポイント定義で指定するエンドポイント名と一致させます。

エンドポイント定義:<INSDIR>\sample\App\def\endpoint.xml

<?xml version="1.0" encoding="UTF-8" ?>
<EndpointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="esi-endpoint.xsd">
        :
    <Endpoint name="receivetest" sync="false"> ………エンドポイント名
        <Description>Async Receive Endpoint</Description>
        <QueueName>ESIOutboundQueue</QueueName>
    </Endpoint>
</EndpointList>

  1. Serviceクラスの作成
    エンドポイント名をもとに、受信のServiceクラスを作成します。

  2. 受信APIの呼出し
    メッセージ送受信API“ESIService#receive()”を呼び出します。

  3. ペイロードの取出し
    共通メッセージの中から、ペイロードを取り出します。

  4. ヘッダの取出し
    共通メッセージの中から、ヘッダパラメタキー名と値を取り出します。
    サンプルプログラムは、共通メッセージのヘッダのすべてのパラメタキー名と値を取り出すように作成されています。

  5. 受信するメッセージがなかったときの処理
    JMSキューに受信するメッセージがなかったときの処理です。