プライマリ・コンテンツに移動
Oracle® Fusion Middlewareテクノロジ・アダプタの理解
12c (12.2.1)
E69958-02
目次へ移動
目次

前
次

8 Oracle JCA Adapter for JMS

この章では、Oracle BPELプロセスまたはOracle MediatorコンポーネントとJava Messaging Service間の通信を可能にする、Oracle JCA Adapter for JMS (Oracle JMSアダプタ)の使用方法について説明します。

この章の内容は次のとおりです。

8.1 Oracle JMSアダプタの概要

JMSアーキテクチャでは、多数のメッセージ・サーバーに対して1つのクライアント・インタフェースが使用されます。JMSモデルには、Point-to-Pointおよびパブリッシュ・サブスクライブという2つのメッセージ・ドメインがあります。Point-to-Pointドメインでは、メッセージはキューを介して交換され、各メッセージは1人の受信者にのみ配信されます。パブリッシュ・サブスクライブ・モデルでは、メッセージはトピックに送信され、複数のサブスクライブ・クライアントによって読み取られます。

JMSアダプタ・サンプル・ファイルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

この項には次のトピックが含まれます:

8.1.1 Oracle BPEL Process Managerとの統合

JCA 1.5リソース・アダプタとBPEL Process Managerを双方向で統合するために、JCAバインディング・コンポーネントが使用されています。JCAバインディング・コンポーネントは規格に準拠しており、基盤となるJCA相互作用をWebサービスとして公開するためのWeb Service Invocation Framework (WSIF)テクノロジが使用されています。

Oracle JMSアダプタのアーキテクチャ、アダプタとOracle BPEL Process Manager (Oracle BPEL PM)の統合およびアダプタのデプロイの詳細は、「アダプタとOracle Application Serverコンポーネントの統合」を参照してください。

8.1.2 Oracle JMSアダプタとOracle Mediatorの統合

Oracle JCAアダプタをサポートしており、それぞれのインバウンドおよびアウトバウンドのアダプタ・サービスを定義できます。インバウンド・アダプタ・サービスでは、外部メッセージ・システムからデータが受信されてXMLメッセージに変換されます。アウトバウンド・アダプタ・サービスでは、XMLメッセージが特定のアダプタのネイティブ・フォーマットに変換され、データがターゲット・アプリケーションに送信されます。

サービスの場合、使用してJMSキューまたはトピックからのメッセージを送受信できます。

Oracle BPEL PMの後継であり、このガイドのほとんどの部分およびサンプルはOracle BPEL PMを使用することを想定しています。ただし、アダプタの動作はOracle BPEL PMでも同じです。この章でOracle BPEL PMに言及している箇所は、置き換えてかまいません。

8.2 Oracle JMSアダプタの機能

Oracle JMSアダプタには次の特徴があります。

  • JMSバージョン1.0.2bがベース

  • 汎用Oracle JMSアダプタ

    任意のJMSプロバイダで機能します。ただし、Oracle JMSアダプタの場合、AQ JMS (JMSプロバイダOJMS 8.1.7、9.0.1.4および9.2)、TIBCO JMS、IBM WebSphere MQSeries (IBM MQSeries JMS 6.0)、Weblogic JMS、ApacheおよびActive MQで動作確認されています。その他のプロバイダの動作保証についての追加情報は、Oracleサポートに問い合せてください。

  • JMSトピックおよびキューをサポートしています。

  • バイト、テキストおよびマップ・メッセージ・タイプをサポートしています。

    これらのデータ・タイプは、このリリースでのみサポートされています。アダプタ構成ウィザードにより、実行時のネイティブ・データ・ペイロードの消費にネイティブ・フォーマット・ビルダー・ウィザードが提供されます。ネイティブ・フォーマット・ビルダー・ウィザードでは、基礎となるネイティブ・データのXSD定義が作成されます。

  • JMSヘッダーおよびプロパティをサポートしています。

  • WebLogic Serverの順序単位機能をサポートしています。

    WebLogic Serverの順序単位機能では、JMSメッセージ・プロデューサや単体として動作するメッセージ・プロデューサのグループが、複数のメッセージを1つの単位にグループ化してメッセージを作成順に処理することが可能になります。単一のメッセージのメッセージ処理は、メッセージが確認応答、コミット、回復またはロールバックされたときに完了します。メッセージのメッセージ処理が完了するまでは、その順序単位の残りの未処理メッセージがブロックされます。

    この拡張により、SOA JMSアダプタでWebLogic Serverの順序単位サポートが有効化されます。SOA JMSアダプタを介して生成されたメッセージによって、ユーザーは特定の順序単位を指定できるようになります。

  • jca.message.encodingプロパティをサポートしています。

    Oracle JMSアダプタでは、インバウンド・ペイロードとアウトバウンド・ペイロードのjca.message.encodingプロパティがサポートされます。jca.message.encodingプロパティがadapter.jms.encodingプロパティおよびnxsd:encoding属性とともに使用される場合、jca.message.encodingプロパティはadapter.jms.encodingプロパティよりも優先され、nxsd:encoding属性の優先度は最も低くなります。nxsd:encoding値にはUTF-8が指定可能で、通常は相互運用性とUnicodeサポートのためにこれをお薦めします。ただし、Java Runtime Environmentでサポートされている任意の有効なエンコーディングを指定できます。サポートされているエンコーディングの完全なリストは、http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.htmlを参照してください。エンコーディングは、アダプタ・プロキシ・メタデータに関連付けられた(N)XSDで指定できます。たとえば、nxsd:encoding="iso-8859-1"のように属性を指定できます。

    jca.message.encodingプロパティは、composite.xmlで定義されたエンドポイントとしてサポートされています。このプロパティは、アダプタ構成ウィザードの「プロパティ」タブを使用するか、composite.xmlファイルを編集して定義できます。jca.message.encodingプロパティは、インバウンド相互作用とアウトバウンド相互作用の両方で正規化されたメッセージ・プロパティとして渡すことができます。

    次のコード・スニペットは、インバウンド・サービスに関するメッセージ・エンコーディングについてcomposite.xmlファイルに値を設定する一例です。

     <service name="jms_inbound" ui:wsdlLocation="jms_inbound.wsdl">
        <interface.wsdl
       interface="http://xmlns.oracle.com/pcbpel/adapter
                   /jms/utf8/jcamessageencoding/
         jms_inbound#wsdl.interface(Consume_Message_ptt)"/>
        <binding.jca config="jms_inbound_jms.jca">
        <property name="jca.message.encoding" 
                      type="xs:string" many="false"
                    override="may">GBK</property>
      </binding.jca> 
    </service>
    

    次のコード・スニペットは、アウトバウンド・サービスに関するメッセージ・エンコーディングについてcomposite.xmlファイルに値を設定する一例です。

    <reference name="jms_outbound" ui:wsdlLocation=
             “jms_outbound.wsdl">
        <interface.wsdl
         interface="http://xmlns.oracle.com/pcbpel/adapter/jms/utf8/jcamessageencoding/
         jms_outbound#wsdl.interface(Produce_Message_ptt)"/>
        <binding.jca config="jms_outbound_jms.jca">
        <property name="jca.message.encoding" type="xs:string" many="false"
                    override="may">GBK</property> 
      </binding.jca> 
    </reference>
    
  • JMSメッセージ・セレクタのサポート

    JMSトピックおよびキューへのサブスクライブ中のフィルタ処理の実行用にJMSメッセージ・セレクタをサポートしています。このパラメータは、JMSヘッダーおよびプロパティのセクションに存在するフィールドに基づくメッセージをフィルタ処理するためのSQL 92言語に基づいています。

  • DOM2準拠

    Oracle JMSアダプタでは、DOM2仕様に準拠するドキュメント・オブジェクトを処理および生成できます。

  • 正規化されたメッセージのサポート。

    ヘッダーの操作と伝播は、重要なビジネス統合メッセージング要件です。Oracle BPEL PM、メディエータOracle JCAおよびOracle B2Bでは、顧客の統合要件を解決する場合にヘッダー・サポートに広範に依存しています。たとえば、メッセージ・ヘッダーを介して伝播させることで、ファイル名をソース・ディレクトリからターゲット・ディレクトリに保存できます。また、アウトバウンドOracle JMSアダプタでは、correlationIdおよびJMSReplyToのアドレスをJMSヘッダーとして伝播することで、非同期リクエスト/レスポンスが容易になります。Oracle BPEL Process ManagerとMediatorでは、様々なUIサポート・レベルでヘッダーにアクセスし、操作して設定できます。

    詳細は、「アダプタ内での相関サポート」を参照してください。

    正規化されたメッセージのヘッダーの伝播

    正規化されたメッセージは、プロパティとペイロードという2つの部分のみを持つように簡素化されています。通常、プロパティはスカラー型の名前/値ペアです。既存の複雑なヘッダーがプロパティに収まるように、プロパティはスカラー型にフラット化されます。

    設計時のヘッダーの操作

    複雑なプロパティは事前に決定されているため、設計時にヘッダーを操作する際のユーザー操作は合理化されています。メディエータまたはOracle BPELデザイナでは、なんらかの予約済キーワードを使用してヘッダーを操作できます。たとえば、現在、メディエータ・デザイナでは、次の式を使用してインバウンドOracleファイル・アダプタfileNameヘッダーにアクセスできます。

    $nmproperty.InboundFileHeaderType.fileName
    

    ただし、この方法はユーザー入力に基づいて動的に生成されるプロパティに対処していません。たとえば、Oracle AQアダプタ・ウィザードでは、AQオブジェクトからの一部のフィールドをヘッダーとして伝播できます。この選択内容に基づいてヘッダー定義が生成されます。これらの定義はあらかじめ決まらないため、あらかじめ決められたプロパティ定義のリストでは対応できません。動的プロパティのヘッダー操作は、定義するまで設計できません。この制限に対応するには、必要なすべてのサービス(コンポジット・エントリ・ポイント)と参照を生成する必要があります。この制限は、動的プロパティを生成する必要のあるサービスにのみ適用されます。動的プロパティが生成された後、コンポジットごとに特定の場所で取得される必要があります。その後にのみ、Oracle MediatorまたはOracle BPELデザイナで動的プロパティを操作できます。

  • 永続JMSサブスクライバの指定をサポートしています。

  • JMSパブリッシャの永続および非永続モードをサポートしています。

  • SolarisでのAQJMSに対するアウトバウンド再試行機能はサポート対象外

    注意:

    Oracle JMSアダプタを使用してAQ-JMSプロバイダに接続する際に、AQの宛先をホストするデータベースが10.1.0.4の場合、データベース・サーバーが停止すると、アウトバウンド方向のアダプタ再試行メカニズムはデータベース・サーバーへの再接続に失敗します。これは、クライアントJDBCとojdbc14.jarとの問題によるものです。これを解決するには、10.1.0.4のJDBCドライバをダウンロードし、$MIDTIER_ORACLE_HOME/jdbcにあるライブラリ(特にojdbc14.jar)を置き換えて、中間層で使用する必要があります。この問題の解決方法の詳細は、MetaLink Note 317385.1を参照してください。

  • JMS APIでは、JMSパブリッシャによって送信される3つの確認情報を指定します。

    • DUPS_OK_ACKNOWLEDGE: メッセージの重複に関連のないコンシューマ用

    • AUTO_ACKNOWLEDGE: セッションがメッセージの受信を自動的に確認

    • CLIENT_ACKNOWLEDGE: クライアントがメッセージの確認メソッドを呼び出してメッセージを確認

  • メッセージ・サイズの追跡のサポート

    Oracle JMSアダプタはメッセージ・サイズ対応です。Oracle JMSアダプタではメッセージ・サイズが計算され、JCAバインディング・コンポーネントにレポートされます。JCAバインディング・コンポーネントにより公開されるサイズ関連APIは、レポート処理に使用できます。

  • JMSアダプタのMapMessageデータ型でのMapMessageサポートの構成

    MapMessageは、名前/値ペアを送信するために使用されます。名前は文字列で、値はJavaプリミティブ型です。このエントリには、名前を指定して順次的またはランダムにアクセスできます。エントリの順序は定義されません。これはメッセージから継承し、マップ・メッセージ本文を追加します。

    Oracle JMSアダプタでは、MapMessageの処理がサポートされます。現在では、JmsMapMessageConsumeActivationSpecおよびJmsMapMessageProduceInteractionSpecという新しいActivationSpecおよびInteractionSpecプロパティがサポートされています。

    次の使用例がサポートされています。

    • 使用例1。JMS MapMessageオブジェクト全体がペイロードとして処理されます。

      PayloadEntryプロパティとAttachmentListプロパティが両方とも定義されていない場合は、JMS MapMessage全体がXMLに変換され、そのXMLファイルがペイロードとして転送されます。この使用例の場合、PayloadEntryプロパティとAttachmentListプロパティは両方ともオプションです。変換には、次のスキーマが使用されます。

      <schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/jms/MapMessage"
              xmlns="http://www.w3.org/2001/XMLSchema"
              xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/jms/MapMessage"
              elementFormDefault="qualified">
       <element name="MapMessage">
        <complexType>
         <choice maxOccurs="unbounded">
          <element name="entry">
           <complexType>
            <simpleContent>
             <extension base="string">
              <attribute name="name" type="string"/>
              <attribute name="dt" type="string"/>
             </extension>
            </simpleContent>
           </complexType>
          </element>
         </choice>
        </complexType>
       </element>
      	</schema>
      

    属性nameは、JMS MapMessageエントリの名前/値ペアの名前部分です。

    属性dtには、次のいずれか1つの文字列値を指定できます。

    • Boolean

    • Byte

    • Short

    • Integer

    • Long

    • Float

    • Double

    • 文字列

    • Char

    • ByteArray

    • 使用例2。MapMessageエントリ(名前/値ペア)がペイロードとして処理されます。

    PayloadEntryプロパティでは、ペイロードとして使用されるJMS MapMessageエントリ名(処理される必要がある名前/値ペアを参照)を指定します。PayloadEntryではなくAttachmentListプロパティが定義されている場合は、ペイロードを添付として送信することもできます。この使用例の場合、PayloadEntryプロパティまたはAttachmentListプロパティのいずれかを指定する必要がありますが、両方は指定しないでください。

    他のすべてのMapMessageエントリは、jca.jms.Map.xxxxにより識別されるアダプタ・プロパティに変換されます。xxxxは、JMS MapMessageエントリの名前です(名前/値ペア)。

    JMS MapMessageサンプルは、「開発者および管理者のサンプル・コード」ページから「ミドルウェアおよびツール」の下にある最新のSOAサンプル・コードにアクセスして、次のサンプルを参照します: adapters-jms-104-wlsjms-mapmessage。

  • エンタープライズ情報システム(EIS)の資格証明のサポート

    Oracle JMSアダプタでは、EISとのアウトバウンド接続の確立時の、エンタープライズ情報システム(EIS)の資格証明(ユーザー名やパスワードなど)の保護がサポートされています。Oracle JMSアダプタのユーザー名とパスワードは、Oracle WebLogic Serverのコンテナ管理のサインオンを使用して保護できます。

    エンタープライズ情報システム(EIS)の資格証明の保護のサポートの詳細は、「エンタープライズ情報システムの資格証明の保護」を参照してください。

  • 大きなペイロードのストリーミングのサポート

    Oracle JMSアダプタには、ストリーム・ペイロードのサポートが用意されています。この機能を有効化すると、ペイロードはメモリーDOM内のSOAランタイムで操作されるかわりにデータベースにストリーミングされます。この機能は、大きなペイロードの処理中に使用できます。ストリーム・ペイロードのサポートを有効化するには、Oracle JDeveloperの「消費操作のパラメータ」ページで消費操作のパラメータを定義する際に必ず「ストリーミングの有効化」チェック・ボックスを選択します。「ストリーミングの有効化」チェック・ボックスを選択すると、次の例に示すように、対応するブール・プロパティEnableStreamingがそれぞれの.jcaファイルに定義されているActivationSpecプロパティに追加されます。EnableStreamingプロパティが存在しない場合は、デフォルト値のfalseとみなされます。

    <activation-spec className="oracle.tip.adapter.jms.inbound.
                      JmsConsumeActivationSpec">
      <property name="DestinationName" value="jms/DemoInQueue"/>
      <property name="UseMessageListener" value="false"/>
      <property name="PayloadType" value="TextMessage"/>
      <property name="EnableStreaming" value="true"/>
    </activation-spec>
    
  • トランザクションのサポート

    送信または受信されたメッセージを1つの単位として扱うことで、アプリケーションは、1つのトランザクションで発行および消費のメッセージのグループを調整できます。アプリケーションがトランザクションをコミットすると、そのトランザクション内で受信したすべてのメッセージが、JMSプロバイダにより削除されます。そのトランザクション内で送信したメッセージは、1つの単位としてすべてのJMSコンシューマに配信されます。アプリケーションがトランザクションをロールバックすると、そのトランザクション内で受信したメッセージはメッセージ・システムに戻され、送信したメッセージは破棄されます。Oracle JMSアダプタはJMSトランザクションをサポートします。JMSで処理されたセッションは、そのセッション内に配置されたトランザクションをサポートします。JMSで処理されたセッションのトランザクションは、そのセッション以外には影響しません。

  • エラー処理のサポート

    エラー処理については、「エラー処理」を参照してください。

  • 複数のコンシューマ・スレッドのサポート

    Oracle JMSアダプタは、アクティブ化エンドポイント・プロパティadapter.jms.receive.threadsをサポートしています。アダプタとエンタープライズ情報システム(EIS)間のインバウンド・メッセージ・フロー用として複数のポーラー・スレッドを生成するには、composite.xmlでこのプロパティを設定することをお薦めします。これにより、複数のポーラー・スレッドがラウンド・ロビン形式でメッセージをデキューするため、パフォーマンスが向上します。これは、分散シナリオでもサポートされています。

  • パフォーマンス・チューニングのサポート

    Oracle JMSアダプタはパフォーマンス・チューニングをサポートしています。詳細は、「Oracle JCAアダプタ・チューニング・ガイド」および「Oracle JCAアダプタのプロパティ」を参照してください。

