ヘッダーをスキップ
Oracle® Fusion Middleware Oracle User Messaging Serviceの管理
12c (12.1.3)
E59412-01
  目次へ移動
目次

前
 
次
 

3 Oracle User Messaging Serviceドライバ

この章では、Oracle User Messaging Service (UMS)ドライバの用途、機能および制限事項について説明します。次のUMSドライバについて説明します。

UMSドライバには、電子メール・サーバーやショート・メッセージ・サービス・センター(SMSC)など、様々なメッセージング・ゲートウェイにUMSを接続するためのプロトコル固有の実装が含まれています。ドライバは、特定のインストールでメッセージング・チャネルの可用性に応じて、個別にデプロイまたはアンデプロイできます。

3.1 電子メール・ドライバ

電子メール・ドライバは、メッセージを送受信します。すべての関連する電子メール・プロトコル(電子メールの送信にはSMTP、電子メールの受信にはIMAPおよびPOP3)がサポートされ、あらゆる標準メール・サーバーと通信できます。セキュリティ・プロトコルのTLSまたはSSLを有効にして電子メールのコンテンツを通信時に保護するためのサポートが実装されています。電子メール・ドライバでは、必要なプロトコルおよびクライアントを実装する標準のJavaコンポーネントであるJavaMail v1.4を使用して、電子メールの作成、アクセス、送受信を実行します。

電子メール・ドライバでは、マルチスレッド設計を使用して複数のメール・ボックスを(IMAPまたはPOP3プロトコルで)ポーリングできます。ポーリングするメール・ボックスが1つしかない場合、この設計のため、そのメール・ボックスで機能するスレッドが1つのみになるという制限事項が1つあります。

3.1.1 スケーラビリティに関する注意事項

電子メール・ドライバは、複数のノードにスケール・アウトできます。

3.1.2 高可用性に関する注意事項

電子メール・サーバーへの接続に失敗すると、電子メール・ドライバは待機して再試行します。待機期間および最大試行回数は構成できます。

3.1.3 互換性に関する注意事項

電子メール・ドライバは、POP3、IMAP4およびSMTPの各プロトコルと互換性があります。表3-1に、電子メール・ドライバのゲートウェイ・ベンダーとそのバージョンを示します。

表3-1 電子メール・ドライバのゲートウェイ・ベンダーとバージョン

ベンダー バージョン

Oracle Beehive

リリース1 (1.4.3)

Oracle Collaboration Suite

10gリリース1 (10.1.2)

Microsoft Exchange

2003

Dovecot (IMAP4/POP3)

0.99.11

sendmail (SMTP)

8.13.1


3.1.4 UMS APIプログラマに対する注意事項

電子メール・ドライバでは、ヘッダー、コンテンツ・タイプと文字セット・エンコーディング、MIMEマルチパートと本文パートを含め、UMSメッセージから電子メール・メッセージへ(およびその逆)の変換を処理します。着信メッセージの場合、UMSメッセージの受信者はそのメールを受信した電子メール・ボックスの電子メール・アドレスです。受信者が電子メールの宛先、CCまたはBCCのフィールドに入っていたかどうかは、Addressメタデータを見るとわかります。

アウトバウンド電子メールが配信できない場合、受信者のメール・サーバーで配信状態通知(DSN)を作成し、送信者の電子メール・アドレスに返信することができます。電子メール・ドライバでは、受信したDSNとDSNで参照しているアウトバウンド電子メールと照合し、そのアウトバウンド・メッセージの"配信失敗"ステータスを作成しようとします。このような場合、配信成功ステータスがしばらくすると配信失敗ステータスに変ることがあります。

3.2 SMS (SMPP)ドライバ

ショート・メッセージ・ピアツーピア(SMPP)プロトコルは、ショート・メッセージ・サービス・センター(SMS-C)、外部ショート・メッセージング・エンティティ(ESME)などのSMSピア・エンティティ間でSMSメッセージを交換するためのTCP/IPベースの業界プロトコルです。UMS SMPPドライバは、ESMEとして実装されます。SMPPプロトコルv3.4に基づいています。

送信機能が有効な場合、SMPPドライバは送信用の送信側システムとしてSMS-CへのTCP接続を1つ開きます。ドライバの受信機能が有効な場合は、受信用の受信ドライバとしてSMS-Cに別の接続を開きます。ドライバとSMS-C間のすべての通信に必要なのは、2つのTCP接続(両方ともドライバが開始する)のみです。

3.2.1 スケーラビリティに関する注意事項

SMPPドライバは、複数のノードにスケール・アウトできます。SMS-Cで同じアカウントによる複数のログインを許可しない場合のみ、制限事項があります。

3.2.2 高可用性に関する注意事項

