ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1 (11.1.1.4.0)
B56238-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

60 ユーザー・メッセージング・サービスEJB APIを使用したメッセージの送受信

この章では、ユーザー・メッセージング・サービス(UMS) EJB APIを使用したアプリケーションの開発方法、およびusermessagingsample-ejb.earusermessagingsample-echo-ejb.earの2つのサンプル・アプリケーションの作成方法について説明します。


注意:

この章で説明するユーザー・メッセージング・サービスEJB APIは非推奨です。かわりに、第61章「ユーザー・メッセージング・サービスJava APIを使用したメッセージの送受信」で説明するユーザー・メッセージング・サービスJava APIを使用してください。

項目は次のとおりです。


注意:

Oracle User Messaging Serviceのコード・サンプルに関する詳細を参照したり、サンプルを自分で実行するには、URL: https://soasamples.samplecode.oracle.com/にあるOracle Technology Networkのコード・サンプル・ページを参照してください。

このページにナビゲートした後は、検索条件の「UMS」を入力して「検索」をクリックすることで、Oracle User Messaging Serviceのコード・サンプルを検出できます。


60.1 UMS Java APIの概要

UMS Java APIは、Enterprise JavaBeansクライアント用アプリケーションの開発をサポートします。これは、次のようにグループ化されたパッケージで構成されています。

60.1.1 Java EEアプリケーション・モジュールの作成

UMS Enterprise JavaBeansクライアントAPIを使用するJava EEアプリケーション・モジュールについては、次の2つの選択肢があります。

  • Enterprise JavaBeansアプリケーション・モジュール - ステートレス・セッションBean: メッセージ送受信の中核となるバック・エンドのアプリケーションです。

  • Webアプリケーション・モジュール: HTMLまたはWebフロント・エンドを使用するアプリケーション用です。

どちらのアプリケーション・モジュールを選択した場合でも、UMSクライアントAPIを使用してアプリケーションをUMSサーバーに登録し、次に、メッセージの送信または受信、ステータスの取得、およびアクセス・ポイントの登録または登録解除を行う操作を起動します。操作の完全なリストは、UMS Javadocを参照してください。

ソース・コードを含むサンプルは、Oracle Technology Network(OTN)から入手できます。

60.2 UMSクライアント・インスタンスの作成

この項では、UMS Enterprise JavaBeansクライアントを作成するための要件を説明します。MessagingEJBClientインスタンスは、MessagingClientFactoryクラスのコードを使用して作成できます。

UMS Enterprise JavaBeansクライアントを使用して作成したアプリケーションは、EARファイルとしてパッケージ化され、usermessagingclient-ejb.jarモジュールがEnterprise JavaBeansモジュールとしてバンドルされている必要があります。

60.2.1 プログラミングまたは宣言的な方法によるMessagingEJBClientインスタンスの作成

例60-1に、プログラミングによってMessagingEJBClientインスタンスを作成する場合のコードを示します。

例60-1 プログラミングによるMessagingEJBClientインスタンスの作成

ApplicationInfo appInfo = new ApplicationInfo();
appInfo.setApplicationName("SampleApp");
appInfo.setApplicationInstanceName("SampleAppInstance");
MessagingClient mClient =
 MessagingClientFactory.createMessagingEJBClient(appInfo);

MessagingEJBClientインスタンスは、宣言的な方法でも作成できます。宣言的な方法を使用するとデプロイメント時に変更が可能になるため、通常はこの方法をお薦めします。

Java EEモジュールのディスクリプタ(ejb-jar.xmlまたはweb.xml)には、必要なすべてのアプリケーション情報プロパティを環境エントリとして指定する必要があります。

例60-2に、宣言的な方法でMessagingEJBClientインスタンスを作成する場合のコードを示します。

例60-2 宣言的な方法によるMessagingEJBClientインスタンスの作成

MessagingClient mClient = MessagingClientFactory.createMessagingEJBClient();

60.2.2 MessagingClientFactoryクラスのAPIリファレンス

MessagingClientFactoryクラスのAPIリファレンスには、Javadocからアクセスできます。

60.3 メッセージの送信

メッセージは、MessageFactoryクラスのコードおよびoracle.sdp.messagingMessageインタフェースを使用して作成できます。

作成できるメッセージのタイプには、プレーン・テキスト・メッセージ、text/plainパートとtext/htmlパートで構成できるマルチパート・メッセージ、および異なる配信タイプを使用して、複数受信者用の単一メッセージに配信チャネル(DeliveryType)固有のペイロードを作成するメッセージがあります。

60.3.1 メッセージの作成

この項では、作成できる様々なタイプのメッセージについて説明します。

60.3.1.1 プレーン・テキスト・メッセージの作成

例60-3に、UMS Java APIを使用してプレーン・テキスト・メッセージを作成する方法を示します。

