ヘッダをスキップ
Oracle® WebLogic Communication Services 開発者ガイド
11g リリース 1 (11.1.1)
B55506-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

17 User Messaging Service Java API を使用したメッセージの送受信

この章では、User Messaging Service (UMS) API を使用したアプリケーションの開発方法と 2 つのサンプル アプリケーション usermessagingsample.ear および usermessagingsample-echo.ear のビルド方法について説明します。 この節の内容は以下のとおりです。

17.1 UMS Java API の概要

UMS Java API は EJB クライアント用のアプリケーション開発をサポートします。 パッケージは次のグループに分かれています。

17.1.1 J2EE アプリケーション モジュールの作成

UMS EJB クライアント API を使用する J2EE アプリケーション モジュールには次の 2 種類があります。

  • EJB アプリケーション モジュール (ステートレス セッション Bean) : バックエンドの基幹メッセージ送受信アプリケーション。

  • Web アプリケーション モジュール : HTML または Web のフロントエンドを持つアプリケーション用モジュール。

どちらのアプリケーション モジュールも UMS クライアント API を使用してアプリケーションを UMS サーバに登録し、メッセージやステータスの送信または取得操作を呼び出して、アクセス ポイントを登録または登録解除します。 詳細な操作一覧については、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

ソース コード付きのサンプルは Oracle Technology Network (OTN) から入手できます。

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

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

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

17.2.1 プログラム型または宣言型の方法による MessagingEJBClient インスタンスの作成

例 17-1 にプログラム型で MessagingEJBClient インスタンスを作成するコードを示します。

例 17-1 プログラム型の MessagingEJBClient インスタンスの作成

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

宣言型の方法で MessagingEJBClient インスタンスを作成することもできます。 通常は、デプロイメント時に変更できるという点で宣言型の方が便利です。

必要なすべての Application Infoプロパティを J2EE モジュール記述子 (ejb-jar.xml または web.xml) の環境エントリとして指定する必要があります。

例 17-2 に宣言型で MessagingEJBClient インスタンスを作成するコードを示します。

例 17-2 宣言型の MessagingEJBClient インスタンスの作成

MessagingClient mClient = MessagingClientFactory.createMessagingEJBClient();

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

MessagingClientFactory クラスの API リファレンスについては、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

17.3 メッセージの送信

メッセージは、oracle.sdp.messaging の MessageFactory クラスと Message インタフェースを使用して作成できます。

作成可能なメッセージの種類には、プレーンテキスト メッセージ、text/plain と text/html で構成されるマルチパート メッセージ、配信タイプがさまざまな受信者のメッセージに対してメッセージごとに配信チャネル (DeliveryType) 固有のペイロードを作成する処理を含むメッセージなどがあります。

17.3.1 メッセージの作成

ここでは、作成可能なメッセージの種類について説明します。

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

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

例 17-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");

17.3.1.2 Text/Plain パートと Text/HTML パートで構成されるマルチパート/代替メッセージの作成

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

例 17-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");

17.3.1.3 配信タイプが異なる受信者のメッセージに対するメッセージごとの配信チャネル固有ペイロードの作成

宛先アドレスにメッセージを送信する場合、複数のチャネルが関与することがあります。 Oracle UMS アプリケーションの開発者はチャネルごとに適切なマルチパート形式を指定する必要があります。

例 17-5 に、配信タイプが異なる受信者のメッセージに対してメッセージごとに配信チャネル (DeliveryType) 固有ペイロードを作成する方法を示します。

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

例 17-5 配信タイプが異なる受信者のメッセージに対するメッセージごとの配信チャネル固有ペイロードの作成

Message message = MessageFactory.getInstance().createMessage();
 
// 最上位のマルチパート/代替 MimeMultipart オブジェクトを作成する。
MimeMultipart mp = new MimeMultipart("alternative");
 
// SMS ペイロード コンテンツの最初のパートを作成する。
MimeBodyPart part1 = new MimeBodyPart();
part1.setContent("Text content for SMS.", "text/plain");
 
part1.setHeader(Message.HEADER_NS_PAYLOAD_PART_DELIVERY_TYPE, "SMS");
 
// 最初のパートを追加する。
mp.addBodyPart(part1);
 
// EMAIL および IM ペイロード コンテンツの 2 番目のパートを作成する。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");
 
// 2 番目のパートを追加する。
mp.addBodyPart(part2);
 
