例をもとに、JMSを利用したアプリケーションの開発手順を説明します。
アプリケーションの開発は、以下の手順で行います。
図D.9 開発の手順
サービスエンドポイント名:endpointJMSIN、endpointJMSOUT
サービスエンドポイント定義を作成します。
メッセージ送受信APIを利用するためのサービスエンドポイント定義にサービスエンドポイント名“endpointJMSIN”と“endpointJMSOUT”を定義します。
作成方法については、“ISI Studio ヘルプ”を参照してください。
手順1で作成したサービスエンドポイント名をパラメタに設定し、通信制御クラス(ESIService)を生成します。
共通メッセージ(ESIMessage)を作成します。
共通メッセージの作成方法については、“D.5 共通メッセージの作成・操作”を参照してください。
ISIを呼び出し、共通メッセージを送信、または受信します。
import com.fujitsu.esi.client.ESIAPIException;
import com.fujitsu.esi.client.ESIService;
import com.fujitsu.esi.client.ESIServiceFactory;
import com.fujitsu.esi.message.ESIHeaderConstants;
import com.fujitsu.esi.message.ESIMessage;
import com.fujitsu.esi.message.ESIParameter;
public class ESISend {
public static void main(String[] args) {
try {
//(2)通信制御クラス(ESIService)を生成
ESIService service = ESIServiceFactory.getService("endpointJMSIN");
//(3)ESIMessageを作成
ESIMessage message = new ESIMessage();
//JMS用パラメタの設定
ESIParameter parameter = message.getHeader().getParameter();
//JMSCorrelationIDの設定
parameter.put(ESIHeaderConstants.ESI_HEADER_KEY_JMS_HEADER_JMS_CORRELATION_ID, "ID_0123456789");
//JMS Stringプロパティ “category”の設定
parameter.put(ESIHeaderConstants.ESI_HEADER_KEYPREFIX_JMS_STRING + "category", "A01");
:
//(4)ISIを呼び出す(共通メッセージの送信)
ESIMessage returnMessage = service.send(message); ……(a)
:
} catch (ESIAPIException e) {
e.printStackTrace();
}
}
} |
import com.fujitsu.esi.client.ESIAPIException;
import com.fujitsu.esi.client.ESIClientUtil;
import com.fujitsu.esi.client.ESIFilter;
import com.fujitsu.esi.client.ESIService;
import com.fujitsu.esi.client.ESIServiceFactory;
import com.fujitsu.esi.message.ESIMessage;
public class ESIReceive {
public static void main(String[] args) {
try {
//(2)通信制御クラス(ESIService)を生成
ESIService service = ESIServiceFactory.getService("endpointJMSOUT");
//フィルタの設定
ESIFilter filter =
ESIClientUtil.createJMSReceiveEqualFilter("JMSCorrelationID", "ID_0123456789"); ……(b)
:
//(4)ISIを呼び出す(共通メッセージの受信)
ESIMessage returnMessage = service.receive(filter); ……(a)
:
} catch (ESIAPIException e) {
e.printStackTrace();
}
}
}
|
メッセージ送受信APIの送信API、受信APIとして提供しているメソッドは、以下のとおりです。
非同期送信呼出し:send(ESIMessage)
非同期受信呼出し(フィルタ付き):receive(ESIFilter)
非同期受信呼出し(フィルタなし):receive()
送信で指定したJMS Stringプロパティ“category”で検索する場合は、以下のようになります。
ESIFilter filter = ESIClientUtil.createJMSReceiveEqualFilter("category", "A01"); |
ESIFilterにクエリを設定しない場合は、キューの先頭に格納されている共通メッセージを受信します。