例60-3 UMS Java APIを使用したプレーン・テキスト・メッセージの作成

Message message = MessageFactory.getInstance().createTextMessage("This is a Plain Text message.");
Message message = MessageFactory.getInstance().createMessage();
message.setContent("This is a Plain Text message.", "text/plain");

60.3.1.2 Text/PlainパートとText/HTMLパートを持つマルチパート/代替メッセージの作成

例60-4に、UMS Java APIを使用してマルチパート・メッセージまたは代替メッセージを作成する方法を示します。

例60-4 UMS Java APIを使用したマルチパート・メッセージまたは代替メッセージの作成

Message message = MessageFactory.getInstance().createMessage();
MimeMultipart mp = new MimeMultipart("alternative");
MimeBodyPart mp_partPlain = new MimeBodyPart();
mp_partPlain.setContent("This is a Plain Text part.", "text/plain");
mp.addBodyPart(mp_partPlain);
MimeBodyPart mp_partRich = new MimeBodyPart();
mp_partRich
        .setContent(
                "<html><head></head><body><b><i>This is an HTML part.</i></b></body></html>",
                "text/html");
mp.addBodyPart(mp_partRich);
message.setContent(mp, "multipart/alternative");

60.3.1.3 異なる配信タイプを使用した、複数受信者用の単一メッセージへの配信チャネル固有のペイロード作成

メッセージを宛先アドレスに送信する際は、複数のチャネルが関連する場合があります。Oracle UMSアプリケーション開発者は、各チャネルに対して正しいマルチパート書式を指定する必要があります。

例60-5に、異なる配信タイプを使用して、複数受信者用の単一メッセージに、配信チャネル(DeliveryType)固有のペイロードを作成する方法を示します。

複数ペイロードのマルチパート/代替メッセージの各最上位パートには、このヘッダーの値が1つ以上含まれている必要があります。このヘッダーの値は、有効な配信タイプの名前である必要があります。DeliveryTypeの使用可能な値は、列挙DeliveryTypeを参照してください。

例60-5 異なる配信タイプを使用した、複数受信者用の単一メッセージへの配信チャネル固有のペイロード作成

Message message = MessageFactory.getInstance().createMessage();
 
// create a top-level multipart/alternative MimeMultipart object.
MimeMultipart mp = new MimeMultipart("alternative");
 
// create first part for SMS payload content.
MimeBodyPart part1 = new MimeBodyPart();
part1.setContent("Text content for SMS.", "text/plain");
 
part1.setHeader(Message.HEADER_NS_PAYLOAD_PART_DELIVERY_TYPE, "SMS");
 
// add first part
mp.addBodyPart(part1);
 
// create second part for EMAIL and IM payload content.
MimeBodyPart part2 = new MimeBodyPart();
MimeMultipart part2_mp = new MimeMultipart("alternative");
MimeBodyPart part2_mp_partPlain = new MimeBodyPart();
part2_mp_partPlain.setContent("Text content for EMAIL/IM.", "text/plain");
part2_mp.addBodyPart(part2_mp_partPlain);
MimeBodyPart part2_mp_partRich = new MimeBodyPart();
part2_mp_partRich.setContent("<html><head></head><body><b><i>" + "HTML content for EMAIL/IM." +
"</i></b></body></html>", "text/html");
part2_mp.addBodyPart(part2_mp_partRich);
part2.setContent(part2_mp, "multipart/alternative");
 
part2.addHeader(Message.HEADER_NS_PAYLOAD_PART_DELIVERY_TYPE, "EMAIL");
part2.addHeader(Message.HEADER_NS_PAYLOAD_PART_DELIVERY_TYPE, "IM");
 
// add second part
mp.addBodyPart(part2);
 
// set the content of the message
message.setContent(mp, "multipart/alternative");
 
// set the MultiplePayload flag to true
message.setMultiplePayload(true);

60.3.2 MessageFactoryクラスのAPIリファレンス

MessageFactoryクラスのAPIリファレンスには、Javadocからアクセスできます。

60.3.3 MessageインタフェースのAPIリファレンス

MessageインタフェースのAPIリファレンスには、Javadocからアクセスできます。

60.3.4 列挙DeliveryTypeのAPIリファレンス

列挙DeliveryTypeのAPIリファレンスには、Javadocからアクセスできます。

60.3.5 メッセージのアドレス指定

この項では、アドレスのタイプおよびAddressオブジェクトの作成方法について説明します。

60.3.5.1 アドレスのタイプ

アドレスには、デバイス・アドレスユーザー・アドレスの2種類があります。デバイス・アドレスには、電子メール・アドレス、インスタント・メッセージ・アドレス、電話番号など、様々なタイプがあります。ユーザー・アドレスは、ユーザー・リポジトリにあるユーザーIDです。

60.3.5.2 Addressオブジェクトの作成