// メッセージのコンテンツを設定する。
message.setContent(mp, "multipart/alternative");
 
// MultiplePayload フラグを true に設定する。
message.setMultiplePayload(true);

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

MessagingFactory クラスの API リファレンスについては、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

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

Message インタフェースの API リファレンスについては、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

17.3.4 Enum DeliveryType の API リファレンス

enum DeliveryType の API リファレンスについては、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

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

ここでは、アドレスの種類と Address オブジェクトの作成方法について説明します。

17.3.5.1 アドレスの種類

アドレスには、「デバイス アドレス」と「ユーザ アドレス」の 2 種類があります。 デバイス アドレスには、電子メール アドレス、インスタント メッセージング アドレス、電話番号などさまざまな種類があります。 ユーザ アドレスはユーザ リポジトリに設定されたユーザ ID です。

17.3.5.2 Address オブジェクトの作成

メッセージの送信者および受信者のアドレスを指定するには、AddressFactory クラスを使用して、Address インタフェースによって定義された Address オブジェクトを作成します。

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

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

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

Address recipient = AddressFactory.getInstance().createAddress("Email:john.doe@oracle.com");
17.3.5.2.2 バッチ処理による複数の Address オブジェクトの作成

例 17-7 に複数の Address オブジェクトをバッチ処理で作成するコードを示します。

例 17-7 バッチ処理による複数の Address オブジェクトの作成

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

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

例 17-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);

17.3.5.3 フェイルオーバ アドレスを持つ受信者の作成

例 17-9 に、フェイルオーバ アドレスを持つ受信者を作成するコードを示します。

例 17-9 フェイルオーバを設定した単一の Address オブジェクトの作成

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

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

AddressFactory クラスの API リファレンスについては、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

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

Address インタフェースの API リファレンスについては、『Oracle Fusion Middleware User Messaging Service API Reference』を参照してください。

17.3.6 メッセージのステータスの取得

Oracle UMS を使用して、メッセージのステータスを同期または非同期に取得できます。

17.3.6.1 メッセージ ステータスの同期または非同期の取得

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

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

または

Status[] statuses = messagingClient.getStatus(messageId, address[]) --- ここで、
 address[] はメッセージに設定された 1 つ以上の受信者の配列

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

メッセージ ステータスの非同期通知を取得するには、以下の手順に従います。

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

  2. ステータス リスナを宣言型で登録します。

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

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

17.4 メッセージの受信

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

17.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);

17.4.2 同期受信

MessagingClient.receive メソッドを使用してメッセージを同期受信できます。 これは、メッセージの非同期受信に伴うコンフィグレーションのオーバーヘッドを回避したい軽量クライアントにおいて便利なポーリング メソッドです。 このメソッドはアプリケーションの着信キュー内の即時に使用可能なメッセージの一覧を返します。非ブロック呼び出しを実行するため、現在使用可能なメッセージが存在しない場合は null が返されます。


注意 :

使用可能なすべてのメッセージを 1 回の呼び出しで取得できるとは限りません。 使用可能なすべてのメッセージを確実に取得するには、ポーリングを行う必要があります。

17.4.3 非同期受信

非同期受信には MDB のコンフィグレーションやステートレス セッション Bean メッセージ リスナの書き込みなどのさまざまなタスクが伴います。 詳細な手順については、サンプル アプリケーション usermessagingsample-echo を参照してください。

17.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);

17.5 UMS EJB クライアント API を使用したクライアント アプリケーションのビルド

ここでは、UMS EJB クライアント API を使用してメッセージの送信とメッセージ ステータスの同期取得を行う Web クライアント アプリケーション、usermessagingsample の作成方法について説明します。 usermessagingsample はメッセージの着信もサポートしています。 usermessagingsample のデプロイメントとコンフィグレーションを完了すれば、このサンプル アプリケーションを使用して電子メール クライアントにメッセージを送信できます。

節 17.1.1「J2EE アプリケーション モジュールの作成」で説明されている 2 つのアプリケーション モジュールのうち、このサンプルでは一定の HTML 形式とサーブレットを定義する Web アプリケーション モジュール (WAR) に焦点を当てます。 この Web アプリケーション モジュールのコードおよび対応する XML ファイルは、付属の usermessagingsample-src.zip のソースで確認できます。 サーブレットは UMS EJB クライアント API を使用して UMS EJB クライアント インスタンスを作成し (これによってアプリケーション情報が登録されます)、メッセージを送信します。