SMS-Cへの接続が失われると、SMPPドライバは一定の間隔をあけて再接続しようとします。

3.2.3 互換性に関する注意事項

SMPPドライバはSMPPプロトコルv3.4に基づいています。表3-2に、SMPPドライバのゲートウェイ・ベンダーを示します。

表3-2 SMPPドライバのゲートウェイ・ベンダー

ベンダー

Syniverse

Clickatell

Logica CMG

OpenSMPP (simulator)


3.2.4 UMS APIプログラマに対する注意事項

送信テキスト・メッセージは、UMSメッセージの件名とコンテンツを連結したものです。着信SMSのコンテンツは、UMSメッセージのコンテンツに挿入されます。UMSメッセージの件名は空になります。

UMSメッセージのAPI優先度レベルは、次のようにSMPPの優先度に変換されます。

MessagePriorityType.LOWEST、MessagePriorityType.LOW、MessagePriorityType.NORMAL => SMPPの優先度: 0

MessagePriorityType.HIGH => SMPPの優先度: 1

MessagePriorityType.HIGHEST => SMPPの優先度: 2

ただし、SMPPの優先度は、SMPPドライバの構成パラメータ"PriorityAllowed"によって制限されることがあります。

SMPPドライバは、UMS API MessageInfoの"有効期限"データを受け入れ、メッセージとともにその情報をSMS-Cに渡します。

3.3 XMPPドライバ

XMPPドライバは、Extensible Messaging and Presence Protocol (XMPP)を介したリアルタイムIMの場合に、Oracle Fusion Middlewareからエンド・ユーザーへの一方向または双方向のアクセスを提供します。このドライバを使用すると、エンド・ユーザーは、選択したIMクライアントを介して、アラート通知を受信したり、複数のアプリケーションと相互にチャットすることができます。

XMPPは、IM用のオープンXMLベースのプロトコルで、クライアント/サーバー・アーキテクチャで構成されており、ユビキタス電子メール・ネットワークに似ています。受信者は、[username]@domain[/resource]形式のXMPP ID (またはJabber ID (JID))によってアドレス指定されます。UMSでXMPPドライバを使用するには、Jabber/XMPPサーバーへのアクセス権と、ログインに使用するUMS XMPPドライバ・インスタンスのXMPPアカウントが必要です。

XMPPのエンド・ユーザーは、XMPPクライアントを使用してXMPPサーバーに接続して、インスタント・メッセージを他のXMPPユーザーに送信します。ただし、XMPPはIMに利用できる唯一のプロトコル・ネットワークではありません。XMPPには、拡張可能なモジュール型アーキテクチャがあります。これは固有のIMネットワークに統合され、XMPPユーザーは他のネットワーク上のユーザーと通信できるようになります。

3.3.1 スケーラビリティに関する注意事項

XMPPサーバーでは複数のドライバ(つまりクライアント)を使用して同じアカウントにアクセスできないため、XMPPドライバは複数のサーバーにスケール・アウトできません。2つ目のドライバがログインすると、XMPPサーバーでは最初のドライバが切断されます。しばらくして最初のドライバが再接続し、2番目のドライバが切断される、というようになります。この設定では、送信メッセージは、メッセージを処理するドライバがその特定の瞬間に接続している場合のみ機能します。

3.3.2 高可用性に関する注意事項

XMPPサーバーに対する接続問題がある場合、XMPPドライバは、リモート・サーバーに再接続しようとし続けますが、緊密なループを回避するために遅延が大きくなります。

3.3.3 互換性に関する注意事項

XMPPドライバのゲートウェイ・ベンダーとそのバージョンを示します。

表3-3 XMPPドライバのゲートウェイ・ベンダーとバージョン

ベンダー バージョン

ejabberd

2.1.3

jabberd2

2.2.14

jabberd14

1.6.1.1-p1

Oracle Beehive

2.0.1.2.1


3.3.4 UMS APIプログラマに対する注意事項

XMPPには、UMSメッセージの件名コンテンツに対応する件名本文の概念があります。

3.4 拡張ドライバ

拡張ドライバは、UMSで定義されたNotification WebServicesインタフェースを実装する構成済エンドポイントURLにメッセージを送信します。メッセージング・ゲートウェイ(ゲートウェイに対するアダプタ)ではこのWebサービスを実装できるため、UMSで変更しなくてもUMSが拡張されます。

また、拡張ドライバでは、Oracleのワークフローおよびコラボレーション製品の1つであるATKポップアップ・サービスなどのADFビジネス・コンポーネントのWebアプリケーションへのメッセージ送信がサポートされています。実行時に、拡張ドライバでは、構成済エンドポイントURLがNotification WebServiceであるかATKポップアップ・サービスであるかを検出し、それに応じて動作します。