Addressインタフェースで定義するAddressオブジェクトは、AddressFactoryクラスを使用してメッセージの送信者と受信者のアドレスを指定することで作成できます。

60.3.5.2.1 単一のAddressオブジェクトの作成

例60-6に、単一のAddressオブジェクトを作成するコードを示します。

例60-6 単一のAddressオブジェクトの作成

Address recipient = AddressFactory.getInstance().createAddress("Email:john.doe@oracle.com");
60.3.5.2.2 1つのバッチ内での複数のAddressオブジェクトの作成

例60-7に、1つのバッチ内に複数のAddressオブジェクトを作成するコードを示します。

例60-7 1つのバッチ内での複数のAddressオブジェクトの作成

String[] recipientsStr = {"Email:john.doe@oracle.com", "IM:jabber|john.doe@oracle.com"};
Address[] recipients = AddressFactory.getInstance().createAddress(recipientsStr);
60.3.5.2.3 メッセージへの送信者または受信者のアドレスの追加

例60-8に、送信者または受信者のアドレスをメッセージに追加するコードを示します。

例60-8 メッセージへの送信者または受信者のアドレスの追加

Address sender = AddressFactory.getInstance().createAddress("Email:john.doe@oracle.com");
Address recipient = AddressFactory.getInstance().createAddress("Email:jane.doe@oracle.com");
message.addSender(sender);
message.addRecipient(recipient);

60.3.5.3 フェイルオーバー・アドレスを使用した受信者の作成

例60-9に、フェイルオーバー・アドレスを使用して受信者を作成するコードを示します。

例60-9 フェイルオーバーを使用した単一のAddressオブジェクトの作成

String recipientWithFailoverStr = "Email:john.doe@oracle.com, IM:jabber|john.doe@oracle.com";
Address recipient = AddressFactory.getInstance().createAddress(recipientWithFailoverStr);

60.3.5.4 AddressFactoryクラスのAPIリファレンス

AddressFactoryクラスのAPIリファレンスには、Javadocからアクセスできます。

60.3.5.5 AddressインタフェースのAPIリファレンス

AddressインタフェースのAPIリファレンスには、Javadocからアクセスできます。

60.3.6 メッセージ・ステータスの取得

Oracle UMSを使用すると、メッセージ・ステータスを同期または非同期で取得できます。

60.3.6.1 メッセージ・ステータスの同期取得

現行ステータスの同期取得を実行するには、MessagingClient APIから次のフローを使用します。

String messageId = messagingClient.send(message);
Status[] statuses = messagingClient.getStatus(messageId);

または、

Status[] statuses = messagingClient.getStatus(messageId, address[]) --- where
 address[] is an array of one or more of the recipients set in the message.

60.3.6.2 メッセージ・ステータスの非同期通知

メッセージ・ステータスの非同期通知を取得する手順は、次のとおりです。

  1. ステータス・リスナーを実装します。

  2. ステータス・リスナーを宣言的な方法で登録します。

  3. メッセージ(messagingClient.send(message);)を送信します。

  4. アプリケーションでは、ステータス・リスナーのonStatus(status)コールバックを介してステータスを自動的に取得します。

60.4 メッセージの受信

この項では、アプリケーションでメッセージを受信する方法について説明します。メッセージを受信するには、最初にアクセス・ポイントを登録する必要があります。アプリケーション側から見ると、メッセージを受信するモードには同期と非同期があります。

60.4.1 アクセス・ポイントの登録

AccessPointは、着信メッセージを受信するための1つ以上のデバイス・アドレスを表します。着信メッセージを受信するアプリケーションでは、メッセージの受信者アドレスを表すアクセス・ポイントを1つ以上登録する必要があります。サーバーでは、着信メッセージの受信者アドレスと一連の登録済アクセス・ポイントを照合し、一致したアクセス・ポイントを登録したアプリケーションに、その着信メッセージをルーティングします。

AccessPointFactory.createAccessPointを使用してアクセス・ポイントを作成し、そのアクセス・ポイントをMessagingClient.registerAccessPointを使用してメッセージ受信用に登録できます。

番号9000のSMSアクセス・ポイントを登録するには、次のように指定します。

AccessPoint accessPointSingleAddress =
 AccessPointFactory.createAccessPoint(AccessPoint.AccessPointType.SINGLE_ADDRESS,
 DeliveryType.SMS, "9000");
messagingClient.registerAccessPoint(accessPointSingleAddress);

番号が9000から9999の範囲内のSMSアクセス・ポイントを登録するには、次のように指定します。

AccessPoint accessPointRangeAddress =
 AccessPointFactory.createAccessPoint(AccessPoint.AccessPointType.NUMBER_RANGE,
 DeliveryType.SMS,"9000,9999");
messagingClient.registerAccessPoint(accessPointRangeAddress);