注意:

Oracle JMSアダプタをEJBまたはJMSクライアントのプログラムで使用することはできません。

8.3 Oracle JMSアダプタの概念

メッセージ機能はプログラム間の通信を可能にするメカニズムです。メッセージは、あるアプリケーションが別のアプリケーションに送信する構造化データです。メッセージ指向ミドルウェア(MOM)は、スケーラブルなエンタープライズ・メッセージング機能をサポートするインフラストラクチャです。MOMにより、高速で信頼できる非同期の通信、保証付きメッセージ配信、受信通知およびトランザクション制御が実現されます。

JMSは、エンタープライズ・メッセージング・システムのメッセージの発行、送信および受信を目的として開発されたSun Javaインタフェースです。JMSはJMSベンダーが実装するAPIです。オラクル社では、WLS JMSとOracleアドバンスト・キューに基づいたOracle JMSの2つのJMS実装を提供しています。JMSプロデューサによりJMSメッセージが作成され、JMSコンシューマによってJMSメッセージが消費されます。

JMSでは、Point-to-Point(キュー)およびパブリッシュ・サブスクライブ(トピック)という2つのメッセージ・パラダイムをサポートしています。

この項には次のトピックが含まれます:

8.3.1 Point-to-Point

Point-to-Pointメッセージでは、メッセージは消費されるまでキューに格納されます。1つ以上のプロデューサがキューに書き込み、1つ以上のコンシューマがキューからメッセージを抽出します。JMSコンシューマにより、メッセージの消費後に確認情報が送信されるため、キューからメッセージがパージされます。

8.3.2 パブリッシュ/サブスクライブ

パブリッシュ・サブスクライブ・メッセージでは、プロデューサがメッセージをトピックにパブリッシュし、コンシューマが特定のトピックにサブスクライブします。複数のパブリッシャが同じトピックを公開でき、複数のコンシューマが同じトピックにサブスクライブできます。プロデューサによってトピックに公開されたすべてのメッセージは、そのトピックにサブスクライブしたすべてのコンシューマによって受信されます。デフォルトでは、サブスクライバがメッセージを受信できるのはアクティブなときのみです。ただし、JMS APIでは、サブスクライバが稼働中ではなくても、パブリッシュされたメッセージをコンシューマが受信できる永続サブスクリプションをサポートしています。永続サブスクリプションでは、コンシューマがアクティブではないときに送信されたメッセージを受信するために、コンシューマを一意のIDで登録します。これらのメッセージはJMSプロバイダにより保存され、コンシューマが再度アクティブになった際に送信されるか、メッセージが失効した場合には記憶域からパージされます。JMSプロデューサは、永続モードまたは非永続モードに設定できます。非永続モードではメッセージは保存されず、非永続サブスクリプションにのみ使用できます。

Oracle WebLogic Serverで永続サブスクリプションの操作を必要とするシナリオでは、次の例に示すように、ClientIDプロパティを定義済のコネクタ・ファクトリが必要です。

<FactoryProperties>ClientID=uniquename</FactoryProperties>

複数の永続サブスクライバを定義する際には、それぞれ一意のClientIDプロパティを指定して複数のコネクタ・ファクトリを定義する必要があります。Oracle WebLogic Serverではclientidのバインドが1回しか許可されないため、他のアダプタ相互作用(インバウンド・メッセージの処理に使用する場合のアウトバウンド相互作用など)には同じコネクタ・ファクトリを使用しないように注意してください。ClientIdを定義済のコネクタ・ファクトリをインバウンドで使用して着信メッセージを処理するシナリオの場合、アウトバウンド・アダプタ相互作用には異なるコネクタ・ファクトリを使用する必要があります。

注意:

BPELパートナ・リンクで使用されない永続サブスクライバは、手動で削除する必要があります。これらの永続サブスクリプションは自動的に削除されません。

JMS APIでは、メッセージ消費のための同期および非同期通信の両方をサポートしています。同期の場合、コンシューマはトピックまたはキューのreceive()メソッドを明示的に呼び出します。非同期の場合、JMSクライアントによりトピックまたはキューにメッセージ・リスナーが登録され、メッセージはそのリスナーのonMessage()メソッドを呼び出すことで配信されます。

8.3.3 宛先、接続、コネクション・ファクトリおよびセッション

宛先プロパティには、JMSキューまたはトピックのアドレス情報が含まれます。接続は、JMSプロバイダへの物理接続を表します。コネクション・ファクトリは、JMS接続の作成に使用されます。セッションは、キューまたはトピックの宛先、JMSプロデューサ、およびJMSコンシューマのオブジェクトの作成に使用されます。

8.3.4 JMSメッセージの構造

JMSメッセージには、必須の標準ヘッダー要素、オプションのプロパティ要素およびオプションの標準ペイロード要素があります。ペイロードはテキスト・メッセージ、バイト・メッセージ、マップ・メッセージ、ストリーム・メッセージまたはオブジェクト・メッセージのいずれかになります。プロパティ要素はJMSプロバイダ固有で、JMSプロバイダごとに異なります。

8.3.5 Oracle JMSアダプタのヘッダー・プロパティ

Oracle JMSアダプタのヘッダー・プロパティの詳細は、Oracle JMSアダプタのプロパティ」を参照してください。

8.3.6 サード・パーティ・サービス・プロバイダとの接続

JMSアダプタは、TIBCO、IBM MQ Seriesおよびその他の動作保証されているサード・パーティ・サービス・プロバイダと通信できます。これらのサービス・プロバイダが停止した後に再起動した場合、JMSアダプタは、これらのサービス・プロバイダに正常に接続し、保留中のメッセージを処理できます。

適切に接続されるようにするには、次の手順を実行します。

  1. SOAおよびWebLogicコンソールの起動スクリプトであるsetDomainEnv.shで、次を設定します。

    -Dweblogic.transaction.blocking.commit=false

    および

    -Dweblogic.transaction.blocking.rollback=false
    
  2. WebLogicコンソールで、-->「domain」--- >「JTA」----- >「詳細」---->「CompletionTimeoutSeconds」に進み、CompletionTimeoutSecondsを0に設定します。

8.3.6.1 バインディング

プロパティ

adapter.jms.DistributedDestinationConnectionEveryMemberは、JMSアダプタのサービスのバインディング・プロパティとして使用可能です。

このプロパティには、ブール値[true | false]を使用できます。デフォルト値はtrueです。

trueの場合、JMSアダプタでは、分散宛先の各メンバーのコンシューマ/サブスクライバが作成されます。falseに設定すると、JMSアダプタでは、分散宛先のローカル・メンバーのみのコンシューマ/サブスクライバが作成されます。JMSアダプタがリモート・クラスタまたはリモート・ドメインのサーバーの分散宛先に接続されている場合、プロパティ

adapter.jms.DistributedDestinationConnectionEveryMemberを常にtrueに設定する必要があります。JMSアダプタがローカル・クラスタの分散宛先に接続している場合、このプロパティはtrueまたはfalseに設定できます。trueに設定すると、JMSアダプタは以前と同じままとなります(つまり、分散宛先ごとにコンシューマが作成されます)。falseに設定すると、JMSアダプタでは、ローカル・メンバーのコンシューマ/サブスクライバのみが作成されます。

JDeveloperのユーザー・インタフェースでは、このプロパティがサービス側のバインディング・プロパティとして表示されません。このため、次に示すように、<service>/<binding.jca>タグの下にこのプロパティを手動で追加する必要があります。

<property name="adapter.jms.DistributedDestinationConnectionEveryMember" type="xs:string" many="false" override="may">false</property>

8.4 Oracle JMSアダプタの使用例

この項には次のトピックが含まれます:

8.4.1 Oracle JMSアダプタの構成

次の使用例では、Oracle JMSアダプタの構成手順を説明し、結果のWSDLファイルおよび関連するweblogic-ra.xmlファイルを検証します。

この項には次のトピックが含まれます:

8.4.1.1 アプリケーションおよびSOAプロジェクトの作成

最初に、SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従って新規アプリケーションとSOAプロジェクトを作成します。

  1. JDeveloperを開きます。
  2. 「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。

    図8-1 に示すように、「汎用アプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。

  3. 「アプリケーション名」フィールドにアプリケーションの名前を入力します。例: AQQueue2Queue
  4. 「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。

    図8-1 「汎用アプリケーションの作成 - アプリケーションの名前付け」ページ

    図8-1の説明が続きます
    「図8-1 「汎用アプリケーションの作成 - アプリケーションの名前付け」ページ」の説明
  5. 「次へ」をクリックします。

    図8-2 に示すように、「プロジェクトの名前付け」ダイアログが表示されます。

  6. 「プロジェクト名」フィールドにわかりやすい名前を入力します。例: AQQueue2Queue
  7. 「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。

    図8-2 「汎用アプリケーションの作成 - 汎用プロジェクトの名前付け」ページ

    図8-2の説明が続きます
    「図8-2 「汎用アプリケーションの作成 - 汎用プロジェクトの名前付け」ページ」の説明
  8. 「次へ」をクリックします。

    図8-3 に示すように、「汎用アプリケーションの作成 - SOA設定の構成」ページが表示されます。

    図8-3 「汎用アプリケーションの作成 - SOA設定の構成」ページ

    図8-3の説明が続きます
    「図8-3 「汎用アプリケーションの作成 - SOA設定の構成」ページ」の説明
  9. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して、「終了」をクリックします。

    新規アプリケーションおよびSOAプロジェクトが作成されました。これにより、SOAコンポジットが自動的に作成されます。

    図8-4 に示すように、「BPELプロセスの作成」ページが表示されます。

    図8-4 「BPELプロセスの作成」ページ

    図8-4の説明が続きます
    「図8-4 「BPELプロセスの作成」ページ」の説明
  10. 「名前」フィールドにBPELプロセスの名前を入力します。この例では、デフォルト名を使用します。
  11. 「テンプレート」リストで「サービスを後で定義」を選択し、「OK」をクリックします。

    BPELプロセスが作成されました。

8.4.1.2 アダプタ構成ウィザードを使用した構成

アダプタ構成ウィザードを使用して構成するには、次の手順を実行します。

  1. 「コンポーネント」ウィンドウで、「SOA」を選択します。
  2. 「サービス・アダプタ」リストから「JMSアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    「アダプタ構成ウィザード」が表示されます。

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

    図8-5 に示すように、アダプタ構成ウィザードの「サービス名」ページが表示されます。

    図8-5 「サービス名」ページ

    図8-5の説明が続きます
    「図8-5 「サービス名」ページ」の説明
  4. サービス名を入力して「次へ」をクリックします。

    図8-6 に示すように、アダプタ構成ウィザードの「JMSプロバイダ」ページが表示されます。

    図8-6 「アダプタ構成ウィザード - JMSプロバイダ」ページ

    図8-6の説明が続きます
    「図8-6 「アダプタ構成ウィザード - JMSプロバイダ」ページ」の説明
  5. 操作を1つ選択します。この例では「Oracle Weblogic JMS」を選択します。
    • Oracle Enterprise Messaging Service (OEMS): WebLogicサービスまたはアドバンスト・キューイング・メッセージ・サービスと統合できます。

    • サード・パーティ: このオプションを選択すると、サード・パーティのプロバイダと統合できます。

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

    アダプタ構成ウィザードの「サービス接続」ページが表示されます。

  7. 設計時環境とデプロイ先サーバーの間の接続性を確立する必要があります。

    「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明した手順を実行して、アプリケーション・サーバー接続を作成します。

  8. 「次」を選択します。図8-7 に示すように、「アダプタ・インタフェース」ページが表示されます。
  9. 「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択します。

    図8-7 「アダプタ構成ウィザード - アダプタ・インタフェース」ページ

    図8-7の説明が続きます
    「図8-7 「アダプタ構成ウィザード - アダプタ・インタフェース」ページ」の説明
  10. 「次へ」をクリックします。

    アダプタ構成ウィザードの「操作」ページが表示されます。

  11. 「メッセージ消費」「メッセージ発行」「リクエスト/リプライ」または「同期消費メッセージ」を選択します。この例では「メッセージ消費」を選択します。

    図8-8 に示すように、操作名は自動的に入力されます。

    図8-8 「アダプタ構成ウィザード - 操作」ページ

    図8-8の説明が続きます
    「図8-8 「アダプタ構成ウィザード - 操作」ページ」の説明

    「メッセージ消費」オプションを選択すると、JMS宛先からのインバウンド・メッセージをアダプタで消費(受信)できます。

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

    図8-9 に示すように、アダプタ構成ウィザードの「消費操作のパラメータ」ページが表示されます。

    図8-9 「アダプタ構成ウィザード - 消費操作のパラメータ」ページ

    図8-9の説明が続きます
    「図8-9 「アダプタ構成ウィザード - 消費操作のパラメータ」ページ」の説明
  13. 次のフィールドの値を入力します。
    • 接続先名

      メッセージの送信元であるJMSキューまたはトピックのJNDI名です。このフィールドは編集できません。「参照」をクリックしてキューまたはトピックを参照する必要があります。使用しているJMSプロバイダのタイプに基づいて、キューまたはトピックを選択します。

      詳細は、次の項を参照してください。

    • メッセージ本文のタイプ

      サポートされている値は「TextMessage」「BytesMessage」または「MapMessage」です。このリリースでは、「StreamMessage」メッセージ・タイプはサポートされていません。

    • 永続サブスクライバID

      このフィールドはオプションです。永続サブスクライバを設定する場合には、永続サブスクライバIDが必要です。接続が解除されるとサブスクライバは通常メッセージを失いますが、永続サブスクライバは再接続の際に保存されているメッセージをダウンロードします。

      注意:

      JMSプロバイダがOracle Weblogic JMSまたはOracleアドバンスト・キューイング・メッセージ・サービスの場合、トピックが選択されている場合にのみ、永続サブスクライバ・オプションが表示されます。ただし、JMSプロバイダがサード・パーティの場合、永続サブスクライバ・オプションは常に表示されます。

    • メッセージ・セレクタ

      このフィールドもオプションです。ヘッダーおよびプロパティの情報に基づいてメッセージをフィルタ処理します。メッセージ・セレクタ・ルールはブール式です。式がtrueの場合には、メッセージが消費されます。式がfalseの場合には、メッセージが拒否されます。

      たとえば、次のような式を入力できます。

      • JMSPriority > 3。これに基づき、優先度が3より高いメッセージが消費され、それ以外のメッセージはすべて拒否されます。

      • JMSType = 'car' AND color = 'blue' AND weight > 2500

      • Country in ('UK', 'US', 'France')。

    • MessageListenerを使用

      このフィールドは、デフォルトで常に「False」に設定されます。

    • JNDI名

      アダプタが管理モードで確実に実行されるように、JNDI名で指定した値がweblogic-ra.xmlファイルに存在する必要があります。

    注意:

    この例ではメッセージ消費操作が示されています。メッセージ発行操作の場合は、このページは異なります。この部分の手順の違いは、「メッセージ発行手順」を参照してください。

    適切なパラメータを入力したら、「次へ」をクリックします。

  14. 図8-10 に示すように、アダプタ構成ウィザードの「メッセージ」ページが表示されます。このページでの設定により、メッセージ・ペイロードの適切なスキーマが定義されます。

    次のいずれかを実行できます。

    • 「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択します。これにより残りのフィールドが使用できなくなります。

    • ネイティブ・フォーマットの定義プロセスを支援するネイティブ・フォーマット・ビルダー・ウィザードを起動するには、「ネイティブ・フォーマットのスキーマの定義」をクリックします。

    • スキーマ・ファイルURLのパスを入力します(またはパスを参照します)。

    次に、最後に示した、スキーマ・ファイルURLを参照するオプションの手順を示します。

    図8-10 「アダプタ構成ウィザード - メッセージ」ページ

    図8-10の説明が続きます。
    「図8-10 「アダプタ構成ウィザード - メッセージ」ページ」の説明
  15. 「参照」ボタンをクリックします。

    図8-11 に示すように、「タイプ・エクスプローラ」ナビゲーション・ツリーを含む「タイプ・チューザ」ダイアログが表示されます。

  16. ツリーを参照し、適切なスキーマ・タイプを選択して「OK」をクリックします。

    図8-11 「タイプ・チューザ」ダイアログからのスキーマの選択

    図8-11の説明が続きます。
    「図8-11 「タイプ・チューザ」ダイアログからのスキーマの選択」の説明

    今度は、図8-12 に示すように、「スキーマ・ファイルのURL」フィールドおよび「スキーマ要素」フィールドが入力された状態で、「メッセージ」ページが再表示されます。

    図8-12 入力が完了した「メッセージ」ダイアログ

    図8-12の説明が続きます。
    「図8-12 入力が完了した「メッセージ」ダイアログ」の説明
  17. 「次へ」をクリックします。

    「終了」ページが表示されます。このボックスには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。

  18. 「終了」をクリックします。

    composite.xmlページが表示されます。

