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

D.8.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

    サービスエンドポイント定義/opt/FJSVesi/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>

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

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

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

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

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