60.4.2 同期受信

メッセージの同期受信には、メソッドMessagingClient.receiveを使用できます。このメソッドは、メッセージの非同期受信による構成オーバーヘッドを望まない軽量なクライアント向けの便利なポーリング・メソッドです。このメソッドは、アプリケーションのインバウンド・キューですぐに使用できるメッセージのリストを戻します。このメソッドは非ブロック・コールを実行するため、現在使用できるメッセージがない場合はNULLを戻します。


注意:

1回の起動で、使用可能なメッセージがすべて取得される保証はありません。ポーリングして、使用可能なすべてのメッセージを受信したことを確認する必要があります。

60.4.3 非同期受信

非同期受信には、MDBの構成、ステートレス・セッションBeanメッセージ・リスナーの記述など、多数のタスクが関連しています。詳細な手順については、サンプル・アプリケーションusermessagingsample-echoを参照してください。

60.4.4 メッセージ・フィルタ

アプリケーションでMessageFilterを使用すると、配信されるメッセージをより強力に制御できます。MessageFilterには、一致基準とアクションが含まれています。アプリケーションでは、一連のメッセージ・フィルタを登録できます。登録されたメッセージ・フィルタは、着信(受信)メッセージに順に適用され、メッセージが基準と一致するとアクションが実行されます。たとえば、アプリケーションでMessageFiltersを使用して必要なブラックリストを実装すると、指定した送信者アドレスからのすべてのメッセージを拒否できます。

MessageFilterFactory.createMessageFilterを使用してメッセージ・フィルタを作成し、そのメッセージ・フィルタをMessagingClient.registerMessageFilterを使用して登録できます。フィルタは、アプリケーションの現行フィルタ・チェーンの最後に追加されます。受信したメッセージは、フィルタ・チェーンを順に通過します。メッセージがフィルタの基準に一致すると、そのフィルタのアクションが即時に実行されます。メッセージがフィルタに一致しない場合のデフォルト・アクションでは、そのメッセージが受信されてアプリケーションに配信されます。たとえば、件名が"spam"のメッセージを拒否するには、次のように指定します。

MessageFilter subjectFilter = MessageFilterFactory.createMessageFilter("spam",
 MessageFilter.FieldType.SUBJECT, null, MessageFilter.Action.REJECT);
messagingClient.registerMessageFilter(subjectFilter);

電子メール・アドレスspammer@foo.comからのメッセージを拒否するには、次のように指定します。

MessageFilter senderFilter =
 MessageFilterFactory.createBlacklistFilter("spammer@foo.com");
messagingClient.registerMessageFilter(senderFilter);

60.5 UMS Enterprise JavaBeansクライアントAPIを使用したクライアント・アプリケーションの作成

この項では、usermessagingsampleというアプリケーションの作成方法について説明します。このアプリケーションは、アウトバウンド・メッセージングおよびメッセージ・ステータスの同期取得の両方に対してUMS Enterprise JavaBeansクライアントAPIを使用するWebクライアント・アプリケーションです。usermessagingsampleはインバウンド・メッセージングもサポートしています。デプロイして構成したusermessagingsampleを使用すると、電子メール・クライアントにメッセージを送信できます。


注意:

Oracle User Messaging Serviceのコード・サンプルに関する詳細を参照したり、サンプルを自分で実行するには、URL: https://soasamples.samplecode.oracle.com/にあるOracle Technology Networkのコード・サンプル・ページを参照してください。

このページにナビゲートした後は、検索条件の「UMS」を入力して「検索」をクリックすることで、Oracle User Messaging Serviceのコード・サンプルを検出できます。


第60.1.1項「Java EEアプリケーション・モジュールの作成」で説明した2つのアプリケーション・モジュール選択肢の内、このサンプルはWebアプリケーション・モジュール(WAR)に重点を置き、いくつかのHTMLフォームとサーブレットを定義します。Webアプリケーション・モジュールのコードと対応するXMLファイルは、提供されているusermessagingsample-src.zipソースから使用できます。サーブレットでは、UMS Enterprise JavaBeansクライアントAPIを使用して、UMS Enterprise JavaBeansクライアント・インスタンスを作成し(次に、アプリケーションの情報を登録します)、メッセージを送信します。

このアプリケーションはusermessagingsample-ejb.earというEnterprise Archive(EAR)ファイルとしてパッケージ化されており、その構造は次のとおりです。

ビルトインのサンプル・アプリケーションおよびソース・コード(usermessagingsample-src.zip)は、OTNで入手できます。

60.5.1 開発の概要

次の各項では、usermessagingsample-ejb.earを例にして、アウトバウンド・メッセージング機能を持つアプリケーションの作成プロセスを説明します。

  1. 第60.5.2項「電子メール・ドライバの構成」

  2. 第60.5.3項「JDeveloper 11gを使用したアプリケーションの作成」

  3. 第60.5.4項「アプリケーションのデプロイ」

  4. 第60.5.5項「アプリケーションのテスト」