このアプリケーションは usermessagingsample.ear という名前の Enterprise ARchive ファイル (EAR) にパッケージ化されます。その構造を次に示します。

ビルド済みのサンプル アプリケーションとそのソース コード (usermessagingsample-src.zip) は OTN から入手できます。

17.5.1 デプロイメントの概要

次に、usermessagingsample.ear を例にして、メッセージ送信機能を持つアプリケーションの構築手順を説明します。

  1. 節 17.5.2「電子メール ドライバのコンフィグレーション」

  2. 節 17.5.3「JDeveloper 11g を使用したアプリケーションのビルド」

  3. 節 17.5.4「アプリケーションのデプロイ」

  4. 節 17.5.5「アプリケーションのテスト」

17.5.2 電子メール ドライバのコンフィグレーション

Oracle User Messaging Service の電子メール ドライバを有効にしてメッセージの送信やステータスの取得を行うには、電子メール ドライバを次のようにコンフィグレーションします。

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


注意 :

このサンプル アプリケーションは汎用的であり、適切なメッセージング ドライバのデプロイとコンフィグレーションが行われていれば、他のチャネルを使用したメッセージ送信もサポートされます。

17.5.3 JDeveloper 11g を使用したアプリケーションのビルド

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

17.5.3.1 プロジェクトを開く

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


    注意 :

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

  2. Oracle JDeveloper の zip ファイルに含まれている usermessagingsample.jws を開きます。

    図 17-1 Oracle JDeveloper メイン ウィンドウ

    図 17-1 の説明が続く
    「図 17-1 Oracle JDeveloper メイン ウィンドウ」の説明

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

    図 17-2 Oracle JDeveloper メイン ウィンドウ

    図 17-2 の説明
    「図 17-2 Oracle JDeveloper メイン ウィンドウ」の説明

  3. 次のライブラリが Web モジュールに追加されていることを確かめて、サンプル アプリケーションのビルドの依存関係が満たされていることを確認します。

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

    1. アプリケーション ナビゲータで、Web モジュール usermessagingsample-web を右クリックし、[Project Properties] を選択します。

    2. 左のペインで、[Libraries and Classpath] を選択します。

      図 17-3 ライブラリの確認

      図 17-3 の説明
      「図 17-3 ライブラリの確認」の説明

    3. [OK] をクリックします。

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

  5. usermessagingsample-web プロジェクトの Java ファイルを参照して、メッセージの送信、ステータスの取得、メッセージの同期受信を行うためにメッセージング クライアント API がどのように使われているかを確認します。 UMS サーバに登録するアプリケーション情報は、プロジェクトの SampleUtils.java でプログラムによって指定しています (例 17-10)。

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

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

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

アプリケーションをデプロイするには、以下の手順に従います。

  1. ナビゲーション ペインでアプリケーションを右クリックし、[新規] を選択してアプリケーション サーバ接続を作成します。 節 17.7 「新しいアプリケーション サーバ接続の作成」の手順に従います。

  2. [usermessagingsample application|Deploy|usermessagingsample|to|SOA_server] を選択してアプリケーションをデプロイします (図 17-4)。

    図 17-4 プロジェクトのデプロイ

    図 17-4 の説明
    「図 17-4 プロジェクトのデプロイ」の説明

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

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

    これで、アプリケーションのデプロイは完了です。

    サンプルを実行するには、Oracle User Messaging Service の追加ドライバをコンフィグレーションし、オプションで、User Messaging Preferences でメッセージを受信するユーザのデフォルト デバイスをコンフィグレーションします。


    注意 :

    詳細については、『Oracle Fusion Middleware SOA Developer's Guide』の「Configuring Notifications」を参照してください。

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