8.4.1.3 生成されるファイル

アダプタ構成ウィザードにより次のコンポジット・ファイルが生成されます。

<composite name="AQQueue2Queue"revision="1.0"
           label="2007-09-04_11-58-50_914"mode="active"state="on"
           xmlns="http://xmlns.oracle.com/sca/1.0"           xmlns:xs="http://www.w3.org/2001/XMLSchema"           xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"           xmlns:orawsp="http://schemas.oracle.com
                 /ws/2006/01/policy">
  <import namespace="http://xmlns.oracle.com/pcbpel/adapter
               /jms/Inbound/"location="Inbound.wsdl"
               importType="wsdl"/>
  <import namespace="http://xmlns.oracle.com/pcbpel/
               adapter/jms/Outbound/"location="Outbound.wsdl"
              importType="wsdl"/>
  <service name="Inbound">
    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/
          adapter/jms/Inbound/#wsdl.interface 
            (Consume_Message_ptt)"/>
    <binding.jca config="Inbound_jms.jca"/>
  </service>
  <component name="BPELProcess1">
    <implementation.bpel src="BPELProcess1.bpel"/>
  </component>
  <reference name="Outbound">
    <interface.wsdl interface=
                "http://xmlns.oracle.com/pcbpel/adapter
                /jms/Outbound/#wsdl.interface (Produce_Message_ptt)"/>
    <binding.jca config="Outbound_jms.jca"/>
  </reference>
  <wire>
    <source.uri>Inbound</source.uri>
    <target.uri>BPELProcess1/Inbound</target.uri>
  </wire>
  <wire>
    <source.uri>BPELProcess1/Outbound</source.uri>
    <target.uri>Outbound</target.uri>
  </wire>
</composite>

次のコード・セグメントでは、アダプタの名前、様々な必要なスキーマの場所およびその他の定義ファイルが定義されています。

 <import namespace="http://xmlns.oracle.com/pcbpel
          /adapter/jms/Inbound/"location="Inbound.wsdl"
                 importType="wsdl"/>
  <import namespace="http://xmlns.oracle.com
                   /pcbpel/adapter/jms/Outbound/"location=
                   "Outbound.wsdl" importType="wsdl"/>

このコード・セグメントでは必要なネームスペースをインポートしています。

<definitions name="Inbound" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/jms/Inbound/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/jms/Inbound/" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:imp1="http://xmlns.oracle.com/pcbpel/samples/expense">
    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema">
            <import namespace="http://xmlns.oracle.com/pcbpel/samples/expense" schemaLocation="xsd/expense.xsd"/>
        </schema>
    </types>
    <message name="ExpenseRecord_msg">
        <part name="ExpenseRecord" element="imp1:ExpenseRecord"/>
    </message>
    <portType name="Consume_Message_ptt">
        <operation name="Consume_Message">
            <input message="tns:ExpenseRecord_msg"/>
        </operation>
    </portType>

このコード・セグメントでは、メッセージ・タイプ、メッセージ名およびパートナ・リンクのポート・タイプが定義されています。

<adapter-config name="dequeue" adapter="Jms Adapter   xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  <connection-factory location="eis/wls/Queue" UIConnectionName="wls3"   
UIJmsProvider="WLSJMS" adapterRef=""/>
  <endpoint-activation portType="Consume_Message_ptt" operation="Consume_
Message">
    <activation-spec 
className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
      <property name="DestinationName" value="jms/DemoInQueue"/>
      <property name="UseMessageListener" value="false"/>
      <property name="PayloadType" value="TextMessage"/>
    </activation-spec>
  </endpoint-activation>
</adapter-config>

8.4.1.4 weblogic-ra.xmlファイル

weblogic-ra.xmlファイルでは、JMSコネクション・ファクトリのエンドポイントが定義されます。コネクション・ファクトリには、各エンドポイントの構成プロパティが含まれます。後続の項で示すように、エンドポイントは、タイプの異なる接続に対応するために追加されます。次の例に、汎用weblogic-ra.xmlファイルの内容を示します。

<connection-instance>    
  <jndi-name>eis/wls/Queue</jndi-name>
    <connection-properties>
       <properties>
           <property>
               <name>ConnectionFactoryLocation</name>
               <value>weblogic.jms.XAConnectionFactory</value>
           </property>
           <property>
               <name>FactoryProperties</name>
               <value></value>
           </property>
           <property>
               <name>AcknowledgeMode</name>
               <value>AUTO_ACKNOWLEDGE</value>
           </property>
           <property>
              <name>IsTopic</name>
              <value>false</value>
           </property>
           <property>
               <name>IsTransacted</name>
               <value>false</value>
           </property>
           <property>
               <name>Username</name>
               <value></value>
           </property>
           <property>
               <name>Password</name>
               <value></value>
           </property>
           </properties>
      </connection-properties>
</connection-instance>
8.4.1.4.1 Oracle WebLogic Server管理コンソールを使用した新規接続の作成

新規接続は、Oracle WebLogic Server管理コンソールを使用して作成する方法もあります。次の手順に従って、Oracle WebLogic Server管理コンソールで新規接続を作成します。

  1. Oracle WebLogic Server管理コンソール: http://servername:portnumber/consoleにナビゲートします。
  2. 必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。

    Oracle WebLogic Server管理コンソールのホーム・ページが表示されます。

  3. 「ドメイン構造」ペインで「デプロイメント」を選択します。

    Oracle WebLogic Server管理コンソールの「デプロイメントのサマリー」ページが表示されます。

  4. 「デプロイメント」で、デプロイしたJMSアダプタをクリックします。たとえば、JmsAdapterをクリックします。

    Oracle WebLogic Server管理コンソールの「JmsAdapterの設定」ページが表示されます。

  5. 「構成」タブをクリックし、「アウトバウンド接続プール」タブをクリックします。

    「アウトバウンド接続プールの構成表」が表示されます。

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

    「新しいアウトバウンド接続の作成」ページが表示されます。

  7. デフォルトのアウトバウンド接続グループを選択して「次へ」をクリックします。
  8. 「次へ」をクリックします。
  9. 「JNDI名」フィールドに、新規接続インスタンスの取得に使用するJNDI名を入力します。例: eis/wls/Queue

    JNDIフィールドには任意の名前を指定できます。ただし、JDeveloperで消費操作または発行操作のパラメータを定義する際に同じJNDI名を使用する必要があります。

  10. 「終了」をクリックします。

    「デプロイメント・プラン保存アシスタント」ページが表示されます。

    構成の変更内容は、新規デプロイメント計画に格納する必要があります。

  11. 「パス」フィールドで、デプロイメント計画ファイルのパスを選択または入力します。パスは「.xml」で終了する必要があります。
  12. 「OK」をクリックします。

    新規接続が作成されました。この操作の完了後に、作成したプロパティが正しいかどうかを確認する必要があります。

  13. 「JmsAdapterの設定」ページで、「構成」タブをクリックし、「プロパティ」タブをクリックします。

    作成した接続はこのページに表示されます。この値が正しいかどうかを確認します。たとえば、サード・パーティのJMSサーバーに接続する場合は、「コネクション・ファクトリの位置」フィールドにサード・パーティのJMSサーバーに適用可能な正しい値が設定されていることを確認します。

    注意:

    この例では、Oracle WebLogic Server管理コンソールを使用してOracle JMSアダプタ用の新規接続を作成しました。他のアダプタ用の接続を作成するには、同じ手順に従う必要があります。ただし、ステップ4では接続の作成対象として適切なアダプタを選択します。

  14. 保存」をクリックします。
8.4.1.4.2 サード・パーティのJMSプロバイダの追加

weblogic-ra.xmlファイルでFactoryPropertiesパラメータに値を指定することで、アダプタで非Web Logic Server JMSおよび非AQJMSの接続インスタンスにサード・パーティのJMSプロバイダを使用することを指定できます。具体的には、ThirdPartyJMSProvider値をFactoryPropertiesパラメータに指定できます。このプロパティは、WebLogic Serverにアダプタをデプロイする場合にのみ必要です。

この値をtrueに設定した場合、JMSアダプタではJMSメッセージを処理するコンシューマの作成にDestinationAvailabilityListenerを使用しません。デフォルトはfalseです。次のスニペットのようなコードを使用する必要があります。

<property>
    <name>FactoryProperties</name>
    <value>ThirdPartyJMSProvider=true</value>
</property> 

注意:

WebLogic Serverに事前に移入されているすべての接続インスタンスは変更を反映するため、それらのインスタンスに対してそれ以上チューニングは不要です。新規の非WLS JMSまたは非AQJMSプロバイダ・アクセスが必要な場合にのみ、新規接続インスタンスを追加する必要があるため、ThirdPartyJMSProviderプロパティが必要です。

8.4.1.5 メッセージ発行手順

メッセージ発行操作では、特に「アダプタ構成ウィザードを使用した構成」のステップ13において、定義の手順が異なります。消費操作パラメータを指定するかわりに、次の発行操作パラメータを指定します。これにより、JMS宛先へのアウトバウンド・メッセージをアダプタで発行(送信)できます。図8-13 に、「発行操作のパラメータ」ページを示します。

  • 接続先名:

    メッセージの配信先にする必要のあるJMSキューまたはトピックのJNDI名。入力する名前は、使用するJMSプロバイダのタイプに基づきます。

    接続先名の詳細は、次の項を参照してください。

  • メッセージ本文のタイプ:

    サポートされている値は、TextMessageBytesMessageおよびMapMessageです。このリリースでは、StreamMessageメッセージ・タイプはサポートされていません。

  • 配信モード:

    値は「永続」または「非永続」です。永続配信モードでは、今後の使用に備えて、永続サブスクライバによりメッセージを保存するパブリッシャである永続JMSパブリッシャを指定します。永続サブスクライバは、「アダプタ構成ウィザードを使用した構成」のステップ15の対応するフィールドに永続サブスクライバIDのあるメッセージ消費です。非永続サブスクライバでは、アダプタがアクティブではないときに発行されたメッセージは失われます。永続サブスクライバでは、永続パブリッシャに保存されていたメッセージをダウンロードするため、すべてのメッセージを受信するために常にアクティブである必要はありません。

  • 優先度:

    優先度の値を選択します。9は最も高い優先度を、0は最も低い優先度を表します。デフォルトは4です。

  • TimeToLive:

    メッセージが失効して消費できなくなるまでの期間です。

  • 順序単位

    このパラメータは、選択されたJMSプロバイダがWebLogic Server JMSプロバイダの場合にのみ適用されます。これにより、メッセージ・プロデューサや単体として動作するメッセージ・プロデューサのグループが、複数のメッセージを1つの単位にグループ化してメッセージを作成順に処理することが可能になります。単一のメッセージのメッセージ処理は、メッセージが確認応答、コミット、回復またはロールバックされたときに完了します。メッセージのメッセージ処理が完了するまでは、その順序単位の残りの未処理メッセージがブロックされます。このUnit of orderプロパティにより、メッセージの作成時にMessageProducerの順序単位値を設定できます。この使用例は、『Oracle® Fusion Middleware Oracle WebLogic Server JMSのプログラミング』のJMSアダプタでのWLS JMS順序単位の使用に関する項およびメッセージ順序単位に関する項を参照してください。

  • JNDI名

    このフィールドでは、JMS接続のJNDI名を指定できます。JMSアダプタのデプロイ済インスタンスのデプロイメント・ディスクリプタは、JMSアダプタが実行時にJNDI宛先にアクセスするために必要な一連の構成プロパティとともにこのJNDI名に関連付けられている必要があります。

図8-13 「発行操作のパラメータ」ページ

例8-13の説明が続きます
「図8-13 「発行操作のパラメータ」ページ」の説明

8.4.2 TIBCO JMSを使用したOracle JMSアダプタの構成

この項では、直接接続と非直接接続用にTibco JMSを使用する構成方法について説明します。

注意:

各サブセクションにすべての情報が記載されているわけではないため、構成を変更する前にこの項全体をお読みください。TIBCO Enterprise Message Serviceに関連する情報は、TIBCO Enterprise Message Serviceユーザー・ガイド、ソフトウェア・リリース6.3(2012年2月)に基づいています。最新の更新は、TIBCOのドキュメントを参照してください。

また、次の説明のEMS_HOMEは、Tibco Enterprise Message Serviceのインストール・ディレクトリを表しています。

8.4.2.1 非SSL接続での事前構成済のTibcoコネクション・ファクトリの使用

TIBCO Enterprise Message Service管理ツールを使用して、コネクション・ファクトリおよびキュー/トピックを作成します。

  1. 例:
    create factory QueueConnectionFactory queue url=tcp://localhost:7222 
    create queue TibcoQueue 
    
  2. Weblogic管理コンソールを開き、Tibcoサーバーに接続する既存の接続プールを変更します。「デプロイメント」→「JMSAdapter」→「構成」→「oracle.tip.adapter.jms.IJmsConnectionFactory」→「アウトバウンド接続プール」→「eis/tibjms/Queue」にナビゲートします
  3. ConnectionFactoryLocationQueueConnectionFactoryに設定します。これは、先ほどTIBCO Enterprise Message Service管理ツールを使用して作成したコネクション・ファクトリの名前です。
  4. FactoryPropertiesを次のように設定します(読みやすいように複数行に区切ってあります)。
    java.naming.factory.initial=com.tibco.tibjms.naming.   TibjmsInitialContextFactory; 
    java.naming.provider.url=tibjmsnaming://localhost:7222; 
    java.naming.security.principal=<user name on Tibco server>; 
    java.naming.security.credentials=<password>; 
      ThirdPartyJMSProvider=true 
    
  5. また、独自の接続プールを作成するには、AS11gR1SOA/soa/connectors/JmsAdapter.rarweblogic-ra.xmlファイルを次の例に示すように変更します。(この図は、トピック接続プールを作成する例としても使用できます。)

    例 - 独自の接続プールの作成

    <connection-instance> 
         <jndi-name>eis/tibjms/QueueConnectionPool</jndi-name> 
             <connection-properties> 
                 <properties> 
                     <property> 
                         <name>ConnectionFactoryLocation</name> 
                         <value>QueueConnectionFactory</value> 
                     </property> 
                     <property> 
                         <name>FactoryProperties</name> 
                         <value>java.naming.factory.initial=com.
                              tibco.tibjms.naming.
                              TibjmsInitialContextFactory;
                                java.naming.provider.
                                     url=tibjmsnaming://localhost:7222;
                                        java.naming
                                 .security.principal=<user name on
                                            Tibco server>;
                                 java.naming.security.credentials=
                                            <password>;
                                     ThirdPartyJMSProvider=true 
                             </value> 
                         </property> 
                         <property> 
                         <name>AcknowledgeMode</name> 
                         <value>AUTO_ACKNOWLEDGE</value> 
                     </property> 
                     <property> 
                         <name>IsTopic</name> 
                         <value>false</value> 
                     </property> 
                     <property> 
                         <name>IsTransacted</name> 
                         <value>true</value> 
                     </property> 
                     <property> 
                         <name>Username</name> 
                         <value></value> 
                     </property> 
                     <property> 
                         <name>Password</name> 
                         <value></value> 
                     </property> 
                 </properties> 
             </connection-properties> 
     </connection-instance> 
     
  6. これらの変更後に、JMSAdapter接続プールのデプロイメントを更新します。EMS_HOME/lib/tibjms.jar<SOA Installation>/user_projects/domains/<DOMAIN_NAME>/libディレクトリにコピーします。Weblogicサーバーを再起動します。
  7. デプロイするプロジェクト内で、JMSアダプタのJMS jcaファイルは次のようになります。DestinationNameの値は、TIBCO Enterprise Message Service管理ツールを使用して作成したキューであるTibcoQueueです。
    <connection-factory UIJmsProvider="THIRDPARTY" 
                              location="eis/tibjms/Queue" 
                          UIConnectionName="SOADEV"/> 
      <endpoint-interaction portType="Produce_Message_ptt" 
                         operation="Produce_Message"> 
         <interaction-spec 
           className="oracle.tip.adapter.jms.                  outbound.JmsProduceInteractionSpec"> 
           <property name="TimeToLive" value="0"/> 
           <property name="PayloadType" value="TextMessage"/> 
           <property name="DeliveryMode" value="Persistent"/> 
           <property name="DestinationName" value="TibcoQueue"/> 
         </interaction-spec> 
       </endpoint-interaction> 
    
  8. メッセージの公開後に、TIBCO Enterprise Message Service管理ツールを使用して、次のように、Tibcoキュー内のメッセージ数を確認できます。
    show queue TibcoQueue 
      Queue:                 TibcoQueue 
      Type:                  static 
      Properties:            *prefetch=5 
      JNDI Names:            <none> 
      Bridges:               <none> 
      Receivers:             0 
      Pending Msgs:          2, (2 persistent) 
      Delivered Msgs:        0 
      Pending Msgs Size:     1.2 Kb, (1.2 Kb persistent)
     