60.5.2 電子メール・ドライバの構成

Oracle User Messaging Serviceの電子メール・ドライバを有効にしてアウトバウンド・メッセージングおよびステータスの取得を実行するには、電子メール・ドライバを次のように構成します。

  • OutgoingMailServerプロパティの値として、SMTPメール・サーバーの名前を入力します。


注意:

このサンプル・アプリケーションは汎用的であるため、適切なメッセージング・ドライバがデプロイされて構成されている場合は、他のチャネル経由のアウトバウンド・メッセージングもサポートできます。

60.5.3 JDeveloper 11gを使用したアプリケーションの作成

この項では、Windowsベース・ビルドのJDeveloperを使用して、usermessagingsampleを作成、コンパイルおよびデプロイする手順を説明します。

60.5.3.1 プロジェクトを開く

  1. usermessagingsample-src.zipJDEV_HOME/communications/samples/ディレクトリに解凍します。共有ライブラリ参照をプロジェクトで有効にするには、このディレクトリを使用する必要があります。


    注意:

    別のディレクトリを使用する場合は、oracle.sdp.messagingライブラリ・ソース・パスをJDEV_HOME/communications/modules/oracle.sdp.messaging_11.1.1/sdpmessaging.jarに更新する必要があります。

  2. Oracle JDeveloperで、usermessagingsample.jws(.zipファイルに含まれています)を開きます。

    図60-1 Oracle JDeveloperのメイン・ウィンドウ

    図60-1の説明が続きます
    「図60-1 Oracle JDeveloperのメイン・ウィンドウ」の説明

    Oracle JDeveloperのメイン・ウィンドウにプロジェクトが表示されます。

  3. Webモジュールで「Oracle UMS Client」ライブラリが使用されていることを確認して、サンプル・アプリケーションのビルド依存性を満たします。

    1. 「アプリケーション・ナビゲータ」で、Webモジュール「usermessagingsample-web」を右クリックし、「プロジェクト・プロパティ」を選択します。

    2. 左側のペインで、「ライブラリとクラスパス」を選択します。

      図60-2 ライブラリの確認

      図60-2の説明が続きます
      「図60-2 ライブラリの確認」の説明

    3. 「OK」をクリックします。

  4. usermessagingclient-ejbプロジェクトがアプリケーションに存在していることを確認します。これは、UMSアプリケーションで使用するメッセージング・クライアントBeanをパッケージ化したEnterprise JavaBeansモジュールです。このモジュールによって、アプリケーションはUMSサーバーに接続できます。

  5. usermessagingsample-webプロジェクトの下にあるJavaファイルを検索し、メッセージング・クライアントAPIを使用してメッセージの送信、ステータスの取得およびメッセージの同期受信を実行する方法を確認します。UMSサーバーに登録されるアプリケーション情報は、プロジェクトのSampleUtils.javaにプログラムによって指定されます(例60-10)。

    例60-10 アプリケーション情報

          ApplicationInfo appInfo = new ApplicationInfo();
          appInfo.setApplicationName(SampleConstants.APP_NAME);
          appInfo.setApplicationInstanceName(SampleConstants.APP_INSTANCE_NAME);
          appInfo.setSecurityPrincipal(request.getUserPrincipal().getName());
    

60.5.4 アプリケーションのデプロイ

アプリケーションをデプロイする手順は、次のとおりです。

  1. ナビゲーション・ペインでアプリケーションを右クリックし、「新規」を選択して、アプリケーション・サーバー接続を作成します。第60.7項「新規アプリケーション・サーバー接続の作成」の説明に従います。

  2. アプリケーションをデプロイするには、「usermessagingsample application」「デプロイ」「usermessagingsample」「デプロイ先」「SOA_server」の順に選択します(図60-3)。

    図60-3 プロジェクトのデプロイ

    図60-3の説明が続きます
    「図60-3 プロジェクトのデプロイ」の説明

  3. メッセージBuild Successfulがログに表示されていることを確認します。

  4. メッセージDeployment Finishedがデプロイメント・ログに表示されていることを確認します。

    アプリケーションが正常にデプロイされました。

    サンプルを実行するには、その前に、Oracle User Messaging Serviceの追加ドライバを構成し、必要に応じて、ユーザー・メッセージング・プリファレンスでメッセージを受信するユーザー用のデフォルト・デバイスを構成する必要があります。


    注意:

    詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。

60.5.5 アプリケーションのテスト