拡張ドライバは、送信メッセージに対してのみ使用されます。

3.4.1 スケーラビリティに関する注意事項

拡張ドライバは、複数のノードにスケール・アウトできます。

3.4.2 高可用性に関する注意事項

ドライバは、WebServicesコール経由で外部システムと通信し、エンドポイントURLのホスト部分は仮想IPです。つまり、外部システムはロード・バランサの背後にあります。

3.4.3 互換性に関する注意事項

該当なし

3.4.4 UMS APIプログラマに対する注意事項

UMSメッセージのコンテンツは、バイナリではなく、テキストにする必要があります。拡張ドライバを使用してUMSで新しいプロトコルを有効にするには、次のタスクを実行します。

  1. MessagingNotifyService WSDL (umsnotify.wsdl)を基に、Webサービス・リスナー・エンドポイントを実装およびデプロイします。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                      xmlns:tns="http://xmlns.oracle.com/ucs/messaging/extension"
                      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                      name="MessagingNotifyService"
                      targetNamespace="http://xmlns.oracle.com/ucs/messaging/extension">
     
        <wsdl:types>
     
        <xsd:schema targetNamespace="http://xmlns.oracle.com/ucs/messaging/extension">
          <xsd:element name="notification">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="messageId" type="xsd:string" minOccurs="0"
     maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>Unique message identifier from User
     Messaging Service.</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="sender" type="xsd:string">
                  <xsd:annotation>
                    <xsd:documentation>The sender address.</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="recipient" type="xsd:string">
                  <xsd:annotation>
                    <xsd:documentation>The recipient address (typically
     username).</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="subject" type="xsd:string" minOccurs="0"
     maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>The subject of the message, if
     available.</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="contentType" type="xsd:string"
     default="text/plain">
                  <xsd:annotation>
                    <xsd:documentation>The MIME type of the message. e.g.
     text/plain, text/html, text/xml.</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="content" type="xsd:string">
                  <xsd:annotation>
                    <xsd:documentation>The main body of the message. Textual
     content only (no binary content).</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
                <xsd:element name="parameters" type="tns:parameter" minOccurs="0"
     maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>Additional key-value pairs. This interface
     does not define any specific key-value pair meanings. Use of such parameters
     is defined on a private basis by particular implementations of this interface.
       </xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:complexType name="parameter">
            <xsd:sequence>
              <xsd:element name="name" type="xsd:string">
                <xsd:annotation>
                  <xsd:documentation>Parameter name</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element name="value" type="xsd:string">
                <xsd:annotation>
                  <xsd:documentation>Parameter value</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
          <xsd:element name="notificationResponse">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="messageId" type="xsd:string" minOccurs="0"
     maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>A message identifier returned in response to
     successfully accepting the message. If returned, the identifier should be
     unique. Note: A fault is raised if the message cannot be
     accepted.</xsd:documentation>
                  </xsd:annotation></xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="notificationFault">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="code" type="xsd:string"/>
                <xsd:element name="message" type="xsd:string"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:schema>
      </wsdl:types>
      <wsdl:message name="notifyRequest">
        <wsdl:part element="tns:notification" name="parameters" />
      </wsdl:message>
      <wsdl:message name="notifyResponse">
        <wsdl:part element="tns:notificationResponse" name="parameters"/>
      </wsdl:message>
      <wsdl:message name="notifyException">
        <wsdl:part element="tns:notificationFault" name="parameters"/>
      </wsdl:message>
      <wsdl:portType name="Notify">
        <wsdl:operation name="invoke">
          <wsdl:input message="tns:notifyRequest"/>
          <wsdl:output message="tns:notifyResponse"/>
          <wsdl:fault message="tns:notifyException" name="NotifyException"/>
        </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="NotifySOAPBinding" type="tns:Notify">
        <soap:binding style="document"
     transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="invoke">
          <soap:operation
            soapAction="http://www.oracle.com/ucs/messaging/extension" />
          <wsdl:input>
            <soap:body use="literal" />
          </wsdl:input>
          <wsdl:output>
            <soap:body use="literal" />
          </wsdl:output>
          <wsdl:fault name="NotifyException">
            <soap:fault name="NotifyException" use="literal"/>
          </wsdl:fault>
        </wsdl:operation>
      </wsdl:binding>
     
      <wsdl:service name="NotifyService">
        <wsdl:port binding="tns:NotifySOAPBinding" name="Notify">
          <soap:address location="http://localhost:8001/NotifyService"/>
        </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>
    
  2. 次のタスクを実行して、拡張ドライバを構成します。

    1. usermessagingdriver-extensionという事前デプロイ済の拡張ドライバ(または新しいデプロイメント)を、UMS (usermessagingserver)が稼働している適切なサーバーにターゲット設定して、ドライバを起動します。

    2. Enterprise Manager Fusion Middleware Controlで、usermessagingserverのホーム・ページに移動します。

    3. 「ユーザー・メッセージング・サービス」をクリックし、「ドライバ・プロパティ」に移動します。

    4. ドライバusermessagingdriver-extensionを選択して編集するか、新しいドライバ・デプロイメントと同じ名前で新しいドライバを作成します。

    5. 「ドライバ固有の構成」で、新しい拡張エンドポイント構成グループを追加してプロパティを指定します。EndpointURLは、手順1で作成したWebサービス・リスナー・エンドポイントへのURLです。Protocolは、通知サポートを追加する新しいメッセージング・チャネルの値(myProtocolなど)です。

    6. 「共通構成」で、Supported Protocolsを、各拡張エンドポイント・グループに定義されているプロトコルのカンマ区切りのリストで更新します。

    7. 「OK」をクリックして、構成を保存します。

      これで、拡張ドライバを使用したUMSでの新しいメッセージング・チャネル(プロトコル)の構成および統合は完了です。

    この新しいチャネル(プロトコル)に通知を送信するには、次のURIアドレッシング形式を使用して、URI配信タイプに受信者を指定する必要があります。

    URI:scheme:scheme-specific-address-value

    ここで、schemeはプロトコルです。URI配信タイプはオプションです。たとえば、拡張ドライバがプロトコルmyProtocolをサポートするように構成されている場合、アプリケーションでmyProtocol:john.doe@example.com宛のメッセージを作成できます。

    また、エンド・ユーザーは、「ユーザー通信プリファレンス」UIで新しいチャネル・タイプの新しいメッセージング・チャネルを作成することによって、メッセージング・プリファレンスを宣言することもできます。ユーザー・プリファレンスは、アプリケーションがユーザーベースの通知(つまり、USER:usernameの形式の受信者宛)を送信する場合にのみ適用されます。