8.4.2.2 非SSL接続での動的に作成されたTibcoコネクション・ファクトリの使用

通常、事前構成済のコネクション・ファクトリが推奨されるメカニズムですが、Tibcoは、動的に作成されたコネクション・ファクトリのサポートも提供しています。これらを使用するには、次の手順を実行します。

  1. TIBCO Enterprise Message Service管理ツールを使用して、キューまたはトピックを作成します。
    create queue TibcoQueue
    
  2. ConnectionFactoryLocationcom.tibco.tibjms.TibjmsQueueConnectionFactoryに設定します。
  3. FactoryPropertiesServerUrl=tcp://<HOST>:<PORT>;UserName=<USERNAME>;UserPassword=<PASSWORD>に設定します
  4. Tibcoサーバーに接続するのにユーザー名とパスワードが必要ない場合は、ユーザー名とパスワードのフィールドを削除します。
  5. JMSアダプタ接続プールのデプロイメントを保存および更新します。
  6. EMS_HOME/lib/tibjms.jarおよびEMS_HOME/lib/jms-2.0.jarを<SOA Installation>/user_projects/domains/<DOMAIN_NAME>/libディレクトリにコピーします。
  7. 管理対象のWeblogicサーバーを再起動します。
  8. デプロイするプロジェクトで、JMSアダプタのJMS jcaファイルは次の例のようになります。

    DestinationNameの値は、TIBCO Enterprise Message Service管理ツールを使用して作成したキューであるTibcoQueueです。

    例 - 動的に作成されたコネクション・ファクトリを持つJMSアダプタのJMS jcaファイル

     <connection-factory UIJmsProvider="THIRDPARTY" 
     location="eis/tibjmsDirect/Queue" UIConnectionName="SOADEV"/> 
      <endpoint-interaction portType="Produce_Message_ptt" 
     operation="Produce_Message"> 
         <interaction-spec 
     className="oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec"> 
           <property name="TimeToLive" value="0"/> 
           <property name="PayloadType" value="TextMessage"/> 
           <property name="DeliveryMode" value="Persistent"/> 
           <property name="DestinationName" value="TibcoQueue"/> 
         </interaction-spec> 
       </endpoint-interaction> 
    

8.4.2.3 SSL接続での事前構成済のTibcoコネクション・ファクトリの使用

SSL接続に事前構成済のTibcoコネクション・ファクトリを使用できます。これを行うには、SSLをサポートするようにTibcoサーバーを構成する必要があります。

  1. EMS_HOME/binの下にcertsディレクトリを作成します。
  2. サーバーSSL証明書をEMS_HOME/bin/certsディレクトリにコピーします。Tibcoは、テストの目的で、自己署名付きサーバー証明書および秘密鍵をEMS_HOME\bin\samples\certsに提供しています。
  3. EMS_HOME/bin/tibemsd.confで、次の行を追加します。
        listen = ssl://localhost:7243 
        ssl_server_identity = certs/server.cert.pem 
        ssl_server_key = certs/server.key.pem 
        ssl_password = password 
        listen = tcp://localhost:7222 
    

    これらの行によって、TCPおよびSSLリスニング・ポートが明示的に設定され、サーバー側の3つの必要なSSLパラメータ(identity、private keyおよびpassword)が指定されます。

  4. ファイルを保存し、TIBCO Enterprise Message Serviceサーバーを終了します。
  5. -ssl_debug_traceオプションのtibemsd -ssl_debug_traceを使用して、TIBCO EMSサーバーを起動します。
  6. サーバーがサーバー・コンソールのSSLポートでリスニングしていることを確認します。
     2014-04-29 16:14:20.997 Secure Socket Layer is enabled, using OpenSSL 0.9.8y5 
     Feb 2013 
     2014-04-29 16:14:20.998 Accepting connections on ssl://localhost/[::]:7243. 
     2014-04-29 16:14:20.998 Accepting connections on 
     ssl://localhost/0.0.0.0:7243. 
     2014-04-29 16:14:20.998 Accepting connections on tcp://localhost/[::]:7222. 
     2014-04-29 16:14:20.998 Accepting connections on 
     tcp://localhost/0.0.0.0:7222. 
    
  7. TIBCO Enterprise Message Service管理ツールを使用して、SSLコネクション・ファクトリを作成し、ホスト検証を無効にして(クライアント・ホストを検証する場合はホスト検証を無効にしないでください)、キューを作成します。
     create factory SSLQueueConnectionFactory queue url=ssl://localhost:7243 
     setprop factory SSLQueueConnectionFactory ssl_verify_host=disabled 
     create queue TibcoQueue 
    
  8. Weblogic管理コンソールを開き、Tibcoサーバーに接続する既存の接続プールを変更します。「デプロイメント」→「JMSAdapter」→「構成」→「oracle.tip.adapter.jms.IJmsConnectionFactory」→「アウトバウンド接続プール」→「eis/tibjms/Queue」にナビゲートします。
  9. ConnectionFactoryLocationSSLQueueConnectionFactoryに設定します。これは、先ほどTIBCO Enterprise Message Service管理ツールを使用して作成したコネクション・ファクトリの名前です。
  10. FactoryPropertiesを次のように設定します(読みやすいように複数行に区切ってあります)。
    java.naming.factory.initial=com.tibco.tibjms.naming.     TibjmsInitialContextFactory; 
     java.naming.provider.url=tibjmsnaming://localhost:7243; 
     java.naming.security.principal=<user name on Tibco server>; 
     java.naming.security.credentials=<password>;ThirdPartyJMSProvider=true; 
     com.tibco.tibjms.naming.security_protocol=ssl; 
     com.tibco.tibjms.naming.ssl_enable_verify_host=false; 
     com.tibco.tibjms.naming.ssl_vendor=j2se-default 
     
  11. これにより、クライアントは証明書なしで接続できるようになります。デプロイした接続プールを保存および更新します。
  12. EMS_HOME\libに配置されている次のjarファイルを<SOA Installation>/user_projects/domains/<DOMAIN_NAME>/libディレクトリにコピーします。
    tibcrypt.jar 
    slf4j-api-1.4.2.jar 
    slf4j-simple-1.4.2.jar 
    tibjms.jar 
    
  13. Weblogic Serverを再起動します。
  14. デプロイするプロジェクトで、JMSアダプタのJMS jcaファイルは次の例のようになります。

    DestinationNameの値は、TIBCO Enterprise Message Service管理ツールを使用して作成したキューであるTibcoQueueです。

    例 - 事前構成済TIBCOコネクション・ファクトリ・シナリオのJMS jcaファイル

    <connection-factory UIJmsProvider="THIRDPARTY" location="eis/tibjms/Queue" 
               UIConnectionName="SOADEV"/> 
      <endpoint-interaction portType="Produce_Message_ptt" 
           operation="Produce_Message"> 
         <interaction-spec 
             className="oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec"> 
           <property name="TimeToLive" value="0"/> 
           <property name="PayloadType" value="TextMessage"/> 
           <property name="DeliveryMode" value="Persistent"/> 
           <property name="DestinationName" value="TibcoQueue"/> 
         </interaction-spec> 
       </endpoint-interaction> 
    
  15. クライアント証明書検証を有効にするには、EMS_HOME\bin\tibemsd.confを変更して、クライアント証明書の署名に使用されたCA証明書を追加する必要があります。たとえば、ssl_server_trusted = certs/test_client_ca.pemの場合、test_client_ca.pemは、クライアントのcertificate test_client_identity.p12の署名に使用される、Tibcoが提供するテストCA証明書です。ファイルは両方ともEMS_HOME\bin\samples\certsにあります。変更されたEMS_HOME\bin\tibemsd.confは、次のようになります。
    listen = ssl://localhost:7243 
     ssl_server_identity = certs/server.cert.pem 
     ssl_server_key = certs/server.key.pem 
     ssl_password = password 
     ssl_server_ciphers = all 
     ssl_server_trusted = certs/test_client_ca.pem 
     listen = tcp://localhost:7222 
    
  16. -ssl_debug_traceオプションのtibemsd -ssl_debug_traceを使用して、TIBCO EMSサーバーを起動します
  17. FactoryPropertiesを変更します(読みやすいように複数行に区切ってあります)。
    java.naming.factory.initial=com.tibco.tibjms.naming.   TibjmsInitialContextFactory; 
     java.naming.provider.url=tibjmsnaming://localhost:7243; 
     java.naming.security.principal=<user name on Tibco server>; 
     java.naming.security.credentials=<password>; 
     ThirdPartyJMSProvider=true; 
     com.tibco.tibjms.naming.security_protocol=ssl; 
     com.tibco.tibjms.naming.ssl_enable_verify_host=false; 
     com.tibco.tibjms.naming.ssl_vendor=j2se-default; 
     com.tibco.tibjms.naming.ssl_identity=<EMS_HOME>/bin/certs/     test_client_identity.p12; 
     com.tibco.tibjms.naming.ssl_trusted=<EMS_HOME>/bin/certs/test_client_ca.pem; 
     com.tibco.tibjms.naming.ssl_ciphers=all
     
  18. これらの変更によって、クライアントは、サーバー・コンソールに表示される次のような証明書を使用してサーバーに接続できます。
     2014-04-30 13:39:47.485 Peer certificate: 
     2014-04-30 13:39:47.485 Certificate=[/C=US/ST=California/L=us-english/O=Test 
     Company/OU=test_client 
     Unit/CN=test_client/emailAddress=test_clienttestcompany.com] 
     Issuer=[/C=US/ST=California/L=us-english/O=Test Company/OU=test_client_root 
     Unit/CN=test_client_root/emailAddress=test_client_roottestcompany.com] 
     2014-04-30 13:39:47.485 Peer certificate chain: 
     2014-04-30 13:39:47.485 Certificate=[/C=US/ST=California/L=us-english/O=Test 
     Company/OU=test_client_root 
     Unit/CN=test_client_root/emailAddress=test_client_roottestcompany.com] 
     Issuer=[/C=US/ST=California/L=us-english/O=Test Company/OU=test_client_root 
     Unit/CN=test_client_root/emailAddress=test_client_roottestcompany.com] 
     2014-04-30 13:39:47.485 SSL accepted cipher=RC4-SHA 
    
  19. SSL接続のみを受け入れるようにサーバーを制限するには、EMS_HOME\bin\tibemsd.confに次を追加します。
     ssl_require_client_cert = enable 
    

8.4.2.4 SSL接続での動的に作成されたTibcoコネクション・ファクトリの使用

Oracle JMSアダプタでは、現在、この機能はサポートされていません。

8.4.3 IBM WebSphere MQ JMSを使用したOracle JMSアダプタの構成

この項では、非XAおよびXAデータソース用にIBM WebSphere MQ JMSを使用する構成方法について説明します。

8.4.3.1 非XAデータソース

次の手順を実行します。

  1. 次のファイルを<SOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>/libフォルダにコピーします。
    • /<YOUR-MQSERIES-INSTALL-LOCATION>/java/lib/com.ibm.mq.jar

    • /<YOUR-MQSERIES-INSTALL-LOCATION>/java/lib/com.ibm.mqjms.jar

    • /<YOUR-MQSERIES-INSTALL-LOCATION>/java/lib/dhbcore.jar

  2. 次の例に示すように、AS11gR1SOA/soa/connectors/JmsAdapter.rarにあるweblogic-ra.xmlファイルを変更してコネクタ・ファクトリを構成します。
    <connection-instance>
    <jndi-name>eis/webspheremq/Queue</jndi-name>
       <connection-properties>
          <properties>
             <property>
               <name>ConnectionFactoryLocation</name>
               <value>com.ibm.mq.jms.
                    MQQueueConnectionFactory</value>
             </property>
             <property>
                <name>FactoryProperties</name>
                <value>QueueManager=<QUEUEMANAGER>;
                        TransportType=1;HostName= 
                   <YOUR-HOST>;Port=<YOUR-PORT>;Channel=<CHANNEL>;
                      ThirdPartyJMSProvider=true      
    </value>
              </property>
              <property>
                  <name>AcknowledgeMode</name>
                  <value>AUTO_ACKNOWLEDGE</value>
              </property>
              <property>
                 <name>IsTopic</name>
                 <value>false</value>
              </property>
              <property>
                 <name>IsTransacted</name>
                 <value>true</value>
             </property>
             <property>
                 <name>Username</name>
                 <value><USERNAME></value>
             </property>
             <property>
                <name>Password</name>
                <value><PASSWORD></value>
            </property>
            </properties>
        </connection-properties>
    </connection-instance>
    

    デフォルトの<USERNAME>および<PASSWORD>がそれぞれMUSR_MQADMINおよびpasswordであることに注意してください。

    または、Oracle WebLogic Server管理コンソールを使用して新規コネクション・ファクトリを構成するには、「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。

8.4.3.1.1 マルチインスタンス・キュー・マネージャの使用

IBM WebSphere MQ JMSに接続し、マルチインスタンス・キュー・マネージャを使用するようにJMSアダプタを構成できます。

これを行うには、カスタム・プロパティconnectionNameListを使用します。このプロパティを使用して、様々なインスタンスの名前とポートを指定できます。

QueueManager=QM1;TransportType=1;
ConnectionNameList=slj01aml.us.domain.com(141
4),acb113114.us.domain.com(1414);
Channel=SYSTEM.DEF.SVRCONN;ThirdPartyJMSProv
ider=true;ClientReconnectOptions=0 

8.4.3.2 XAデータソース

次の手順を実行します。

  1. 次のファイルを<SOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>/libフォルダにコピーします。
    • /<YOUR-MQSERIES-INSTALL-LOCATION>/java/lib/com.ibm.mq.jar

    • /<YOUR-MQSERIES-INSTALL-LOCATION>/java/lib/com.ibm.mqjms.jar

    • /<YOUR-MQSERIES-INSTALL-LOCATION>/java/lib/dhbcore.jar

    • com.ibm.mqetclient.jar

      このIBM拡張トランザクション・クライアント(com.ibm.mqetclient.jar)は、IBM MQ Seriesの7.5In v7.5よりも前のバージョンのMQ Seriesに必要です。このcom.ibm.mqetclient.jar JARファイルは、XAトランザクションの実行には必要ありません。XAトランザクションは、このJARファイルなしで適切に機能します。

  2. 次の例に示すように、AS11gR1SOA/soa/connectors/JmsAdapter.rarにあるweblogic-ra.xmlファイルを変更してコネクタ・ファクトリを構成します。
    <connection-instance>
    <jndi-name>eis/webspheremq/Queue</jndi-name>
       <connection-properties>
            <properties>
               <property>
                  <name>ConnectionFactoryLocation</name>
                  <value>com.ibm.mq.jms.                    MQXAQueueConnectionFactory</value>
               </property>
               <property>
                  <name>FactoryProperties</name>
                  <value>QueueManager=<QUEUEMANAGER>;                  TransportType=1; 
                     HostName=<YOUR-HOST>;
                           Port=<YOUR-PORT>;                  Channel=<CHANNEL>;    |            
                           ThirdPartyJMSProvider
                                  =true</value>
               </property
               <property>
                 <name>AcknowledgeMode</name>
                 <value>AUTO_ACKNOWLEDGE</value>
               </property>
               <property>
                 <name>IsTopic</name>
                 <value>false</value>
               </property
               <property>
                  <name>IsTransacted</name
                  <value>false</value>
               </property
               <property>
                  <name>Username</name>
                  <value><USERNAME></value>
               </property>
               <property>
                  <name>Password</name>
                  <value><PASSWORD></value>
                </property>
             </properties>
        </connection-properties>
    </connection-instance>
    

    デフォルトの<USERNAME>および<PASSWORD>がそれぞれMUSR_MQADMINおよびpasswordであることに注意してください。

    または、Oracle WebLogic Server管理コンソールを使用して新規コネクション・ファクトリを構成するには、「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。

8.4.4 Active MQ JMSを使用したOracle JMSアダプタの構成

この項では、Active MQ JMSを使用するOracle JMSアダプタの構成方法について説明します(非XAのみ)。

次の手順を実行します: 次のファイルを<SOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>/libフォルダにコピーします。

  • /<YOUR-ACTIVEMQ-INSTALL-LOCATION>//activemq-all-5.8.0.jar

次の例に示すように、AS11gR1SOA/soa/connectors/JmsAdapter.rarにあるweblogic-ra.xmlファイルを変更してコネクタ・ファクトリを構成します。