Oracle WebLogic Serverの実行中のインスタンスにusermessagingsampleをデプロイした後は、次の手順を実行します。

  1. Webブラウザを起動し、サンプル・アプリケーションのアドレスをhttp://host:http-port/usermessagingsample/と入力します。たとえば、ブラウザのナビゲーション・バーにhttp://localhost:7001/usermessagingsample/と入力します。

    プロンプトが表示された場合は、ログイン資格証明を入力します。たとえば、ユーザー名はweblogicと入力します。メッセージ・サンプルをテストするためのブラウザ・ページが表示されます(図60-4)。

    図60-4 サンプル・アプリケーションのテスト

    図60-4の説明が続きます
    「図60-4 サンプル・アプリケーションのテスト」の説明

  2. サンプル・メッセージの送信をクリックします。メッセージの送信ページが表示されます(図60-5)。

    図60-5 テスト・メッセージのアドレス指定

    図60-5の説明が続きます
    「図60-5 テスト・メッセージのアドレス指定」の説明

  3. (オプション)送信者アドレスを次の書式で入力します。

    Email:sender_address

    たとえば、Email:sender@oracle.comと入力します。

  4. 受信者アドレスを1つ以上入力します。たとえば、Email:recipient@oracle.comと入力します。複数のアドレスを入力する場合は、次のようにカンマ区切りリストで入力します。

    Email:recipient_address1, Email:recipient_address2

    ユーザー・メッセージング・プリファレンスを構成している場合、メッセージのアドレスは単にUser:usernameと指定できます。たとえば、User:weblogicと入力します。

  5. (オプション)件名、つまり電子メールの内容を入力します。

  6. 送信をクリックします。メッセージ・ステータス・ページが表示され、トランザクションの進捗が表示されます(図60-6には、メッセージング・エンジンが受信して処理するメッセージが表示されています)。

    図60-6 メッセージ・ステータス

    図60-6の説明が続きます
    「図60-6 メッセージ・ステータス」の説明

  7. リフレッシュをクリックしてステータスを更新します。電子メール・メッセージが電子メール・サーバーに配信されると、ステータスの内容フィールドに「リモート・ゲートウェイへのアウトバウンド・メッセージの配信に成功しました。」と表示されます。

60.6 UMS Enterprise JavaBeansクライアントAPIを使用したクライアント・エコー・アプリケーションの作成

この項では、usermessagingsample-echoというアプリケーションの作成方法について説明します。このアプリケーションは、UMS Enterprise JavaBeansクライアントAPIを使用して、電子メール・アドレスからメッセージを非同期で受信し、リプライを送信者にエコーして戻すデモ・クライアント・アプリケーションです。


注意:

Oracle User Messaging Serviceのコード・サンプルに関する詳細を参照したり、サンプルを自分で実行するには、URL: https://soasamples.samplecode.oracle.com/にあるOracle Technology Networkのコード・サンプル・ページを参照してください。

このページにナビゲートした後は、検索条件の「UMS」を入力して「検索」をクリックすることで、Oracle User Messaging Serviceのコード・サンプルを検出できます。


このアプリケーションはusermessagingsample-echo-ejb.earというEnterprise Archive(EAR)ファイルとしてパッケージ化されており、その構造は次のとおりです。

ビルトインのサンプル・アプリケーションおよびソース・コード(usermessagingsample-echo-src.zip)は、OTNで入手できます。

60.6.1 開発の概要

次の各項では、usermessagingsample-echo-ejb.earを例にして、非同期のインバウンドおよびアウトバウンド・メッセージング機能を持つアプリケーションの作成プロセスを説明します。

  1. 第60.6.2項「電子メール・ドライバの構成」

  2. 第60.6.3項「JDeveloper 11gを使用したアプリケーションの作成」

  3. 第60.6.4項「アプリケーションのデプロイ」

  4. 第60.6.5項「アプリケーションのテスト」

60.6.2 電子メール・ドライバの構成

Oracle User Messaging Serviceの電子メール・ドライバを有効にしてインバウンドやアウトバウンド・メッセージングおよびステータスの取得を実行するには、電子メール・ドライバを次のように構成します。

  • OutgoingMailServerプロパティの値として、SMTPメール・サーバーの名前を入力します。

  • IncomingMailServerプロパティの値として、IMAP4/POP3メール・サーバーの名前を入力します。受信ユーザー名とパスワードも構成します。


注意:

このサンプル・アプリケーションは汎用的であるため、適切なメッセージング・ドライバがデプロイされて構成されている場合は、他のチャネル経由のインバウンドおよびアウトバウンド・メッセージングもサポートできます。

60.6.3 JDeveloper 11gを使用したアプリケーションの作成

この項では、Windowsベース・ビルドのJDeveloperを使用して、usermessagingsample-echoを作成、コンパイルおよびデプロイする手順を説明します。

