Sun ONE logo     前へ     目次     索引     次へ     
Sun ONE Messaging and Collaboration イベント通知サービスマニュアル



第 3 章   イベント通知サービス Java (JMS) API リファレンス


この章では、 ENS における Java (JMS) API の実装について、および Java API について説明します。

この章は、次の節で構成されています。



イベント通知サービス Java (JMS) API の実装

ENS Java API は、iPlanet Messaging Server 5.2 および Sun ONE Calendar Server 5.1 に組み込まれています。Java API は、Java Message Service 仕様 (JMS) に準拠しています。

ENS は、Java Message Service に対するプロバイダの役割を果たします。つまり、JMS は ENS に Java API を提供します。このソフトウェアは、ベースライブラリとデモプログラムで構成されています。


Java API を使用するための前提条件

Java API を使用するには、ENS を使用可能にしておく必要があります。iPlanet Messaging Server で ENS を使用可能にする方法については、『iPlanet Messaging Server 5.2 管理者ガイド』の付録 C を参照してください。Sun ONE Calendar Server では、デフォルトで ENS を使用できます。

また、iPlanet Messaging Server と Sun ONE Calendar Server には含まれていない次のソフトウェアをインストールする必要があります。

  • Java Development Kit (JDK) 1.2 以降

  • Java Message Service 1.0.2a 以降 (1.0.2a でテスト済み)

このソフトウェアは、http://java.sun.com からダウンロードできます。


サンプル Java プログラム

iPlanet Messaging Server 5.2 サンプルプログラムの JmsSample および JBiff は、server-root/bin/msg/enssdk/java/com/iplanet/ens/samples ディレクトリに格納されています。JmsSample は、汎用 ENS サンプルプログラムです。JBiff は、iPlanet Messaging Server 固有のサンプルプログラムです。

JBiff の場合、次の項目を追加する必要があります。

  • Java Mail jar ファイル (JavaMail 1.2 でテスト済み)

  • Java Activation Framework (JavaMail に必要、JAF1.0.1 でテスト済み)

これらも、http://java.sun.com からダウンロードできます。


環境の設定

この節では、サンプルプログラムをコンパイルして実行するために必要な手順について説明します。


JmsSample プログラムをコンパイルするには

  1. CLASSPATH に次の項目の組み込みを設定します。

    ens.jar ファイル - ens.jar

    (iPlanet Messaging Server では、ens.jarserver-root/java/jars/ ディレクトリにある)

    Java Message Service - full-path/jms1.0.2/jms.jar

  2. server-root/bin/msg/enssdk/java ディレクトリに移動します。

  3. 次のコマンドを実行します。

    javac com/iplanet/ens/samples/JmsSample.java


JBiff プログラムをコンパイルするには

  1. CLASSPATH に次の項目の組み込みを設定します。

    ens.jar ファイル - ens.jar

    (iPlanet Messaging Server では、ens.jarserver-root/java/jars/ ディレクトリにある)

    Java Message Service - full-path/jms1.0.2/jms.jar

    Java Mail - full-path/javamail-1.2/mail.jar

    Java Activation Framework - full-path/jaf-1.0.1/activation.jar

  2. server-root/bin/msg/enssdk/java ディレクトリに移動します。

  3. 次のコマンドを実行します。

    javac com/iplanet/ens/samples/JBiff.java