<connection-instance>
      <jndi-name>eis/activemq/Queue</jndi-name>
      <connection-properties>
      <properties>
            <property>
                  <name>ConnectionFactoryLocation</name>
                  <value>org.apache.activemq.
                         ActiveMQConnectionFactory</value>
            </property>
            <property>
                  <name>FactoryProperties</name>                   <value>BrokerURL=tcp://<YOUR-HOST>:
                  <YOUR-PORT>;ThirdPartyJMSProvider=true</value>
            </property>
            <property>
                  <name>AcknowledgeMode</name>
                  <value>AUTO_ACKNOWLEDGE</value>
            </property>
            <property>
                  <name>IsTopic</name>
                  <value>false</value>
            </property>
            <property>
                  <name>IsTransacted</name>
                   <value>true</value>
            </property>
            <property>
                  <name>Username</name>
                  <value></value>
           </property>
           <property>
                 <name>Password</name>
                 <value></value>
            </property>
      </properties>
      </connection-properties>
</connection-instance>

または、Oracle WebLogic Server管理コンソールを使用して新規コネクション・ファクトリを構成するには、「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。

ActiveMQ Series v5.8の場合、XAサポートがあり、XA用に構成されるコネクション・ファクトリは、org.apache.activemq.ActiveMQXAConnectionFactoryです。これはJMSアダプタの現在のリリースで動作確認済です。

8.4.5 WebLogic Server JMSテキスト・メッセージ

Oracle BPEL PMのこのWebLogic Server JMSテキスト・メッセージの使用例では、Oracle JMSアダプタでWebLogic Server JMSキューとの間のエンキューおよびデキューを実行する方法について説明します。

メディエータ・ビジネス・プロセスのWLS JMSテキスト・メッセージ・シナリオの場合、adapters-jms-101-wlsjms-textmessageusingqueuesサンプルに含まれているartifacts.zipファイルの次のファイルが必要です。

  • artifacts/schemas/expense.xsd

adapters-jms-101-wlsjms-textmessageusingqueuesサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

この項には次のトピックが含まれます:

8.4.5.1 前提条件の確認

Oracle BPEL PMのWebLogic Server JMSテキスト・メッセージの使用例では、前提条件として次のタスクを実行する必要があります。

8.4.5.1.1 Oracle WebLogic Server管理コンソールでのキューの作成

次の手順を実行して、この使用例で必要となるキューを作成します。

  1. Oracle WebLogic Server管理コンソール: http://servername:portnumber/consoleにナビゲートします
  2. 必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。

    図8-14 に示すように、Oracle WebLogic Server管理コンソールのホーム・ページが表示されます。

    図8-14 Oracle WebLogic Server管理コンソールのホーム・ページ

    例8-14の説明が続きます
    「図8-14 Oracle WebLogic Server管理コンソールのホーム・ページ」の説明
  3. 「ドメイン構造」ペインで、「サービス」「メッセージング」「JMSモジュール」の順にナビゲートします。

    Oracle WebLogic Server管理コンソールの「JMSモジュール」ページが表示されます。

  4. 既存のモジュールのいずれかをクリックします。この例では、「SOAJMSModule」をクリックします。

    Oracle WebLogic Server管理コンソールの「SOAJMSModuleの設定」ページが表示されます。

  5. 「リソースのサマリー」セクションで、「新規作成」をクリックします。

    Oracle WebLogic Server管理コンソール「新しいJMSシステム・モジュール・リソースの作成」ページが表示されます。

  6. 「キュー」を選択して「次」をクリックします。
  7. 次のキューの詳細を入力します。
    • 名前

    • JNDI名

    • テンプレート

  8. 「次へ」をクリックします。
  9. 「サブデプロイメント」リストから、使用するサブデプロイメントを選択します。
  10. 「終了」をクリックします。

    ReceiveQueueという名前のキューが作成されました。

  11. ステップ1から10を繰り返して、SendQueueという名前のキューを作成します。
8.4.5.1.2 Q2Qorders.xsdファイルの作成

次のコードを使用してQ2Qorders.xsdファイルを作成します。

<?xml version="1.0" ?>
 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
            targetNamespace="http://xmlns.oracle.com/
                 pcbpel/nxsd/extensions/FileInbound"
            xmlns:tns="http://xmlns.oracle.com/
            pcbpel/nxsd/extensions/FileInbound"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified" 
              nxsd:encoding="US-ASCII" nxsd:stream="chars" 
                        nxsd:version="NXSD">
  <xsd:element name="Items">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="item" minOccurs="1" 
                              maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Name" type="xsd:string" 
                nxsd:style="terminated" 
                 nxsd:terminatedBy="," nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Type" type="xsd:string"
                 nxsd:style="terminated" 
                  nxsd:terminatedBy="," nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Quantity" 
                  type="xsd:string" nxsd:style="terminated"
                           nxsd:terminatedBy=","
                             nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Rate" 
                type="xsd:string"
                  nxsd:style="terminated" 
                  nxsd:terminatedBy="${eol}" nxsd:quotedBy="&quot;">
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
<!--NXSDWIZ:C:\errors\inputFiles\orders.txt:-->

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

設計時環境とデプロイ先サーバーの間の接続性を確立する必要があります。「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明した手順を実行して、アプリケーション・サーバー接続を作成します。

8.4.5.3 アプリケーションおよびSOAプロジェクトの作成

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従ってアプリケーションとSOAプロジェクトを作成します。

  1. JDeveloperを開きます。
  2. 「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。「新規ギャラリ」ダイアログが表示されます。
  3. 「SOAアプリケーション」を選択し、「OK」をクリックします。「アプリケーション名」フィールドにアプリケーションの名前を入力します。例: queue2queue
  4. 「次へ」をクリックします。

    「プロジェクトの名前付け」ページが表示されます。

  5. 「プロジェクト名」フィールドにわかりやすい名前を入力します。例: queue2queue
  6. 「次」を選択します。「SOA設定の構成」ページが表示されます。
  7. 「コンポジット・テンプレート」リストからBPELプロセスを使用するコンポジットを選択して「終了」をクリックします。

    新規アプリケーションおよびSOAプロジェクトが作成されました。

    「BPELプロセスの作成」ページが表示されます。

  8. 「名前」フィールドにBPELプロセスの名前を入力します。例: queue2queue
  9. 「テンプレート」リストで「インタフェースを後で定義」を選択し、「OK」をクリックします。

    BPELプロセスが作成されました。

    設計領域に、queue2queueアプリケーション、queue2queueプロジェクトおよびSOAコンポジットが表示されます。

  10. Q2Qorders.xsdファイルをプロジェクトのXSDフォルダにコピーします。

8.4.5.4 インバウンド・アダプタ・サービスの作成

次の手順を実行し、メッセージをキューにデキューするアダプタ・サービスを作成します。

  1. 「サービス・アダプタ」リストから「JMSアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    「アダプタ構成ウィザード - ようこそ」ページが表示されます。

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

    「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにInboundと入力して「OK」をクリックします。

    「JMSプロバイダ」ページが表示されます。

  4. 図8-15 に示すように、「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Weblogic JMS」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。

    図8-15 「アダプタ構成ウィザード - JMSプロバイダ」ページ

    例8-15の説明が続きます
    「図8-15 「アダプタ構成ウィザード - JMSプロバイダ」ページ」の説明
  5. 図8-16 に示すように、「アプリケーション・サーバー接続の作成」で作成した接続を選択します。

    図8-16 「アダプタ構成ウィザード - サービス接続」ページ

    例8-16の説明が続きます
    「図8-16 「アダプタ構成ウィザード - サービス接続」ページ」の説明
  6. 「次」を選択します。「アダプタ・インタフェース」ページが表示されます。
  7. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
  8. 図8-17 に示すように、「メッセージ消費」を選択して「次へ」をクリックします。

    「消費操作のパラメータ」ページが表示されます。

    図8-17 「アダプタ構成ウィザード - 操作」ページ

    図8-17の説明が続きます
    「図8-17 「アダプタ構成ウィザード - 操作」ページ」の説明
  9. 「参照」をクリックし、「接続先」フィールドで「ReceiveQueue」を選択します。

    「消費操作のパラメータ」ページが表示されます。

  10. 消費操作のパラメータを入力して「次へ」をクリックします。

    「メッセージ」ページが表示されます。

    注意:

    アダプタが管理モードで確実に実行されるように、JNDI名で指定した値がOracle JMSアダプタのweblogic-ra.xmlファイルに存在する必要があります。

  11. 「URL」フィールドの端にある「参照」をクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  12. 図8-18 に示すように、「プロジェクトのスキーマ・ファイル」「Q2Qorders.xsd」および「Items」を順番に選択します。

    図8-18 「タイプ・チューザ」ダイアログ

    例8-18の説明が続きます
    「図8-18 「タイプ・チューザ」ダイアログ」の説明
  13. 「次」を選択します。図8-19 に示すように、「メッセージ」ページの「URL」にQ2Qorders.xsdスキーマ・ファイルが表示されます。

    図8-19 「アダプタ構成ウィザード - メッセージ」ページ

    例8-19の説明が続きます
    「図8-19 「アダプタ構成ウィザード - メッセージ」ページ」の説明
  14. 「次」を選択します。「終了」ページが表示されます。
  15. 「終了」をクリックします。JMSインバウンド・アダプタ・サービスの構成を完了しました。

8.4.5.5 アウトバウンド・アダプタ・サービスの作成

リクエスト・メッセージをエンキューし、対応するレスポンス・メッセージ(レポート)をキューからデキューするアダプタ・サービスを作成する手順は、次のとおりです。

  1. 「コンポーネント」ウィンドウから、「JMSアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。
  2. 「次」を選択します。「サービス名」ページが表示されます。
  3. 「サービス名」フィールドにOutboundと入力して「OK」をクリックします。「JMSプロバイダ」ページが表示されます。
  4. 「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Weblogic JMS」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
  5. 「アプリケーション・サーバー接続の作成」で作成した接続を選択し、「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。
  6. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
  7. 「メッセージ発行」を選択して「次へ」をクリックします。「発行操作のパラメータ」ページが表示されます。
  8. 「参照」をクリックし、「接続先」フィールドで「SendQueue」を選択します。「発行操作のパラメータ」ページが表示されます。
  9. 「次」を選択します。「メッセージ」ページが表示されます。
  10. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。
  11. 「プロジェクトのスキーマ・ファイル」「Q2Qorders.xsd」および「Items」を順番に選択します。
  12. 「次」を選択します。「メッセージ」ダイアログの「URL」にQ2Qorders.xsdスキーマ・ファイルが表示されます。
  13. 「次」を選択します。「終了」ページが表示されます。
  14. 「終了」をクリックします。JMSアダプタ・サービスの構成が完了し、composite.xmlページが表示されます。

8.4.5.6 サービスとアクティビティのワイヤリング

作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)を接続する必要があります。コンポーネントを接続する手順は、次のとおりです。

  1. 「公開されたサービス」領域にあるインバウンド・コンポーネント内の小さい三角形を、「コンポーネント」領域のBPELプロセス内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
  2. 「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のアウトバウンド内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

    JDeveloperのcomposite.xmlが図8-20 のように表示されます。

    図8-20 JDeveloper - composite.xml

    例8-20の説明が続きます
    「図8-20 JDeveloper - composite.xml」の説明
  3. 「ファイル」「すべて保存」を順番にクリックします。
  4. 「queue2queue」をダブルクリックします。

    「queue2queue.bpel」ページが表示されます。

  5. 図8-21 に示すように、「コンポーネント」ウィンドウから、receiveassignおよびinvokeアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。

    図8-21 「queue2queue.bpel」ページ

    例8-21の説明が続きます
    「図8-21 「queue2queue.bpel」ページ」の説明
  6. 「Receive」をダブルクリックします。

    「Receive」ダイアログが表示されます。

  7. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。

    「パートナ・リンク・チューザ」ダイアログが表示されます。

  8. 「Inbound」を選択して「OK」をクリックします。

    「パートナ・リンク」フィールドに値Inboundが移入された状態で「Receive」ダイアログが表示されます。

  9. 「変数」フィールドの端に表示される「変数の自動作成」アイコンをクリックします。

    「変数の作成」ダイアログが表示されます。

  10. デフォルトを受け入れて「OK」をクリックします。
  11. 図8-22 に示すように、「インスタンスの作成」ボックスを選択して「OK」をクリックします。

    図8-22 「Receive」ダイアログ

    例8-22の説明が続きます
    「図8-22 「Receive」ダイアログ」の説明
  12. invokeアクティビティをダブルクリックします。

    Invokeダイアログが表示されます。

  13. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。

    「パートナ・リンク・チューザ」ダイアログが表示されます。

  14. 「Outbound」を選択して「OK」をクリックします。

    「パートナ・リンク」フィールドに値Outboundが移入された状態で「Invoke」ダイアログが表示されます。

  15. 「入力変数」フィールドの端に表示される「入力変数の自動作成」アイコンをクリックします。

    「変数の作成」ダイアログが表示されます。

  16. デフォルトを受け入れて「OK」をクリックします。

    図8-23 に示すように、「Invoke」ダイアログが表示されます。

    図8-23 「Invoke」ダイアログ

    例8-23の説明が続きます
    「図8-23 「起動」ダイアログ」の説明
  17. 「OK」をクリックします。
  18. assignアクティビティをダブルクリックします。

    「Assign」ダイアログが表示されます。

  19. 「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。
  20. 図8-24 に示すように、変数を選択して「OK」をクリックします。

    図8-24 「コピー操作の作成」ダイアログ

    例8-24の説明が続きます
    「図8-24 「コピー操作の作成」ダイアログ」の説明
  21. 「Assign」ダイアログで「OK」をクリックします。
  22. 「ファイル」「すべて保存」を順番にクリックします。

8.4.5.7 JDeveloperを使用したデプロイ

前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。JDeveloperを使用してアプリケーション・プロファイルをデプロイするには、次の手順を実行する必要があります。

  1. 「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」に示す手順を使用して、アプリケーション・サーバー接続を作成します。
  2. Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。

8.4.5.8 Fusion Middleware Controlコンソールを使用した監視

Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。

  1. http://servername:portnumber/emにナビゲートします。

    デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。

  2. 「最後の5つのインスタンス」ペインに、新規インスタンスのエントリがあります。これは、queue2queue.javaを使用してメッセージをエンキューするときにトリガーされたインスタンスです。
  3. インスタンスのいずれかをクリックします。「フローのトレース」ページが表示されます。
  4. 「TextMessage」コンポーネント・インスタンスをクリックします。「監査」ページが表示されます。
  5. 「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。

8.4.6 リモートOracle WebLogic Serverドメイン内のWLS JMSサーバーからのキューとトピックへのアクセス

使用してリモートWLS JMS宛先にアクセスできます。リモート宛先は、リモートOracle WebLogic Serverドメインの一部であるWLS JMSサーバー内で定義されているキューまたはトピックを指します。

このようなアクセスを実行するには、リモートWLS JMSサーバーと通信するように構成されたコネクタ・ファクトリを使用する必要があります。そのためには、次の例に示すように、weblogic-ra.xml内で定義されているコネクタ・ファクトリの<FactoryProperties>プロパティをリモート・サーバー構成に設定します。

<property>
  <name>FactoryProperties</name>
     <value>java.naming.factory.initial
                =weblogic.jndi.WLInitialContextFactory; 
                       java.naming.provider.url= t3://<HOST>:<PORT>;
                     java.naming.security.principal= 
                         <USERNAME>;java.naming.security.credentials
                                     =<PASSWORD>
     </value>
</property>

リモートWLS JMSサーバーにあるリモート・キューから読み取れるようにするには、次のように構成する必要があります。

  1. 両方のサーバーに一意のドメイン名とJMSサーバー名が必要です。

  2. 2つのサーバー間でグローバルな信頼を有効化する必要があります。

    サーバー間でグローバルな信頼を有効化する方法については、次のリンクを参照してください。

    http://download.oracle.com/docs/cd/E13222_01/wls/docs100/ConsoleHelp/taskhelp/security/EnableGlobalTrustBetweenDomains.html

    この構成は、WLS9.2サーバーにあるキューまたはトピックに接続する際にも適しています。

    注意:

    JMSアダプタを使用してWebLogic Serverのセキュアなキュー(ローカルまたはリモートのドメイン)にアクセスする場合は、FactoryPropertiesプロパティのjava.naming.security.principalおよびjava.naming.security.credentialsがWLSのセキュアなキューへのアクセス権を持つユーザーで適切に設定されていることを確認してください。

8.4.6.1 リモート・サーバーが使用される場合のJMSアダプタの制限

JMSアダプタを使用すると、SOAがインストールされているWebLogicServerドメインに対してリモートになっている、ドメイン内のWebLogic Server JMSの宛先の場所と対話できます。

JMSアダプタを使用してリモートの宛先にアクセスできるようにする2つのオプションがサポートされています。

  • アクセス・パラメータにリモート・ドメインを指定したweblogic-ra.xmlファイルのFactoryPropertiesの指定による直接アクセス。

  • リモート・ドメインにアクセスするように外部サーバーを構成。

インバウンドの使用例では、両方のオプションがサポートされます。アウトバウンドの使用例の場合のみ、直接アクセスはサポートされますが、外部サーバーの構成はサポートされません。

8.4.7 同期/非同期リクエスト-リプライ相互作用パターン