60.6.3.1 プロジェクトを開く

  1. usermessagingsample.echo-src.zipJDEV_HOME/communications/samples/ディレクトリに解凍します。共有ライブラリ参照をプロジェクトで有効にするには、このディレクトリを使用する必要があります。


    注意:

    別のディレクトリを使用する場合は、oracle.sdp.messagingライブラリ・ソース・パスをJDEV_HOME/communications/modules/oracle.sdp.messaging_11.1.1/sdpmessaging.jarに更新する必要があります。

  2. Oracle JDeveloperで、usermessagingsample-echo.jws(.zipファイルに含まれています)を開きます。

    Oracle JDeveloperのメイン・ウィンドウにプロジェクトが表示されます(図60-7)。

    図60-7 Oracle JDeveloperのメイン・ウィンドウ

    図60-7の説明が続きます
    「図60-7 Oracle JDeveloperのメイン・ウィンドウ」の説明

  3. 次のライブラリがusermessagingsample-echo-webおよびusermessagingsample-echo-ejbモジュールに追加されていることを確認して、サンプル・アプリケーションのビルド依存性が満たされていることを確認します。

    • ライブラリ: oracle.sdp.messaging、クラスパス: JDEV_HOME/communications/modules/oracle.sdp.messaging_11.1.1/sdpmessaging.jar。これはJavaライブラリで、UMS、およびUMSを使用してメッセージを送受信するアプリケーションで使用されます。

    各モジュールに対して次の手順を実行します。

    1. 「アプリケーション・ナビゲータ」で、モジュールを右クリックし、「プロジェクト・プロパティ」を選択します。

    2. 左側のペインで、「ライブラリとクラスパス」を選択します(図60-8)。

      図60-8 ライブラリの確認

      図60-8の説明が続きます
      「図60-8 ライブラリの確認」の説明

    3. 「OK」をクリックします。

  4. usermessagingclient-ejbプロジェクトがアプリケーションに存在していることを確認します。これは、UMSアプリケーションで使用するメッセージング・クライアントBeanをパッケージ化したEnterprise JavaBeansモジュールです。このモジュールによって、アプリケーションはUMSサーバーに接続できます。

  5. usermessagingsample-echo-ejbプロジェクトの下にあるJavaファイルを検索し、メッセージング・クライアントAPIを使用して非同期でメッセージを受信(ClientReceiverBean)したり、メッセージを送信(ClientSenderBean)する方法を確認します。

  6. usermessagingsample-echo-webプロジェクトの下にあるJavaファイルを検索し、メッセージング・クライアントAPIを使用してアクセス・ポイントを登録および登録解除する方法を確認します。

  7. UMSサーバーに登録したアプリケーション情報は、usermessagingclient-ejbプロジェクトのejb-jar.xmlファイルに宣言的に指定されることに注意してください (例60-11)。

    例60-11 アプリケーション情報

                <env-entry>
                    <env-entry-name>sdpm/ApplicationName</env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value>UMSEchoApp</env-entry-value>
                </env-entry>
                <env-entry>
                    <env-entry-name>sdpm/ApplicationInstanceName</env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value>UMSEchoAppInstance</env-entry-value>
                </env-entry>
     
                <env-entry>
                   <env-entry-name>sdpm/ReceivingQueuesInfo</env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>OraSDPM/QueueConnectionFactory:OraSDPM/Queues/OraSDPMAppDefRcvQ1<
    /env-entry-value>
                </env-entry>
     
                <env-entry>
                   <env-entry-name>
                   sdpm/MessageListenerSessionBeanJNDIName 
                    </env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value> 
                      ejb/umsEchoApp/ClientReceiverLocal</env-entry-value>
                </env-entry>
                <env-entry>
                    <env-entry-name>
                    sdpm/MessageListenerSessionBeanHomeClassName</env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value>
                    oracle.sdp.messaging.sample.ejbApp.ClientReceiverHomeLocal
                     </env-entry-value>
                  </env-entry>
                  <env-entry>
                    <env-entry-name>  
                    sdpm/StatusListenerSessionBeanJNDIName  
                   </env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value>ejb/umsEchoApp/ClientReceiverLocal</env-entry-value>
                </env-entry>
                <env-entry>
                    <env-entry-name>sdpm/StatusListenerSessionBeanHomeClassName</env-entry-name>
                    <env-entry-type>java.lang.String</env-entry-type>
                    <env-entry-value>oracle.sdp.messaging.sample.ejbApp.ClientReceiverHomeLocal</env-e
    ntry-value>
                </env-entry>
    
  8. アプリケーション名(UMSEchoApp)とアプリケーション・インスタンス名(UMSEchoAppInstance)は、MessageDispatcherBean MDBのメッセージ・セレクタでも使用されることに注意してください。このメッセージ・セレクタは、アプリケーション受信キューに配置されたメッセージとステータスの非同期受信で使用されます(例60-12)。

    例60-12 アプリケーション情報

    <activation-config-property>
      <activation-config-property-name>
        messageSelector
      </activation-config-property-name>
      <activation-config-property-value>
        appName='UMSEchoApp' or sessionName='UMSEchoApp-UMSEchoAppInstance'
      </activation-config-property-value>
    </activation-config-property>
                
    

    注意:

    自身のアプリケーションに対して別のアプリケーション名とアプリケーション・インスタンス名を選択した場合は、このメッセージ・セレクタを更新する必要があります。そうしないと、非同期受信が機能しません。