WLS の実行中のインスタンスに usermessagingsample をデプロイしたら、以下の手順を実行します。

  1. Web ブラウザを起動し、サンプル アプリケーションのアドレスを http://<ホスト>:<HTTP ポート>/usermessagingsample/ の形式で入力します。 たとえば、ブラウザのナビゲーション バーに http://localhost:7001/usermessagingsample/ と入力します。

    ログイン資格情報の入力を要求されたら、必要な情報を入力します。たとえば、ユーザ名 weblogic を入力します。 メッセージング サンプルをテストするブラウザ ページが表示されます (図 17-5)。

    図 17-5 サンプル アプリケーションのテスト

    図 17-5 の説明
    「図 17-5 サンプル アプリケーションのテスト」の説明

  2. [Send sample message] をクリックします。 [Send Message] ページが表示されます (図 17-6)。

    図 17-6 テスト メッセージのアドレス指定

    図 17-6 の説明
    「図 17-6 テスト メッセージのアドレス指定」の説明

  3. オプションで、送信者のアドレスを次の形式で入力することもできます。

    Email:<送信者のアドレス>

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

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

    Email:<受信者アドレス 1>, Email:<受信者アドレス 2>

    ユーザ メッセージング プリファレンスをコンフィグレーションしている場合、メッセージのアドレスを単純に「User:<ユーザ名>」の形式で指定することもできます (例 : User:weblogic)。

  5. オプションで、電子メールの件名やコンテンツを入力することもできます。

  6. [Send] をクリックします。 [Message Status] ページにトランザクションの進行状況が表示されます (図 17-7 では、メッセージング エンジンが処理対象メッセージを受信した状態になっています)。

    図 17-7 メッセージのステータス

    図 17-7 の説明
    「図 17-7 メッセージのステータス」の説明

  7. [Refresh] をクリックしてステータスを更新します。 電子メール メッセージが電子メール サーバに配信されると、図 17-8 のように、[Status Content] フィールドに 「Outbound message delivery to remote gateway succeeded.」 と表示されます。

    図 17-8 メッセージ ステータスの確認

    図 17-8 の説明
    「図 17-8 メッセージ ステータスの確認」の説明

17.6 UMS EJB クライアント API を使用したクライアント エコー アプリケーションのビルド

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

このアプリケーションは usermessagingsample-echo.ear という名前の Enterprise ARchive ファイル (EAR) にパッケージ化されます。その構造を次に示します。

ビルド済みのサンプル アプリケーションとそのソース コード (usermessagingsample-echo-src.zip) は OTN から入手できます。

17.6.1 デプロイメントの概要

次に、usermessagingsample-echo.ear を例にして、メッセージを非同期に送受信する機能を持つアプリケーションの構築手順を説明します。

  1. 節 17.6.2「電子メール ドライバのコンフィグレーション」

  2. 節 17.6.3「JDeveloper 11g を使用したアプリケーションのビルド」

  3. 節 17.6.4「アプリケーションのデプロイ」

  4. 節 17.6.5「アプリケーションのテスト」

17.6.2 電子メール ドライバのコンフィグレーション

Oracle User Messaging Service の電子メール ドライバを有効にしてメッセージの送受信やステータスの取得を行うには、電子メール ドライバを次のようにコンフィグレーションします。

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

  • IMAP4/POP3 メール サーバの名前を IncomingMailServer プロパティの値として入力します。また、受信ユーザ名とパスワードをコンフィグレーションします。


注意 :

このサンプル アプリケーションは汎用的であり、適切なメッセージング ドライバのデプロイとコンフィグレーションが行われていれば、他のチャネルを使用したメッセージ送受信もできます。

17.6.3 JDeveloper 11g を使用したアプリケーションのビルド

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

17.6.3.1 プロジェクトを開く

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


    注意 :

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

  2. Oracle JDeveloper の zip ファイルに含まれている usermessagingsample-echo.jws を開きます (図 17-9)。

    図 17-9 プロジェクトを開く

    図 17-9 の説明
    「図 17-9 プロジェクトを開く」の説明

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

    図 17-10 Oracle JDeveloper メイン ウィンドウ

    図 17-10 の説明
    「図 17-10 Oracle JDeveloper メイン ウィンドウ」の説明

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

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

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

    1. アプリケーション ナビゲータでモジュールを右クリックし、[Project Properties] を選択します。

    2. 左のペインで、[Libraries and Classpath] を選択します (図 17-11)。

      図 17-11 ライブラリの確認

      図 17-11 の説明が続く
      「図 17-11 ライブラリの確認」の説明

    3. [OK] をクリックします。

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

  5. usermessagingsample-echo-ejb プロジェクトの Java ファイルを参照して、非同期にメッセージの受信 (ClientReceiverBean) および送信 (ClientSenderBean) を行うためにメッセージング クライアント API がどのように使われているかを確認します。

  6. usermessagingsample-echo-web プロジェクトの Java ファイルを参照して、アクセス ポイントを登録および登録解除するためにメッセージング クライアント API がどのように使われているかを確認します。

  7. UMS サーバに登録するアプリケーション情報は、usermessagingclient-ejb プロジェクトの ejb-jar.xml に宣言型で指定されています (例 17-11)。

    例 17-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-entry-value>
                </env-entry>                
    
  8. MessageDispatcherBean MDB のメッセージ セレクタでは、アプリケーションの受信キューに配置されているメッセージおよびステータスを非同期に受信するために ApplicationName (「UMSEchoApp」) と ApplicationInstanceName (「UMSEchoAppInstance」) も使用しています (例 17-12)。

    例 17-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>
                
    

    注意 :

    アプリケーションで別の ApplicationName および ApplicationInstanceName を使用する場合は、このメッセージ セレクタを更新する必要があります。 更新を忘れると、非同期受信は機能しません。

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