同期と非同期のリクエスト-リプライ相互作用パターンの両方がサポートされています。

8.4.7.1 同期リクエスト-リプライ・パターン

アダプタ構成ウィザードを使用すると、Oracle JMSアダプタを同期リクエスト-リプライ相互作用パターンに使用できるプロセスをモデル化できます。この場合、Oracle JMSアダプタはリクエスト・キューにリクエストを送信し、リプライ・キューからのレスポンスを待ってから実行を継続します。

下位では、Oracle JMSアダプタにより新規の相互作用パターンJmsRequestReplyInteractionSpecが使用されます。このインタラクション仕様では、リクエストとリプライの宛先名の構成が許可されています。

バリエーションでは、リプライ・キューの一部として一時返信先の使用が許可されます。基本的に、このパターンではOracle JMSアダプタはJMS宛先にメッセージを送信できます。その後、アダプタはJMSReplyToヘッダーをリプライの宛先に設定します。

この値を使用してサード・パーティ・クライアントからリプライの宛先にメッセージが送信され、その後にメッセージがOracle JMSアダプタによりデキューされます。

Oracle JMSアダプタを同期パターンで使用する場合は、JMSまたはBPEL受信イベントにXA ConnectionFactoryを使用し、コネクタ・ファクトリのisTransactedプロパティをweblogic-ra.xmltrueに設定できます。ただし、Webサービスを使用する場合は、非XA ConnectionFactoryを使用し、コネクタ・ファクトリのisTransactedプロパティをweblogic-ra.xmltrueに設定してください。

Oracle WebLogic Server JMSとの同期パターンでOracle JMSアダプタを使用する場合、コネクション・ファクトリはweblogic.jms.ConnectionFactoryまたはその他任意の非XAコネクション・ファクトリにする必要があります。また、Oracle WebLogic Server JMSをアダプタと同じローカルJVMで実行する場合は、コネクタ・ファクトリのisTransactedプロパティがweblogic-ra.xmlfalseに設定されていることを確認する必要があります。次のサンプルを入手するには、Oracleサンプル・コード・サイトにアクセスします。

  • adapters-jms-106-wlsjms-syncrequestreply

  • adapters-jms-107-wlsjms-syncrequestreplywithtemporaryreplydestination

8.4.7.2 非同期リクエスト-リプライ・パターン

アダプタ構成ウィザードを使用すると、非同期リクエスト-リプライ相互作用パターンに使用できるプロセスをモデル化できます。

基本的に、このパターンではJMS宛先にメッセージを送信できます。メッセージがリプライ・キューで受信されると、メッセージを正しいコンポジットまたはコンポーネント・インスタンスにルーティングできます。相関付けはリクエスト・メッセージのJMSMessageIDに基づいて実行され、このIDはリプライ・メッセージのJMSCorrelationIDおよび基礎となるコンポーネントの対話IDとなります。

詳細は、Oracleサンプル・コード・サイトにアクセスして次のサンプルを参照してください。

  • adapters-jms-105-wlsjms-nativecorrelation

8.4.8 AQ JMSテキスト・メッセージ

この使用例では、Oracle JMSアダプタでAQ JMSキューとの間のエンキューおよびデキューを実行する方法について説明します。

adapters-jms-108-aqjms-textmessageusingqueuesサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

この項には次のトピックが含まれます:

8.4.8.1 前提条件の確認

この使用例を実行するには、前提条件として次のタスクを実行する必要があります。

8.4.8.1.1 Oracle WebLogic Server管理コンソールでのAQ JMSの構成

Oracle WebLogic Server管理コンソールでAQ JMSを構成するには、次の手順を実行する必要があります。

Oracle WebLogic JMSモジュールの追加

Oracle WebLogic JMSモジュールの追加はオプションです。AQ JMS外部サーバーを既存のJMSモジュールに作成することもできます。

  1. Oracle WebLogic Server JMS: http://servername:portnumber/consoleにナビゲートします。

  2. 必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。

    Oracle WebLogic Server管理コンソールホーム・ページが表示されます。

  3. 「ドメイン構造」ペインで、「サービス」「メッセージング」「JMSモジュール」の順にナビゲートします。

    Oracle WebLogic Server管理コンソールの「JMSモジュール」ページが表示されます。

  4. 「新規作成」をクリックして新規のWebLogic JMSモジュールを作成します。

    Oracle WebLogic Server管理コンソールの「JMSシステム・モジュールの作成」ページが表示されます。

  5. JMSモジュール名を入力して「次へ」をクリックします。

    Oracle WebLogic Server管理コンソールの「JMSシステム・モジュールの作成」ページが表示されます。

  6. SOAコンポーネントが実行中のターゲット・サーバーを選択し、「次へ」をクリックします。

    Oracle WebLogic Server管理コンソールの「JMSシステム・モジュールの作成」ページが表示されます。

  7. 「終了」をクリックします。

    JMSモジュールが作成されました。

JMSモジュールへのAQ JMS外部サーバーの追加

次のステップは、次の手順に従ってJMSモジュールにAQ JMS外部サーバーを追加することです。

  1. 作成したJMSモジュールをクリックします。

    Oracle WebLogic Server管理コンソールの「AQJMSモジュールの設定」ページが表示されます。

  2. 「リソースの概要」表で、「新規作成」をクリックして新規のJMSシステム・モジュール・リソースを作成します。

    Oracle WebLogic Server管理コンソールの「新しいJMSシステム・モジュール・リソースの作成」ページが表示されます。

  3. 「作成するリソースのタイプを選択してください。」で、「外部サーバー」を選択して「次へ」をクリックします。

    Oracle WebLogic Server管理コンソールの「新しいJMSシステム・モジュール・リソースの作成」ページが表示されます。

  4. 「名前」フィールドに外部サーバー名を入力し、「終了」をクリックします。

    Oracle WebLogic Server管理コンソールの「<JMSモジュール名>の設定」ページが表示されます。

AQ JMS外部サーバーの構成

次のステップは、作成したAQ JMS外部サーバーを構成することです。

  1. 「リソースの概要」表に表示されるAQ JMS外部サーバーをクリックします。

    Oracle WebLogic Server管理コンソールの「TestAQJMS_ForeignServerの設定」ページが表示されます。

  2. 以下の値を入力します。

    • JNDI初期コンテキスト・ファクトリ: oracle.jms.AQjmsInitialContextFactory

      AQ JMS外部サーバーがWebLogicサーバー側コンポーネントで使用される場合は、次の値を指定して、このAQ JMS外部サーバーを使用してデータソースを構成する必要があります。

      「JNDIプロパティ」フィールドにdatasource=<datasource jndi location>と入力します。プレースホルダをデータソースのJNDIロケーションで置き換えます。

      ただし、AQ JMS外部サーバーがWebLogicアプリケーション・クライアントで使用される場合は、作成したAQ JMS外部サーバーを指定してJDBC URLを構成する必要があります。

    • JNDI接続URL: WebLogicサーバーでJNDIプロバイダへの接続に使用するURLを指定します。

      この値は、AQ JMS外部サーバーがWebLogicアプリケーション・クライアントで使用される場合にのみ必須です。

    • JNDIプロパティ資格証明: JNDIプロバイダ用に設定する必要のある資格証明を指定します。

      この値は、AQ JMS外部サーバーがWebLogicアプリケーション・クライアントで使用される場合にのみ必須です。

注意:

Oracle RACデータベースをアダプタ・エンドポイントとして使用する場合は、前述の手順で説明したJNDIプロパティが指すデータソースでマルチ・データソースを指す必要があります。

このようなエンドポイントに使用される個別データソースとマルチ・データソースには、「Oracle JCAアダプタで使用するデータソースの推奨設定」に示す推奨設定を使用する必要があります。

AQ JMS外部サーバーへのコネクション・ファクトリの追加

AQJMS外部サーバーにコネクション・ファクトリを追加する手順は、次のとおりです。

  1. 「<外部サーバー名>の設定」ページの「接続ファクトリ」タブで、作成したAQJMS外部サーバーを選択します。

  2. 「新規」をクリックします。

    Oracle WebLogic Server管理コンソールの「新しい外部JMS接続ファクトリの作成」ページが表示されます。

  3. 「名前」フィールドに、このコネクション・ファクトリの名前を入力します。これは、Oracle WebLogic Serverで参照される論理名です。

  4. 「ローカルJNDI名」フィールドに、このコネクション・ファクトリを参照するためにアプリケーションで使用するローカルJNDI名を入力します。

    注意:

    サンプルの使用例AQQueuetoQueueで提供されるJNDI名がeis/aqjms/Queueのキューに接続する場合は、ローカルJNDI名にaqjms/XAQueueConnectionFactoryを指定してください。

    また、JNDI名がeis/aqjms/Topicのトピックに接続する場合は、aqjms/XATopicConnectionFactoryを指定します。

  5. 「リモートJNDI名」フィールドに、要件に応じて次のいずれかの値を入力します。このコネクション・ファクトリをグローバル変換に使用する場合はXAベースのコネクション・ファクトリを使用し、それ以外の場合は非XAベースのコネクション・ファクトリを使用します。

    • QueueConnectionFactory

    • TopicConnectionFactory

    • ConnectionFactory

    • XAQueueConnectionFactory

    • XATopicConnectionFactory

    • XAConnectionFactory

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

AQ JMS外部サーバーへの宛先の追加

AQJMS外部サーバーに宛先を追加する手順は、次のとおりです。

  1. 「<外部サーバー名>の設定」ページの「宛先」タブをクリックします。
  2. 「新規」をクリックし、この宛先の名前を指定します。これは、Oracle WebLogic Serverによって参照される論理名で、宛先名とは関係ありません。
  3. 「ローカルJNDI名」フィールドに、この宛先を参照するためにアプリケーションで使用するローカルJNDI名を入力します。
  4. 「リモートJNDI名」フィールドに、宛先がキューの場合はQueues/<queue name>、宛先がトピックの場合はTopics/<topic name>と入力します。
  5. 「OK」をクリックします。
  6. Oracle WebLogic Server管理コンソールを再起動します。

Oracle WebLogic ServerでAQJMSの構成を完了しました。

8.4.8.1.2 Oracleデータベースでのキューの作成

キューを作成する手順は、次のとおりです。

  1. setup_user.sqlスクリプトを実行します。
  2. create_start_queues.sqlスクリプトを実行します。

これらのスクリプトは、adapters-jms-108-aqjms-textmessageusingqueuesサンプルのartifacts/sqlディレクトリにあります。adapters-jms-108-aqjms-textmessageusingqueuesサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

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

設計時環境とデプロイ先サーバーの間の接続性を確立する必要があります。「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明した手順を実行して、アプリケーション・サーバー接続を作成します。

8.4.8.3 アプリケーションおよびSOAプロジェクトの作成

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従って新規アプリケーションとSOAプロジェクトを作成します。

  1. JDeveloperを開きます。
  2. 「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。「汎用アプリケーションの作成 - アプリケーションの名前付け」ダイアログが表示されます。
  3. 「アプリケーション名」フィールドにアプリケーションの名前を入力します。例: AQQueue2Queue
  4. 「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。
  5. 「次へ」をクリックします。

    「プロジェクトの名前付け」ページが表示されます。

  6. 「プロジェクト名」フィールドにわかりやすい名前を入力します。例: AQQueue2Queue
  7. 「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。
  8. 「次」を選択します。「汎用アプリケーションの作成 - SOA設定の構成」ページが表示されます。
  9. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して、「終了」をクリックします。

    新規アプリケーションおよびSOAプロジェクトが作成されました。

    「BPELプロセスの作成」ページが表示されます。

  10. 「名前」フィールドにBPELプロセスの名前を入力します。
  11. 「テンプレート」リストで「インタフェースを後で定義」を選択し、「OK」をクリックします。

    BPELプロセスが作成されました。

    AQQueue2Queueアプリケーション、AQQueue2QueueプロジェクトおよびSOAコンポジットが設計領域に表示されます。

  12. expense.xsdファイルをプロジェクトのXSDフォルダにコピーします。

    このファイルは、adapters-jms-108-aqjms-textmessageusingqueuesサンプルのartifacts/schemasディレクトリにあります。adapters-jms-108-aqjms-textmessageusingqueuesサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択します。

8.4.8.4 インバウンド・アダプタ・サービスの作成

次の手順を実行し、メッセージをキューにデキューするアダプタ・サービスを作成します。

  1. 「サービス・アダプタ」リストから「JMSアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。
  2. 「次」を選択します。「サービス名」ページが表示されます。
  3. 「サービス名」フィールドにInboundと入力して「OK」をクリックします。「JMSプロバイダ」ページが表示されます。
  4. 「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Advanced Queueing」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
  5. 「アプリケーション・サーバー接続の作成」で作成した接続を選択します。
  6. 「次」を選択します。「アダプタ・インタフェース」ページが表示されます。
  7. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
  8. 「メッセージ消費」を選択して「次へ」をクリックします。「消費操作のパラメータ」ページが表示されます。
  9. 「参照」をクリックし、「接続先」フィールドで「testInQueue」を選択します。
  10. 「次」を選択します。「メッセージ」ページが表示されます。
  11. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。
  12. 「プロジェクトのスキーマ・ファイル」「expense.xsd」を順番に選択します。
  13. 「次」を選択します。「メッセージ」ページの「URL」フィールドにexpenses.xsdスキーマ・ファイルが表示されます。
  14. 「次」を選択します。「終了」ページが表示されます。
  15. 「終了」をクリックします。JMSインバウンド・アダプタ・サービスの構成を完了しました。

8.4.8.5 アウトバウンド・アダプタ・サービスの作成

リクエスト・メッセージをエンキューし、対応するレスポンス・メッセージ(レポート)をキューからデキューするアダプタ・サービスを作成する手順は、次のとおりです。

  1. 「コンポーネント」ウィンドウから、「JMSアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。
  2. 「次」を選択します。「サービス名」ページが表示されます。
  3. 「サービス名」フィールドにOutboundと入力して「OK」をクリックします。「JMSプロバイダ」ページが表示されます。
  4. 「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Advanced Queueing」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
  5. 「アプリケーション・サーバー接続の作成」で作成した接続を選択し、「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。
  6. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
  7. 「メッセージ発行」を選択して「次へ」をクリックします。「発行操作のパラメータ」ページが表示されます。
  8. 「参照」をクリックし、「接続先」フィールドで「testOutQueue」を選択します。「発行操作のパラメータ」ページが表示されます。
  9. 「次」を選択します。「メッセージ」ページが表示されます。
  10. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。
  11. 「プロジェクトのスキーマ・ファイル」「expense.xsd」を順番に選択します。
  12. 「次」を選択します。「メッセージ」ダイアログの「URL」フィールドにexpense.xsdスキーマ・ファイルが表示されます。
  13. 「次」を選択します。「終了」ページが表示されます。
  14. 「終了」をクリックします。JMSアダプタ・サービスの構成が完了し、composite.xmlページが表示されます。

8.4.8.6 サービスとアクティビティのワイヤリング

作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)を接続する必要があります。

コンポーネントを接続する手順は、次のとおりです。

  1. 「公開されたサービス」領域にあるインバウンドOracle JMSアダプタ・コンポーネント内の小さい三角形を、「コンポーネント」領域のBPELプロセス内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
  2. 「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のアウトバウンドOracle JMSアダプタ内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

    JDeveloperのcomposite.xmlが図8-25 のように表示されます。

    図8-25 JDeveloper - composite.xml

    例8-25の説明が続きます
    「図8-25 JDeveloper - composite.xml」の説明
  3. 「ファイル」「すべて保存」を順番にクリックします。
  4. BPELプロセスをダブルクリックします。「BPELProcess1.bpel」ページが表示されます。
  5. 「コンポーネント」ウィンドウから、receiveassignおよびinvokeアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。
  6. receiveアクティビティをダブルクリックします。

    「Receive」ダイアログが表示されます。

  7. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。

    「パートナ・リンク・チューザ」ダイアログが表示されます。

  8. 「Inbound」を選択して「OK」をクリックします。

    「パートナ・リンク」フィールドに値Outboundが移入された状態で「Receive」ダイアログが表示されます。

  9. 「変数」フィールドの端に表示される「変数の自動作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
  10. デフォルトを受け入れて「OK」をクリックします。
  11. 「インスタンスの作成」ボックスを選択します。
  12. Outboundのためのinvokeアクティビティをダブルクリックします。

    Invokeダイアログが表示されます。

  13. 「入力変数」フィールドの端に表示される「入力変数の自動作成」アイコンをクリックします。
  14. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。

    「パートナ・リンク・チューザ」ダイアログが表示されます。

  15. 「Outbound」を選択して「OK」をクリックします。

    「パートナ・リンク」フィールドに値Outboundが移入された状態で「Invoke」ダイアログが表示されます。

  16. デフォルトを受け入れて「OK」をクリックします。
  17. 「OK」をクリックします。
  18. assignアクティビティをダブルクリックします。

    「Assign」ダイアログが表示されます。

  19. 「+」アイコンをクリックして「コピー操作」を選択します。

    「コピー操作の作成」ダイアログが表示されます。

  20. 変数を選択して「OK」をクリックします。
  21. 「Assign」ダイアログで「OK」をクリックします。
  22. 「ファイル」「すべて保存」を順番にクリックします。