JmsSample プログラムを実行するには

  1. server-root/bin/msg/enssdk/java ディレクトリに移動します。

  2. 次のコマンドを実行します。

    java com.iplanet.ens.samples.JmsSample

  3. 次の 3 つの項目の入力が要求されます。

    • ENS イベント参照 ( iPlanet Messaging Server の場合の例: enp://127.0.0.1/store)

    • ENS ホスト名

    • ENS ポート (通常は 7997)

  4. イベントを公開します。

    iPlanet Messaging Server でイベントを公開するには、次の 2 つの方法があります。

    • ENS の apub C サンプルプログラムを使用できます。詳細については、「iPlanet Messaging Server のコーディング例」 を参照してください。

    • ENS を使用可能にした場合は、iBiff が iPlanet Messaging Server 関連のイベントを公開するように設定します。

    Sun ONE Calendar Server の場合、イベントは Calendar Server によって公開されます。


JBiff デモプログラムを実行するには

前提条件:JBiff デモプログラムを実行するには、iPlanet Messaging Server で ENS を使用可能にしておく必要があります。その手順については、『iPlanet Messaging Server 5.2 管理者ガイド』の付録 C を参照してください。



デモは現在、ENS イベント参照 enp://127.0.0.1/store を使用するようハードコード化されています。これは、iBiff 通知プラグインが使用するデフォルトのイベント参照です。



  1. server-root/bin/msg/enssdk/java ディレクトリに移動します。

  2. 次のコマンドを実行します。

    java com.iplanet.ens.samples.JBiff

  3. ユーザ ID (userid)、ホスト名 (hostname)、およびパスワード (password) の入力を求められます。

    コードは、ENS サーバおよび IMAP サーバがそのホスト上で稼動中であることを前提としています。userid および password は、IMAP アカウントにアクセスするための IMAP ユーザ名およびパスワードです。

2 つのテストプログラムは、ENS サブスクライバです。電子メールメッセージが iPlanet Messaging Server を介して転送されると、iBiff からイベントを受信します。または、apub C サンプルプログラムを使用して、イベントを生成することもできます。詳細については、「iPlanet Messaging Server のコーディング例」 を参照してください。



Java (JMS) API の概要



Java API for ENS は、標準 Java Messaging Service (JMS) API のサブセットを使用し、次の 2 つの新しい固有メソッドが追加されています。

  • com.iplanet.ens.jms.EnsTopicConnFactory

  • com.iplanet.ens.jms.EnsTopic

JMS では、2 つの ENS 固有クラスが提供する TopicConnectionFactory および Topic の作成が必要です。

標準 JMS のクラスとメソッドの詳細については、次のサイトにある JMS マニュアルを参照してください。

http://java.sun.com/products/jms/docs.html


新しい固有メソッド

2 つの固有メソッドクラスとは、EnsTopicConnFactory および EnsTopic です。


com.iplanet.ens.jms.EnsTopicConnFactory


メソッドについて
このメソッドは、javax.jms.TopicConnectionFactory を返すコンストラクタです。JNDI 形式の検索で TopicConnectionFactory オブジェクトを取得する代わりに、このメソッドを使用できます。


構文
public EnsTopicConnFactory (String name,
                              String hostname,
                              int port,
                              OutputStream logStream)

                  throws java.io.IOException


引数

表 3-1    EnsTopicConnFactory の引数

引数

説明

name  

String  

javax.jms.Connection のクライアント ID  

hostname  

String  

ENS サーバのホスト名  

port  

int  

ENS サーバの TCP ポート  

logStream  

OutputStream  

メッセージが記録される場所 (NULL にはできない)  


com.iplanet.ens.jms.EnsTopic


このメソッドについて
このメソッドは、javax.jms.Topic を返すコンストラクタです。JNDI 形式の検索で javax.jms.Topic オブジェクトを取得する代わりに、このメソッドを使用できます。


構文
public EnsTopic (String eventRef)


引数

表 3-2    EnsTopic の引数

引数

説明

eventRef  

String  

ENS イベント参照  



実装上の注意



この節では、ENS Java API を実装するときに注意すべき点について説明します。


現在の実装における欠点

現行の Java API の実装では、初期プロバイダインタフェースを備えていません。

JMS Topic Connection Factory および ENS Destination が明示的に呼び出されます。これらは、com.iplanet.ens.jms.EnsTopicConnFactory および com.iplanet.ens.jms.EnsTopic です。ENS では、TopicConnectionFactory オブジェクトや Topic オブジェクトの取得には JNDI を使用しません。


通知の配信

通知は、javax.jms.TextMessage として配信されます。ENS イベント参照のパラメータとその値は TextMessage に対するプロパティ名として提供されます。ペイロードは、TextMessage のデータとして提供されます。


JMS ヘッダー

  • JMSDeliveryMode は常に NON_PERSISTENT に設定されている (次の配信のためにメッセージを保存しない)

  • JMSRedelivered は常に false に設定されている

  • JMSMessageID は内部 ID に設定されており、iPlanet Messaging Server の電子メールメッセージのヘッダーにある SMTP MessageID には設定されていない

  • ペイロードは常に javax.jms.TextMessage。ENS のペイロードに相当する

  • JMSDestination は、完全イベント参照に設定されている (この通知に固有のパラメータ/値を含む)

  • JMSCorrelationID - 内部シーケンス番号に設定される

  • JMSTimestamp - メッセージが送信された時刻に設定される

    • iPlanet Messaging Server および iBiff では、timestamp パラメータに相当

    • Sun ONE Calendar Server では未使用

  • JMSType - 通知の種類

    • iPlanet Messaging Server および iBiff では evtType パラメータに相当

    • Sun ONE Calendar Server では未使用

  • 追加のプロパティ:

    • イベント参照の各パラメータと値は、ヘッダーではプロパティになる。プロパティ値はすべて String 型

  • 未使用ヘッダーは、 JMSExpiration、JMSpriority、JMSReplyTo


その他

  • MessageSelectors は実装されていない

  • JMS は、永続サブスクライバおよび非永続サブスクライバという概念を使用している。永続サブスクライバは、オフライン、または突然の障害が発生した場合でも、サブスクライバに通知が送信されることを保証する機能。 突然の障害には、ENS サーバがパブリッシャから通知を受信したが、サブスクライバへの配信を行う前にダウンした、などがある

    • 非永続サブスクライバは実装されている

    • 永続サブスクライバも使用できるが、すべての機能は実装できない

    • 永続サブスクライバが実装されているという解釈は、サブスクライバがメッセージを受信して初めてパブリッシャが肯定応答を戻すこと

    • 永続サブスクライバが実装されていないという解釈は、メッセージが持続的ではなく、オフラインサブスクライバに対しては (オンラインになった後も) 配信が行われない こと。特に、JMSRedelivered は常に false に設定されている


前へ     目次     索引     次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.

最終更新日 2002 年 8 月 30 日