60.6.4 アプリケーションのデプロイ

アプリケーションをデプロイする手順は、次のとおりです。

  1. ナビゲーション・ペインでアプリケーションを右クリックし、「新規」を選択して、アプリケーション・サーバー接続を作成します。第60.7項「新規アプリケーション・サーバー接続の作成」の説明に従います。

  2. アプリケーションをデプロイするには、「usermessagingsample-echo application」「デプロイ」「usermessagingsample-echo」「デプロイ先」「SOA_server」の順に選択します(図60-9)。

    図60-9 プロジェクトのデプロイ

    図60-9の説明が続きます
    「図60-9 プロジェクトのデプロイ」の説明

  3. メッセージBuild Successfulがログに表示されていることを確認します。

  4. メッセージDeployment Finishedがデプロイメント・ログに表示されていることを確認します。

    アプリケーションが正常にデプロイされました。

    サンプルを実行するには、その前に、Oracle User Messaging Serviceの追加ドライバを構成し、必要に応じて、ユーザー・メッセージング・プリファレンスでメッセージを受信するユーザー用のデフォルト・デバイスを構成する必要があります。


    注意:

    詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。

60.6.5 アプリケーションのテスト

Oracle WebLogic Serverの実行中のインスタンスにusermessagingsample-echoをデプロイした後は、次の手順を実行します。

  1. Webブラウザを起動し、サンプル・アプリケーションのアドレスをhttp://host:http-port/usermessagingsample-echo/と入力します。たとえば、ブラウザのナビゲーション・バーにhttp://localhost:7001/usermessagingsample-echo/と入力します。

    プロンプトが表示された場合は、ログイン資格証明を入力します。たとえば、ユーザー名はweblogicと入力します。メッセージ・サンプルをテストするためのブラウザ・ページが表示されます(図60-10)。

    図60-10 サンプル・アプリケーションのテスト

    図60-10の説明が続きます
    「図60-10 サンプル・アプリケーションのテスト」の説明

  2. アクセス・ポイントの登録/登録解除をクリックします。アクセス・ポイントの登録ページが表示されます(図60-11)。

    図60-11 アクセス・ポイントの登録

    図60-11の説明が続きます
    「図60-11 アクセス・ポイントの登録」の説明

  3. アクセス・ポイントのアドレスを次の書式で入力します。

    EMAIL:server_address

    たとえば、EMAIL:myserver@example.comと入力します。

  4. アクションとして登録を選択し、送信をクリックします。登録ステータス・ページが表示され、図60-12に示すように登録済と表示されます。

    図60-12 アクセス・ポイントの登録ステータス

    図60-12の説明が続きます
    「図60-12 アクセス・ポイントの登録ステータス」の説明

  5. メッセージ・クライアント(電子メールの場合は電子メール・クライアント)から、前の手順でアクセス・ポイントとして登録したアドレスに、メッセージを送信します。

    該当するチャネル用のUMSメッセージング・ドライバが正しく構成されている場合は、usermessagingsample-echoアプリケーションから戻されるエコー・メッセージを受信できるはずです。

60.7 新規アプリケーション・サーバー接続の作成

次の手順を実行し、アプリケーション・サーバー接続を作成します。

  1. プロジェクトを右クリックし、「新規」「接続」「アプリケーション・サーバー接続」の順に選択して、新規アプリケーション・サーバー接続を作成します(図60-13)。

    図60-13 新規アプリケーション・サーバー接続

    図60-13の説明が続きます
    「図60-13 新規アプリケーション・サーバー接続」の説明

  2. 接続にSOA_serverという名前を付けて、「次へ」をクリックします(図60-14)。

  3. 「接続タイプ」「WebLogic 10.3」を選択します。

    図60-14 新規アプリケーション・サーバー接続

    図60-14の説明が続きます
    「図60-14 新規アプリケーション・サーバー接続」の説明

  4. 認証情報を入力します。ユーザー名の一般的な値はweblogicです。

  5. 「接続」ダイアログで、SOA管理サーバーのホスト名、ポートおよびSSLポートを入力し、WLSドメインのドメイン名を入力します。

  6. 「次へ」をクリックします。

  7. 「テスト」ダイアログで、「接続のテスト」をクリックします。

  8. メッセージSuccess!が表示されていることを確認します。

    アプリケーション・サーバー接続が作成されました。