アプリケーションをデプロイするには、以下の手順に従います。

  1. ナビゲーション ペインでアプリケーションを右クリックし、[新規] を選択してアプリケーション サーバ接続を作成します。 節 17.7「新しいアプリケーション サーバ接続の作成」の手順に従います。

  2. [usermessagingsample-echo application|Deploy|usermessagingsample-echo|to|SOA_server] を選択してアプリケーションをデプロイします (図 17-12)。

    図 17-12 プロジェクトのデプロイ

    図 17-12 の説明
    「図 17-12 プロジェクトのデプロイ」の説明

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

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

    これで、アプリケーションのデプロイは完了です。

    サンプルを実行するには、Oracle User Messaging Service の追加ドライバをコンフィグレーションし、オプションで、User Messaging Preferences でメッセージを受信するユーザのデフォルト デバイスをコンフィグレーションします。


    注意 :

    詳細については、『Oracle Fusion Middleware SOA Developer's Guide』の「Configuring Notifications」を参照してください。

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

WLS の実行中のインスタンスに usermessagingsample-echo をデプロイしたら、以下の手順を実行します。

  1. Web ブラウザを起動し、サンプル アプリケーションのアドレスを「http://<ホスト>:<HTTP ポート>/usermessagingsample-echo/」の形式で入力します。 たとえば、ブラウザのナビゲーション バーに http://localhost:7001/usermessagingsample-echo/ と入力します。

    ログイン資格情報の入力を要求されたら、必要な情報を入力します。たとえば、ユーザ名 weblogic を入力します。 メッセージング サンプルをテストするブラウザ ページが表示されます (図 17-13)。

    図 17-13 サンプル アプリケーションのテスト

    図 17-13 の説明
    「図 17-13 サンプル アプリケーションのテスト」の説明

  2. [Register/Unregister Access Points] をクリックします。 [Access Point Registration] ページが表示されます (図 17-14)。

    図 17-14 アクセス ポイントの登録

    図 17-14 の説明
    「図 17-14 アクセス ポイントの登録」の説明

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

    EMAIL:<サーバのアドレス>

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

  4. [アクション] に [Register] を選択し、[Submit] をクリックします。 登録のステータス ページに "Registered" と表示されます (図 17-15)。

    図 17-15 アクセス ポイントの登録ステータス

    図 17-15 の説明
    「図 17-15 アクセス ポイントの登録ステータス」の説明

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

    使用するチャネルの UMS メッセージング ドライバが適切にコンフィグレーションされていれば、usermessagingsample-echo アプリケーションからエコー メッセージが返信されます。

17.7 新しいアプリケーション サーバ接続の作成

新しいアプリケーション サーバ接続を作成するには、以下の手順に従います。

  1. 新しいアプリケーション サーバ接続を作成するには、プロジェクトを右クリックし、[新規|接続|Application Server Connection] を選択します (図 17-16)。

    図 17-16 新しいアプリケーション サーバ接続

    図 17-16 の説明
    「図 17-16 新しいアプリケーション サーバ接続」の説明

  2. 接続名に「SOA_server」を指定して [次へ] をクリックします (図 17-17)。

  3. [接続タイプ] に「WebLogic 10.3」を指定します。

    図 17-17 新しいアプリケーション サーバ接続

    図 17-17 の説明
    「図 17-17 新しいアプリケーション サーバ接続」の説明

  4. 認証情報を入力します。一般的な値は次のとおりです。

    ユーザ名 : weblogic、パスワード : weblogic

  5. [接続] 画面で、ホスト名、ポート、SOA 管理サーバの SSL ポート、WLS ドメインのドメイン名を入力します。

  6. [次へ] をクリックします。

  7. [テスト] 画面で、[接続のテスト] をクリックします。

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

    アプリケーション サーバ接続の作成は完了しました。