注意:

Oracle JMSアダプタを使用して永続サブスクリプションを使用するAQ JMSトピックからデキューする際に、デキュー操作が低パフォーマンスであることに気づいた場合は、アダプタ・サービスごとに複数のインバウンド・スレッドを使用することでパフォーマンス全体を高速化できます。

Oracle JMSアダプタでは、エンドポイント・プロパティadapter.jms.receive.threadsを指定すると複数のインバウンド・スレッドが許可されます。

ただし、非永続サブスクリプションを使用する場合、そのシナリオでこの解決策を使用するとメッセージが重複するため、この解決策は機能しません。

注意:

レジリエンシが有効であり、Oracle Event Delivery Network (EDN)サブスクライバが静止モードである場合、EDNコンシューマ・スレッドはスリープ・モードになります。MaxStuckThreadTime = 600 (秒)などの構成に基づき、構成されたMaxStuckThreadTimeが経過すると、スリープEDNコンシューマ・スレッドはSTUCKとマークされます。サーバー・ログのこれらのSTUCKロギング文は一時的な警告であり、機能に影響しません。静止モードが終了し、レジリエンシが受信リクエスト処理を再開した後、これらのSTUCK警告はなくなり、通常の処理が再開されます。

SOA_Request_WMおよびSOA_EDN_WMも同じ最大制約を共有します。EDNサブスクライバのスレッド数が最大制約よりも大きい場合、SOA_Request_WMのパフォーマンスは影響を受けます。回避策は、EDNサブスクライバのスレッド数を削減するか、またはSOAIncomingRequests_maxThreadsで定義された最大制約を増加します

8.4.8.7 JDeveloperを使用したデプロイ

前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。JDeveloperを使用してアプリケーション・プロファイルをデプロイするには、次の手順を実行する必要があります。

  1. 「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」に示す手順を使用して、アプリケーション・サーバー接続を作成します。
  2. Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。

8.4.8.8 Fusion Middleware Controlコンソールを使用した監視

Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。

  1. http://servername:portnumber/emにナビゲートします。デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。
  2. 「最後の5つのインスタンス」ペインに、新規インスタンスのエントリがあります。これは、AQQueue2Queue.javaを使用してメッセージをエンキューするときにトリガーされたインスタンスです。
  3. インスタンスのいずれかをクリックします。「フローのトレース」ページが表示されます。
  4. 「TextMessage」コンポーネント・インスタンスをクリックします。「監査」ページが表示されます。
  5. 「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。

8.4.9 OC4J 10.1.3.4サーバーからリリース11gで作成されたキューとトピックへのアクセス

この項では、Oracle Application Server 11gまたは12.1.3で作成されたキューとトピックにOC4J 10.1.3.4からアクセスする手順について説明します。

このことを行うには、Oracle WebLogic Serverを使用してOracle BPEL PM JMSアダプタを構成する必要があります。

Oracle WebLogic Serverを使用してOracle BPEL PM JMSアダプタを構成する手順は、次のとおりです。

  1. 次の手順に従ってwlfullclient.jarファイルを作成します。

    1. 次の例に示すようにserver/libディレクトリに移動します。

      cd WL_HOME/server/lib
      
    2. 次のコマンドを使用して、server/libディレクトリにwlfullclient.jarファイルを作成します。

      java -jar ../../../modules/com.bea.core.jarbuilder_X.X.X.X.jar
      

      X.X.X.Xは、WL_HOME/server/libディレクトリにあるjarbuilderモジュールのバージョン番号です。次に例を示します。

      java -jar ../../../modules/com.bea.core.jarbuilder_1.0.1.0.jar
      
  2. wlfullclient.jarファイルを、次の場所にある10.1.3.4サーバーにコピーします。

    <ORACLEAS_HOME>/j2ee/<OC4J_INSTANCE>/connectors/
                   JmsAdapter/JmsAdapter
    
  3. 次の例に示すように、oc4j-ra.xmlファイル内のコネクタ・ファクトリ設定を構成します。

    <connector-factory location="eis/wlsjms/Queue" 
    connector-name="Jms Adapter">
       <config-property name="connectionFactoryLocation"                
    value="weblogic.jms.ConnectionFactory"/>
       <config-property name="factoryProperties"         
    value="java.naming.factory.initial=weblogic.jndi.
    WLInitialContextFactory;java.naming.provider.url=t3:
                               //<WLS-SERVER-NAME>: <WLS-SERVER-PORT>;
    java.naming.security.principal=<USER>;
                   java.naming.security.credentials=
                            <PASSWORD>"/> 
           <config-property name="acknowledgeMode" 
                                    value="AUTO_ACKNOWLEDGE"/>
           <config-property name="isTopic" value="false"/>
           <config-property name="isTransacted" value="false"/>
           <config-property name="username" value=""/>
           <config-property name="password" value=""/>
       <connection-pooling use="none">
       </connection-pooling>
         <security-config use="none">
         </security-config>
    </connector-factory>
    

    注意:

    isTransacted構成プロパティの値は、通常はFALSEに設定する必要があります。現在、XAとWebLogic JMSの統合は、アダプタがOracle WebLogic Serverにデプロイされていないかぎりサポートされていません。また、<WLS-SERVER-NAME>はキューをホストする実際のWeblogic Server名で置き換える必要があること、さらに<WLS-SERVER-PORT>はキューをホストするWeblogic Serverの実際のポート値で置き換える必要があることに注意してください。

  4. 次の例に示すように、10.1.3.4サーバーのserver.xmlファイルを変更し、environment-naming-url-factory-enabled="true"プロパティを追加します。

    <application-server
    ...
    ...
    environment-naming-url-factory-enabled="true"
    ...
    > 
    
  5. 10.1.3.4サーバーを再起動して、変更されていることを確認します。

8.4.10 10.1.3.X OC4Jに存在するキューにアクセスするための11G以降のサーバーの構成

次の手順に従って、10.1.3.x OC4Jに存在するキューにアクセスするように11G以降のサーバーを構成できます。

8.4.10.1 Web Logic ServerのdomainsフォルダへのJarファイルのコピー

次のjarファイルをWebLogic Serverのdomains/<DOMAIN_NAME>/libフォルダにコピーします。

  • $J2EE_HOME/lib/jms.jar

  • $J2EE_HOME/lib/jta.jar

  • $J2EE_HOME/oc4jclient.jar

  • $AS_HOME/opmn/lib/optic.jar

8.4.10.2 weblogic-ra.xmlファイルへのコネクタ・ファクトリの追加

次の手順は、weblogic-ra.xmlファイルへのコネクタ・ファクトリの追加です。

<connection-instance>
   <jndi-name>eis/oc4jjms/Queue</jndi-name>
    <connection-properties>
       <properties>
        <property>
          <name>ConnectionFactoryLocation</name>
          <value>jms/XAQueueConnectionFactory</value>
         </property>
         <property>
          <name>FactoryProperties</name>
            <value>java.naming.factory.initial=com.            evermind.server.rmi.RMIInitialContextFactory;             java.naming.provider.url= <PROVIDER_URL>; java.naming.security.principal=oc4jadmin; 
        java.naming.security.credentials=welcome1</value>
        </property>
          <property>
          <name>AcknowledgeMode</name>
          <value>AUTO_ACKNOWLEDGE</value>
       </property>
       <property>
         <name>IsTopic</name>
         <value>false</value>
       </property>
       <property>
         <name>IsTransacted</name>
         <value>false</value>
       </property>
       <property>
         <name>Username</name>
         <value>oc4jadmin</value>
       </property>
       </property>
       <property>
         <name>Password</name>
        <value>welcome1</value>
      </property>
     </properties>
    </connection-properties>
  </connection-instance>

<PROVIDER_URL>=opmn://localhost:6003またはormi://localhost:12401は特定のノードに使用し、opmn:ormi://localhost:6003:oc4j_soaoc4j_soaインスタンスに使用します。

8.4.11 WebLogic Server JMS上の分散宛先(キューとトピック)へのアクセス

分散宛先は、単一の論理的な宛先としてクライアントからアクセスできる宛先のセット(キュー、物理的なJMSキュー・メンバーのセット、またはトピック、物理的なJMSトピック・メンバーのセット)です。

注意:

分散宛先の詳細およびこのコンテキストで使用されている用語の定義は、http://download.oracle.com/docs/cd/E13222_01/wls/docs103//jms/dds.htmlにある分散宛先の使用に関するページを参照してください

JMSアダプタは、使用可能通知の受信後に分散宛先メンバーにアドレス指定されたメッセージを処理できます。分散宛先メンバーに関連する使用可能通知、使用不能通知および障害通知を処理できます。分散トピックの使用時にJMSアダプタでこのようなメッセージを処理するには、追加のプロパティを指定する必要があります。

追加のプロパティを指定する場合は、複数のFactoryProperty値をセミコロンで区切ることができます。次の例を参照してください。

<property>
  <name>FactoryProperties</name>
  <value>ClientID=SOACLient2;TopicMessageDistributionAll=true</value>
</property>

また、クラスタ内でJMSアダプタがWLSの複数の管理対象サーバーと対話するシナリオでは、すべてのサーバーをFactoryPropertiesプロパティの一部として指定する必要があります。これらを使用して、次の例のように、JMSアーティファクトを参照するための適切なコンテキストを確立します。

<property>
  <name>FactoryProperties</name>
  <value> java.naming.factory.initial=weblogic.jndi.
          WLInitialContextFactory; 
          java.naming.provider.url=t3://<server1>:<port1>,
               <server2>:<port2>;
          java.naming.security.principal=
               <username>;java.naming.security.credentials
                     =<password>
  </value>
</property>

山カッコ<>は自身の環境で使用可能な値に置き換えます。

8.4.11.1 分散トピックにアクセスするためのJMSアダプタの指定

3つのFactoryPropertyパラメータ値を使用して、分散トピックにアクセスするアダプタの指定、複数の接続で共有するクライアントIDの明示的な有効化、複数のサブスクライバ間での永続サブスクリプションの共有の有効化を行う他、アプリケーションごとまたはエンドポイントごとに1つのメッセージのコピーが必要かどうかを指定します。次のプロパティがあります。

  • ClientIDPolicy

    複数の接続でクライアントIDを共有できるようにするには、FactoryPropertiesパラメータのClientIDPolicyプロパティにUNRESTRICTEDという値を使用します。値が指定されていない場合、デフォルトはUNRESTRICTEDです。デフォルト以外の値はRESTRICTEDです。ほぼすべてのケースでデフォルトが使用されるため、通常はこのプロパティを設定する必要はありません。次の例を参照してください。

    </property>
       <name>FactoryProperties</name>
    <value>ClientIDPolicy=UNRESTRICTED</value>
    
     </property>
    
  • SubscriptionSharingPolicy

    複数のサブスクライバ間で永続サブスクリプションを共有できるようにするには、FactoryPropertiesパラメータにSHARABLEという値を使用します。

    SubscriptionSharingPolicyの値EXCLUSIVEは、複数のサブスクライバ間で永続サブスクリプションを共有できないことを意味します。値を指定しない場合、デフォルトはSHARABLEです。ほとんどの場合、値を変更する必要はありません。

     <property> 
        <name>FactoryProperties</name> 
        <value>SubscriptionSharingPolicy=
                   SHARABLE</value> 
     </property>
     
  • TopicMessageDistributionAll

    TopicMessageDistributionAll FactoryPropertiesパラメータの詳細は、分散トピックに関する項を参照してください。次の例のように設定できます。

    <property>
        <name>FactoryProperties</name>
        <value>TopicMessageDistributionAll=true</value>
    </property>
    

8.4.11.2 分散キューと分散トピックを使用したJMSアダプタ

特定のインバウンドおよびアウトバウンド・キューおよびエラー処理の動作は、WebLogic Server JMSの分散キューおよび分散トピックを使用したJMSアダプタに適用されます。

インバウンド・キューの場合、JMSアダプタはインバウンド・ポーラー・スレッドを作成し、エンドポイント・アクティブ化時にWebLogic Server JMSに通知リスナーを登録します。エンドポイントの非アクティブ化時に通知リスナーを登録解除します。

注意:

内部では、コンシューマが分散キューのメンバーに固定されます。多数のスレッドを使用してアダプタをデプロイすることで、分散キューのすべてのメンバーを考慮できるようにする必要があります。

SOA 11.1.1.4.0以降のバージョンから、JMSアダプタでは分散キューと分散トピックの両方を完全にサポートしています。JMSアダプタの新しいバージョンでは、WebLogic Server JMSからの通知に依存して、分散宛先のメンバーに対するコンシューマの作成および削除を行います。

SOA 11.1.1.3.0以前のバージョンのJMSアダプタの動作(ここでは分散キューの2つ以上のメンバーにコンシューマがランダムに作成されます)とSOA 11.1.1.4.0以降の新しい動作を比較すると、アクティブ化の際に多数のポーラー・スレッドを使用してJMSアダプタを起動することに依存しなくてもすべてのメンバーを考慮できるようになったこと以外に変更はありません。

JMSアダプタは、非分散環境のエラーが処理されるのと同じ方法で分散環境のエラーを処理します。再試行可能例外ではメッセージが再試行されます。再試行不能例外ではメッセージが拒否されます。

アダプタが分散キューへのメッセージを生成するときに、他のアダプタの動作からJMSアダプタの動作への変更は行われません。

分散宛先に対するJMSメッセージは、分散宛先に対してMessageProducerを作成し、特定のメンバーに対しては作成しないことで生成されます。

アウトバウンド・エラーは、アウトバウンド参照に対して以前に定義されたフォルト・ポリシーに基づいて処理されます。

分散トピックを使用したインバウンド・アダプタの場合、JMSアダプタはエンドポイントのアクティブ化時に通知リスナーをWebLogic Server JMSに登録します。JMSアダプタは、分散トピック・メンバーに対してWebLogic Server JMSから受信した使用可能通知ごとにインバウンド・ポーラー・スレッドを作成します。

ポーラー・スレッドが作成されたメンバーに対する使用不能通知が受信された場合は、インバウンド・ポーラー・スレッドが作業を停止し、必要なクリーン・アップが実行されます。恒久サブスクリプションは、非分散トピック・シナリオの場合と同様に保持されます。

アダプタは、エンドポイントの非アクティブ化時に通知リスナーを登録解除します。分散トピックに到着したメッセージは、使用されている様々な設定と使用中の分散宛先のタイプ(アプリケーションごとにメッセージのコピーが1つ、またはアダプタ・エンドポイントごとにメッセージのコピーが1つ)に基づいて処理されます。

これらの各タイプの分散宛先の動作を次に示します。

8.4.11.3 アプリケーションごとに1つのメッセージのコピー(デフォルトの動作)

JMSアダプタで使用される場合のWebLogic Serverパーティション分散トピックのデフォルトの動作では、アプリケーションごとにメッセージのコピーが1つ提供されます。各メッセージは必ず1回のみ処理する(つまり、重複する処理がない)必要があります。アプリケーションごとにメッセージのコピーが1つあるこのシナリオでは、クライアントIDとサブスクリプション名はすべての分散宛先に対して 同じ であり、 各 アダプタ・インスタンスが すべての メンバーにサブスクリプションを作成します。サーバーの再起動後も名前は一意であり不変です。パーティション分散トピックを使用する場合、無制限のクライアントIDと共有サブスクリプション・ポリシーを使用するようにJMSアダプタを構成する必要があります。この2つはJMSアダプタのデフォルト設定です。複製された分散トピックを使用している場合は、無制限のクライアントIDと共有サブスクリプションのポリシーを使用するようにJMSアダプタを構成する必要があります(これはデフォルト設定です)。また、アクティブ化の仕様を定義するときに、NOT JMS_WL_DDForwardedのようにメッセージ・セレクタを指定する必要があります。

パフォーマンスを向上させるには、パーティション分散トピックを使用する必要があります。

ローカル・クラスタのweblogic-ra.xmlファイルの接続インスタンスのスニペットから構成される例については、次を参照してください。

<property>
    <name>FactoryProperties</name>
    <value>ClientID=SOAClient1;</value>
</property>

8.4.11.4 アダプタ・エンドポイントごとに1つのメッセージのコピー

分散トピックで使用できる2番目の使用例では、アダプタ・エンドポイントごとに1つのメッセージのコピーを使用します。この場合、クライアントIDまたはサブスクリプション名は、アダプタ・インスタンスごとに一意です。メンバー名の一意の 部分 は、サーバーの再起動後も変わりません。

パーティション分散トピックを使用する場合は、無制限のクライアントIDと共有サブスクリプションのポリシーを使用するようにJMSアダプタを構成する必要があります(これはデフォルト設定です)。

同時に、サブスクリプション名を一意にするには、JMSアダプタではプロパティTopicMessageDistributionAll (デフォルト値はfalse)がtrueに設定されている必要があります。このプロパティは、weblogic-ra.xmlファイルで接続インスタンスのFactoryPropertiesプロパティを設定することで定義できます。

使用例(ローカル・クラスタのweblogic-ra.xmlファイルの接続インスタンスのスニペット)を次に示します。