3.5 Twitterドライバ

Twitterドライバは、Twitter APIサーバーと通信するUMSドライバです。Twitterサーバーとの双方向のメッセージング・サービスを提供します。そのため、Twitterドライバを使用すると、アプリケーション・ユーザーはTwitterフィードを公開し、これに対する応答を受信できます。

Twitterドライバの特徴は次のとおりです。

UMSをファイアウォールの後方で使用する場合、WebLogic Serverのプロキシ設定を構成する必要があります。WebLogic Serverのプロキシ設定の構成に関する詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』のシステム・プロパティを使用したプロキシ・サーバーの指定に関する項を参照してください。

3.5.1 スケーラビリティに関する注意事項

Twitterドライバは、複数のノードにスケール・アウトできます。

3.5.2 高可用性に関する注意事項

Twitterサーバーに対する接続問題がある場合、Twitterサーバーが正常な状態に戻るまで、Twitterドライバは4分に1回から16分に1回の低頻度でサーバーをポーリングします。正常動作では、ドライバは、1分に1回から4分に1回の頻度でTwitterサーバーをポーリングします。

Twitterでは、そのサービスの使用状況を積極的に監視します。ユーザーのリミットに達すると、理由を示すエラー・メッセージが表示され、そのクライアントがリクエストしたサービスの提供が許可されないことがあります。リミットはすべて現在のリミットのページに示されています。Twitterサーバーによって使用を制限されると、まずドライバは30分待機した後、4分に1回から16分に1回の低頻度でサーバーをポーリングします。

3.5.3 互換性に関する注意事項

Twitterドライバは12.1.2.0.0で導入されました。

3.5.4 UMS APIプログラマに対する注意事項

送信メッセージの場合、つまり、ツイートの投稿やダイレクト・メッセージの送信時、ツイート・テキストはUMSメッセージのコンテンツと連結されたUMSメッセージの件名です。着信ツイートおよびダイレクト・メッセージの場合、テキストはUMSメッセージのコンテンツに挿入されます。

表3-4に、アウトバウンド・メッセージに使用されるメタデータを示します。

ネームスペース: "UMS-TWITTER"

表3-4 Twitterドライバでアウトバウンド・メッセージに使用されるメタデータ

名前 説明 備考

retweet_id

リツイートされるメッセージのTwitter ID。このIDは、メッセージ/ツイートを受信すると入手できます。

このメタデータは、受信者のAddressオブジェクトに対するものです。

reply_to_id

返信するメッセージのTwitter ID。このIDは、メッセージ/ツイートを受信すると入手できます。

このメタデータは、受信者のAddressオブジェクトに対するものです。

geo_location

latitude,longitudeとして表される緯度と経度。latitudeとlongitudeはJavaプリミティブ・データ型doubleに変換されます。

このメタデータは、Messageオブジェクトに対するものです。