<name>FactoryProperties</name>
<value>ClientID=SOAClient2;
       TopicMessageDistributionAll=true</value>
</property>

パフォーマンスを向上させるには、パーティション分散トピックを使用する必要があります。

複製された分散トピックを使用している場合は、無制限のクライアントIDと共有サブスクリプションのポリシーを使用するようにJMSアダプタを構成します(これはデフォルト設定です)。

同時に、サブスクリプション名を一意にするには、JMSアダプタではプロパティTopicMessageDistributionAll (デフォルト値はfalse)がtrueに設定されている必要があります。このプロパティは、weblogic-ra.xmlで接続インスタンスのFactoryPropertiesプロパティを設定することで定義できます。使用例(ローカル・クラスタのweblogic-ra.xmlの接続インスタンスのスニペット)を次に示します。

<name>FactoryProperties</name>
<value> ClientID=SOAClient2;
       TopicMessageDistributionAll=true</value>
</property>

また、アクティブ化の仕様を定義するときに、メッセージ・セレクタNOT JMS_WL_DDForwardedを指定する必要があります。

8.4.11.4.1 アクティブ化の仕様を定義するときのメッセージ・セレクタの指定

アクティブ化の仕様を定義するときに、メッセージ・セレクタを指定します。メッセージ・セレクタは、アダプタ・エンドポイントごとにメッセージのコピーを1つ作成する場合に必要です。

セレクタを指定するには、重複する分散トピックから読み取ったコンポジット・アプリケーションをモデリングするときにJMSアダプタ・ウィザードを使用します。指定するメッセージ・セレクタのメタデータは、.jcaファイルに取得されます。

アクティブ化の仕様で定義されているメッセージ・セレクタの例を次に示します。このメッセージ・セレクタは、メッセージを宛先サブスクライバに送信するときに、転送されたメッセージのコピーを除外します。

このメッセージ・セレクタは、複製された分散トピックを使用する場合のみ適用できます。

<activation-spec className="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec">
     <property name="DestinationName" value="jms/DemoInTopic"/>
     <property name="UseMessageListener" value="false"/>
     <property name="DurableSubscriber" value="dsub1"/>
     <property name="MessageSelector"
                     value="NOT JMS_WL_DDForwarded"/>
     <property name="PayloadType" value="TextMessage"/>
</activation-spec>

分散トピックでは、再試行可能例外によりメッセージが再試行され、再試行不能例外によりメッセージが拒否されます。

使用可能/使用不能/障害通知は、アウトバウンド・アダプタ参照の処理には影響しません。メッセージは特定メンバーではなく分散宛先を対象とするMessageProducerを作成することによって作成されます。

分散トピック環境では、他の環境と同様に、エラーはアウトバウンド参照に対して定義されているフォルト・ポリシーに基づいて処理されます。

8.4.11.4.2 互換性と移行

リモート分散キューのサポートは、新しいDestinationAvailabilityListener APIを使用したWLS JMSバージョン9.0までさかのぼって実現されています。リモート分散トピックは、WebLogic 10.3.4より古い場合には、共有サブスクリプション、無制限のクライアントID、非転送セレクタ、およびパーティション化分散トピックもサポートされていないため、サポートできません。かわりにDTメンバーJNDI名を直接参照して、サブスクリプションの制限ごとに1つのサブスクライバを処理する必要があります。

8.4.12 IBM WebSphereのデフォルトのJMSプロバイダを使用したOracle JMSアダプタの構成

この項では、IBM WebSphere 7.x JMSに対するOracle JMSアダプタの構成方法について説明します。

  1. 次のファイルを<WAS_INSTALL DIR>/fmwwas-nd/websphere/runtimesディレクトリの下からSOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>//libフォルダにコピーします。

    • com.ibm.jaxws.thinclient_7.0.0.jar

    • com.ibm.ws.admin.client_7.0.0.jar

    • com.ibm.ws.ejb.thinclient_7.0.0.jar

    • com.ibm.ws.jpa.thinclient_7.0.0.jar

    • com.ibm.ws.messagingClient.jar

    • com.ibm.ws.orb_7.0.0.jar

    • com.ibm.ws.sib.client.thin.jms_7.0.0.jar

    • com.ibm.ws.sib.client_ExpeditorDRE_7.0.0.jar

    • com.ibm.ws.webservices.thinclient_7.0.0.jar

    • ejb3exceptions.jar

    • sibc.jmsra.rar

    • sibc.nls.zip

  2. 次の例に示すように、soa/connectors/JmsAdapter.rarにあるweblogic-ra.xmlファイルを変更してコネクタ・ファクトリを構成します

    例 - コネクション・ファクトリの構成

    <connection-instance>
    <jndi-name>eis/webspherejms/Queue</jndi-name>
       <connection-properties>
          <properties>
             <property>
               <name>ConnectionFactoryLocation</name>
               <value><QUEUE_CONECTION_FACTORY></value>
             </property>
             <property>
                <name>FactoryProperties</name>
                <value>java.naming.provider.
               url=iiop://<HOST_NAME>:<PORT>;
    java.naming.factory.initial=com.ibm.
               websphere.naming.WsnInitialContextFactory;
    java.naming.security.principal=<USERNAME>;
    java.naming.security.credentials=<PASSWORD>;
    ThirdPartyJMSProvider=true      
                </value>
              </property>
              <property>
                  <name>AcknowledgeMode</name>
                  <value>AUTO_ACKNOWLEDGE</value>
              </property>
              <property>
                 <name>IsTopic</name>
                 <value>false</value>
              </property>
              <property>
                 <name>IsTransacted</name>
                 <value>true</value>
             </property>
             <property>
                 <name>Username</name>
                 <value><USERNAME></value>
             </property>
             <property>
                <name>Password</name>
                <value><PASSWORD></value>
            </property>
            </properties>
        </connection-properties>
    </connection-instance>
     
    <connection-instance>
    <jndi-name>eis/webspherejms/Topic</jndi-name>
       <connection-properties>
          <properties>
             <property>
               <name>ConnectionFactoryLocation</name>
               <value><TOPIC_CONECTION_FACTORY></value>
             </property>
             <property>
                <name>FactoryProperties</name>
                <value>java.naming.provider.url=
                iiop://<HOST_NAME>:<PORT>;
    java.naming.factory.initial=com.ibm.websphere.
                naming.WsnInitialContextFactory;
    java.naming.security.principal=<USERNAME>;
    java.naming.security.credentials=<PASSWORD>;
    ThirdPartyJMSProvider=true      
                </value>
              </property>
              <property>
                  <name>AcknowledgeMode</name>
                  <value>AUTO_ACKNOWLEDGE</value>
              </property>
              <property>
                 <name>IsTopic</name>
                 <value>true</value>
              </property>
              <property>
                 <name>IsTransacted</name>
                 <value>true</value>
             </property>
             <property>
                 <name>Username</name>
                 <value><USERNAME></value>
             </property>
             <property>
                <name>Password</name>
                <value><PASSWORD></value>
            </property>
            </properties>
        </connection-properties>
    </connection-instance>
    

<QUEUE_CONECTION_FACTORY>および<TOPIC_CONECTION_FACTORY>は、デフォルトのJMSプロバイダのWebSphere 7.0でそれぞれ作成されているキューおよびトピック・コネクション・ファクトリのJNDI名を参照しています。

または、Oracle WebLogic Server管理コンソールを使用して新規コネクション・ファクトリを作成し、「アダプタ・コネクション・ファクトリの追加」で説明する手順を使用することもできます。

注意:

WebSphere 7.x JMSと対話する際は、XA以外のモードでのみJMSアダプタを使用できます。

8.4.13 JMSアダプタでのリクエスト-リプライの構成

リクエスト-リプライ構成機能では、次のことを実行できます。

  • 単一の構成手順でのリクエストとリプライの結合。Oracle SOA Suiteの以前のリリースでは、2つの異なるアダプタを構成する必要がありました。

  • BPEL相関セットの手動構成を必要としない自動相関付け。これはメディエータMediatorおよびBPMNでもシームレスに機能します。

JMSアダプタのリクエスト-リプライ機能を構成するには、次の手順を実行します。

  1. JDeveloperコンポジット・エディタで、JMSアダプタを「外部参照」スイムレーンにドラッグ・アンド・ドロップします。

    図8-26 「外部参照」スイムレーンへのJMSアダプタのドラッグ・アンド・ドロップ

    例8-26の説明が続きます
    「図8-26 「外部参照」スイムレーンへのJMSアダプタのドラッグ・アンド・ドロップ」の説明
  2. JMSアダプタ構成ウィザードの最初のいくつかの画面でデフォルト値を入力し、操作名の入力を求める画面まで進みます。「操作タイプ」として「リクエスト/リプライ」を、「操作名」として「非同期」を選択します。

    図8-27 「リクエスト/リプライ」に関する「操作」画面

    例8-27の説明が続きます
    「図8-27 「リクエスト/リプライ」に関する「操作」画面」の説明
  3. ウィザードの後続の画面で、リクエスト・キューおよびリプライ・キューを選択します。メッセージはリクエスト・キューでエンキューされ、リプライはリプライ・キューで返されます。

    図8-28 「リクエスト操作パラメータ」画面

    例8-28の説明が続きます
    「図8-28 「リクエスト操作パラメータ」画面」の説明

    図8-29 「リプライ操作パラメータ」画面

    例8-29の説明が続きます
    「図8-29 「リプライ操作パラメータ」画面」の説明

    リクエスト・キューから読み取りレスポンス・キューにレスポンスを生成するバックエンド・システムは、実際には複数のレスポンスを生成します。そのため、このようなセレクタを使用することによって、不要なレスポンスをフィルタして除外する必要があります。

  4. レスポンスのメッセージ・スキーマを選択します。

    図8-30 リクエストおよびレスポンスのメッセージ・スキーマの選択

    例8-30の説明が続きます
    「図8-30 リクエストおよびレスポンスのメッセージ・スキーマの選択」の説明
  5. JMS Adapterパートナ・リンクに対応するBPELの<invoke>アクティビティを追加します。使用するサード・パーティ・アプリケーションで必要となるため、追加ヘッダーが設定されています。

    図8-31 JMS Adapterリンクに対応するBPELのInvokeプロパティ・ダイアログ

    例8-31の説明が続きます
    「図8-31 JMS Adapterリンクに対応するBPELのInvokeプロパティ・ダイアログ」の説明

    <invoke>アクティビティの直後に<receive>アクティビティを追加し、「リプライ」操作を選択します。「インスタンスの作成」オプションが選択されていないことを確認します。

    図8-32 「リプライ」操作に関する「Receive」ダイアログ

    例8-32の説明が続きます
    「図8-32 「リプライ」操作に関する「Receive」ダイアログ」の説明

8.4.14 JMSアダプタでのWLS JMS順序単位の使用

SOA JMSアダプタを使用して、メッセージの特定の順序単位を作成したメッセージを生成できます。アダプタのInteractionSpecでは、JMSアダプタ構成ウィザードの操作の生成ページを使用してアダプタ参照をモデル化する際に構成したUnitOfOrderという名前のプロパティがサポートされます。「メッセージ発行手順」の当該ページの説明を参照してください。

このUnitOfOrderプロパティを使用して、メッセージの生成時にMessageProducerの順序単位値を設定します。新しいフィールドは、JMSプロバイダがWebLogic Server JMSの場合にのみ表示できます。

JMSアダプタにより、WLS宛先へのメッセージの生成時に使用されるこの順序単位をオーバーライドできるようになります。

このオーバーライドを実行するには、JMSアダプタでjca.jms.WeblogicUnitOfOrderという名前の正規化されたメッセージ・プロパティをサポートします。この値により、JmsProduceInteractionSpecUnitOfOrderプロパティを使用して指定された値がオーバーライドされます。

UnitOfOrder指定プロパティの値はEMコンソールで変更できます。その時点以降のアウトバウンド相互作用ではすべて、指定する新しい値が使用されます。

当該プロパティのjca.jms.WeblogicUnitOfOrderも、JmsProduceInteractionSpecプロパティのUnitOfOrderも定義されていない場合は、JMSアダプタで順序単位値は設定されません。デフォルトの順序単位がコネクション・ファクトリおよび宛先で管理者によって指定されている場合は、それが有効化されます。

JMSの順序単位機能は、WebLogic Serverとのみ動作します。WebLogic Server以外の宛先では、当該プロパティのjca.jms.WeblogicUnitOfOrder(存在する場合)は無視されます。

8.4.14.1 順序単位プロパティの取得

相互作用仕様のインスタンスからユーザー指定の値を取得できます。

すべてのJMSメッセージ・プロパティは、正規化されたメッセージ・プロパティとして使用できます。配信されたメッセージ上で正規化されたメッセージ・プロパティのjca.jms.JMSProperty.JMS_BEA_UnitOfOrderを検索することによって、順序単位プロパティを取得できます。

8.4.15 JMS同期消費

Oracle JMSアダプタでは、同期消費(中間プロセス受信)相互作用パターンがサポートされています。

アダプタ構成ウィザードを使用すると、Oracle JMSアダプタをこのような同期消費相互作用パターンに使用できるプロセスをモデル化できます。この場合、Oracle JMSアダプタでは、プロセスの実行中に指定されたキューからのメッセージがデキューされます(このため、中間プロセス受信と呼ばれます)。

キューが空の場合は、実行が継続されます。下位では、Oracle JMSアダプタにより新規の相互作用パターンJmsReceiveNoWaitInteractionSpecが使用されます。

JMSアダプタ構成ウィザードを使用してJMS同期消費をモデル化する場合は、デキューに使用するキュー名を指定する必要があります。この操作の場合、JMSアダプタでは、現在の消費操作が構成されたときに構成されたその他すべてのjcaプロパティがサポートされます。

この操作を使用するシナリオでは、JMSアダプタにデキューするキューに関するメッセージがない場合、BPELプロセスによって、引き続きプロセスの次の手順が実行されます。

8.4.15.1 JMS同期消費の構成

JMSアダプタ構成ウィザードを使用してJMS同期消費操作を構成するには、次の手順を実行します。

  1. 「JMSアダプタ構成ウィザード」画面で「同期消費メッセージ」を選択します。

    図8-33 「同期消費メッセージ」が選択されたJMSアダプタ構成ウィザードの「操作」画面

    図8-33の説明が続きます
    「図8-33 「同期消費メッセージ」が選択されたJMSアダプタ構成ウィザードの「操作」画面」の説明
  2. JMSアダプタ構成ウィザードの「同期消費パラメータ」画面が表示され、同期消費画面のパラメータを入力できます。メッセージを入力します
    • 「接続先名」に入力するか、または「参照」を選択して、接続先ブラウザを開きます。

    • チューザからメッセージ本文のタイプを選択します。選択肢は次のとおりです。

      • TextMessage

      • BytesMessage

      • MapMessage

    • 「メッセージ・セレクタ」に入力します。

      このフィールドはオプションです。ヘッダーおよびプロパティの情報に基づいてメッセージをフィルタ処理します。メッセージ・セレクタ・ルールはブール式です。式がtrueの場合には、メッセージが消費されます。式がfalseの場合には、メッセージが拒否されます。

      画面では、一部の例が提供されます。その他の例については、次のようにロジックを入力できます。

      • JMSPriority > 3。これに基づき、優先度が3より高いメッセージが消費され、それ以外のメッセージはすべて拒否されます。

      • JMSType = 'car' AND color = 'blue' AND weight > 2500

      • Country in ('UK', 'US', 'France')。

    • JNDI名を指定します。接続先名を選択した場合にも入力します。

    図8-34 JMSアダプタ構成の同期消費画面

    例8-34の説明が続きます
    「図8-34 JMSアダプタ構成の同期消費画面」の説明
  3. 「参照」を選択して接続先ブラウザを開いた場合は、ブラウザで次を実行します。
    • 「接続先タイプ」の「すべてのタイプ」、「キュー」または「トピック」を選択して、接続先タイプを選択します。

    • 接続先を指定するか、「検索」をクリックして、ブラウザに移入される接続先を検索します。「すべて表示」をクリックして、接続先のリストを展開します。

    • 接続先を選択し、「OK」をクリックして、同期パラメータ・ページの選択を使用します。

    注意:

    Oracle JMSアダプタを同期パターンで使用する場合は、JMSまたはBPEL受信イベントにXA ConnectionFactoryを使用し、コネクタ・ファクトリのisTransactedプロパティをweblogic-ra.xmlでtrueに設定できます。ただし、Webサービスを使用する場合は、非XA ConnectionFactoryを使用し、コネクタ・ファクトリのisTransactedプロパティをweblogic-ra.xmlでtrueに設定してください。

    図8-35 JMSアダプタ構成ウィザードの接続先ブラウザの選択画面

    例8-35の説明が続きます
    「図8-35 JMSアダプタ構成ウィザードの接続先ブラウザの選択画面」の説明
  4. JMSアダプタ構成ウィザードにJMSアダプタ・メッセージ画面が表示されます。この画面で、ネイティブ・フォーマットは不要(スキーマを不透明にする)を選択するか、ネイティブ・フォーマット・ビルダーを開きます。