この章では、Oracle BPELプロセスまたはOracle MediatorコンポーネントとJMS間の通信を可能にする、Oracle JCA Adapter for JMS(Oracle JMSアダプタ)の使用方法について説明します。
この章には、次の項目が含まれます。
JMSアーキテクチャでは、多数のメッセージ・サーバーに対して1つのクライアント・インタフェースが使用されます。JMSモデルには、Point-to-Pointおよびパブリッシュ・サブスクライブという2つのメッセージ・ドメインがあります。Point-to-Pointドメインでは、メッセージはキューを介して交換され、各メッセージは1人の受信者にのみ配信されます。パブリッシュ・サブスクライブ・モデルでは、メッセージはトピックに送信され、複数のサブスクライブ・クライアントによって読み取られます。
JMSアダプタ・サンプル・ファイルを入手するには、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択します。
この項には、次の項目が含まれます。
JCA 1.5リソース・アダプタとBPEL Process Managerを双方向で統合するために、JCAバインディング・コンポーネントが使用されています。JCAバインディング・コンポーネントは規格に準拠しており、基盤となるJCA相互作用をWebサービスとして公開するためのWeb Service Invocation Framework(WSIF)テクノロジが使用されています。
Oracle JMSアダプタのアーキテクチャ、アダプタとOracle BPEL Process Manager(Oracle BPEL PM)の統合およびアダプタのデプロイの詳細は、第3章「アダプタとOracle Application Serverコンポーネントの統合」を参照してください。
Oracle Mediator(メディエータ)はOracle JCAアダプタをサポートしており、それぞれのインバウンドおよびアウトバウンドのアダプタ・サービスを定義できます。インバウンド・アダプタ・サービスでは、外部メッセージ・システムからデータが受信されてXMLメッセージに変換されます。アウトバウンド・アダプタ・サービスでは、XMLメッセージが特定のアダプタのネイティブ・フォーマットに変換され、データがターゲット・アプリケーションに送信されます。
Oracle JMSアダプタ・サービスの場合、メディエータを使用してJMSキューまたはトピックからのメッセージを送受信できます。
メディエータはOracle BPEL PMの後継であり、このマニュアルのほとんどの部分およびサンプルはOracle BPEL PMを使用することを想定しています。ただし、アダプタの動作はOracle BPEL PMでもメディエータでも同じです。この章でOracle BPEL PMに言及している箇所は、メディエータで置き換えてかまいません。
Oracle JMSアダプタには次の特徴があります。
JMSバージョン1.0.2bがベース
汎用Oracle JMSアダプタ
任意の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で動作確認されています。
JMSトピックおよびキューをサポートしています。
バイト、テキストおよびマップ・メッセージ・タイプをサポートしています。
これらのデータ・タイプは、このリリースでのみサポートされています。アダプタ構成ウィザードにより、実行時のネイティブ・データ・ペイロードの消費にネイティブ・フォーマット・ビルダー・ウィザードが提供されます。ネイティブ・フォーマット・ビルダー・ウィザードでは、基礎となるネイティブ・データのXSD定義が作成されます。
JMSヘッダーおよびプロパティをサポートしています。
jca.message.encodingプロパティをサポートしています。
Oracle JMS Adapterでは、インバウンド・ペイロードとアウトバウンド・ペイロードのjca.message.encoding
プロパティがサポートされます。jca.message.encoding
プロパティがadapter.jms.encoding
プロパティおよびnxsd:encoding
属性とともに使用される場合、jca.message.encoding
プロパティはadapter.jms.encoding
プロパティよりも優先され、nxsd:encoding
属性の優先度は最も低くなります。nxsd:encoding
値にはUTFを使用でき、通常は相互運用性とUnicodeサポートのためにUTF-8をお薦めします。ただし、Java Runtime Environmentでサポートされている任意の有効なエンコーディングを指定できます。サポートされるエンコーディングの完全なリストは、http://www.oracle.com/technetwork/java/index.html
を参照してください。アダプタ・プロキシ・メタデータに関連付けられている(N)XSDでエンコーディングを指定できます。たとえば、属性nxsd:encoding="iso-8859-1
を指定できます
jca.message.encoding
プロパティは、composite.xml
で定義されたエンドポイントyu76y76としてサポートされています。このプロパティは、アダプタ構成ウィザードの「プロパティ」タブを使用するか、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 PMとメディエータでは、様々なUIサポート・レベルでヘッダーにアクセスし、操作して設定できます。
詳細は、第2.15項「アダプタ内でのOracle BPEL Process Managerの相関サポート」を参照してください。
正規化されたメッセージのヘッダーの伝播
正規化されたメッセージは、プロパティとペイロードという2つの部分のみを持つように簡素化されています。通常、プロパティはスカラー型の名前/値ペアです。既存の複雑なヘッダーがプロパティに収まるように、プロパティはスカラー型にフラット化されます。
設計時のヘッダーの操作
複雑なプロパティは事前に決定されているため、設計時にヘッダーを操作する際のユーザー操作は合理化されています。メディエータまたはOracle BPELデザイナでは、なんらかの予約済キーワードを使用してヘッダーを操作できます。たとえば、現在、メディエータ・デザイナでは、次の式を使用してインバウンドOracleファイル・アダプタのfileName
ヘッダーにアクセスできます。
$nmproperty.InboundFileHeaderType.fileName
ただし、この方法はユーザー入力に基づいて動的に生成されるプロパティに対処していません。たとえば、Oracle AQアダプタ・ウィザードでは、AQオブジェクトからの一部のフィールドをヘッダーとして伝播できます。この選択内容に基づいてヘッダー定義が生成されます。これらの定義は事前に決定されていないため、事前決定済のプロパティ定義のリストでは考慮できません。動的プロパティのヘッダー操作は、定義するまで設計できません。この制限に対処するには、必要なサービス(コンポジット・エントリ・ポイント)と参照をすべて生成しておく必要があります。この制限は、動的プロパティを生成する必要のあるサービスにのみ適用されます。動的プロパティが生成された後、コンポジットごとに特定の場所で取得される必要があります。その後にのみ、Oracle MediatorまたはOracle BPELデザイナで動的プロパティを操作できます。
永続JMSサブスクライバの指定をサポートしています。
JMSパブリッシャの永続および非永続モードをサポートしています。
MQプロバイダに対する接続再試行機能はサポート対象外
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は、レポート処理に使用できます。
MapMessageデータ型のサポート
MapMessage
は、名前/値ペアを送信するために使用されます。名前は文字列で、値はJavaプリミティブ型です。エントリには、名前ごとに順番にまたはランダムにアクセスできます。エントリの順序は定義されていません。これはメッセージから継承し、マップ・メッセージ本文を追加します。
Oracle JMSアダプタでは、MapMessage
の処理がサポートされます。現在では、JmsMapMessageConsumeActivationSpec
およびJmsMapMessageProduceInteractionSpec
という新しいActivationSpecおよびInteractionSpecプロパティがサポートされています。
PayloadEntry
プロパティは、ペイロードとして使用されるMapMessage
エントリを指定します。AttachmentList
プロパティが定義されている場合、ユーザーは、ペイロードを添付として送信することもできます。
他のすべてのMapMessage
エントリは、jca.jms.Map.xxxx
により識別されるアダプタ・プロパティに変換されます。xxxx
は、MapMessage
エントリの名前です。
PayloadEntry
プロパティとAttachmentList
プロパティが両方とも定義されていない場合は、エントリMapMessage
はXMLに変換され、そのXMLがペイロードとして転送されます。
エンタープライズ情報システム(EIS)の資格証明のサポート
Oracle JMSアダプタでは、EISとのアウトバウンド接続の確立時の、エンタープライズ情報システム(EIS)の資格証明(ユーザー名やパスワードなど)の保護がサポートされています。Oracle JMSアダプタのユーザー名とパスワードは、Oracle WebLogic Serverのコンテナ管理のサインオンを使用して保護できます。
エンタープライズ情報システム(EIS)の資格証明の保護のサポートの詳細は、第4.2.22項「エンタープライズ情報システムの資格証明の保護」を参照してください。
大きなペイロードのストリーミングのサポート
Oracle JMSアダプタには、ストリーム・ペイロードのサポートが用意されています。この機能を有効化すると、ペイロードはメモリーDOM内のSOAランタイムで操作されるかわりにデータベースにストリーミングされます。この機能は、大きなペイロードの処理中に使用できます。ストリーム・ペイロードのサポートを有効化するには、Oracle JDeveloper(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で処理されたセッションのトランザクションは、そのセッション以外には影響しません。
エラー処理のサポート
エラー処理については、第2.22項「エラー処理」を参照してください。
複数のコンシューマ・スレッドのサポート
Oracle JMSアダプタは、アクティブ化エンドポイント・プロパティadapter.jms.receive.threads
をサポートしています。アダプタとエンタープライズ情報システム(EIS)間のインバウンド・メッセージ・フロー用として複数のポーラー・スレッドを生成するには、composite.xmlでこのプロパティを設定することをお薦めします。これにより、複数のポーラー・スレッドがラウンド・ロビン形式でメッセージをデキューするため、パフォーマンスが向上します、これは、分散シナリオでもサポートされています。
Oracle JMSアダプタはパフォーマンス・チューニングをサポートしています。
詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のOracle SOA JMSアダプタのチューニングに関する項を参照してください。
注意: Oracle JMSアダプタをEJBまたは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つのメッセージ・パラダイムをサポートしています。
この項には、次の項目が含まれます。
Point-to-Pointメッセージでは、メッセージは消費されるまでキューに格納されます。1つ以上のプロデューサがキューに書き込み、1つ以上のコンシューマがキューからメッセージを抽出します。JMSコンシューマにより、メッセージの消費後に確認情報が送信されるため、キューからメッセージがパージされます。
パブリッシュ・サブスクライブ・メッセージでは、プロデューサがメッセージをトピックにパブリッシュし、コンシューマが特定のトピックにサブスクライブします。複数のパブリッシャが同じトピックを公開でき、複数のコンシューマが同じトピックにサブスクライブできます。プロデューサによってトピックに公開されたすべてのメッセージは、そのトピックにサブスクライブしたすべてのコンシューマによって受信されます。デフォルトでは、サブスクライバがメッセージを受信できるのはアクティブなときのみです。ただし、JMS APIでは、サブスクライバが稼働中ではなくても、パブリッシュされたメッセージをコンシューマが受信できる永続サブスクリプションをサポートしています。永続サブスクリプションでは、コンシューマがアクティブではないときに送信されたメッセージを受信するために、コンシューマを一意のIDで登録します。これらのメッセージはJMSプロバイダにより保存され、コンシューマが再度アクティブになった際に送信されるか、メッセージが失効した場合には記憶域からパージされます。JMSプロデューサは、永続モードまたは非永続モードに設定できます。非永続モードではメッセージは保存されず、非永続サブスクリプションにのみ使用できます。
Oracle WebLogic Serverで永続サブスクリプションの操作を必要とするシナリオでは、次の例に示すように、ClientID
プロパティを定義済のコネクタ・ファクトリが必要です。
<FactoryProperties>ClientID=uniquename</FactoryProperties>
複数の永続サブスクライバを定義する際には、それぞれ一意のClientID
プロパティを指定して複数のコネクタ・ファクトリを定義する必要があります。Oracle WebLogic Serverではclientid
のバインドが1回しか許可されないため、他のアダプタ相互作用(インバウンド・メッセージの処理に使用する場合のアウトバウンド相互作用など)には同じコネクタ・ファクトリを使用しないように注意してください。ClientId
を定義済のコネクタ・ファクトリをインバウンドで使用して着信メッセージを処理するシナリオの場合、アウトバウンド・アダプタ相互作用には異なるコネクタ・ファクトリを使用する必要があります。
注意: BPELパートナ・リンクで使用されない永続サブスクライバは、手動で削除する必要があります。これらの永続サブスクリプションがOracle JMSアダプタにより自動的に削除されることはありません。 |
JMS APIでは、メッセージ消費のための同期および非同期通信の両方をサポートしています。同期の場合、コンシューマはトピックまたはキューのreceive()
メソッドを明示的に呼び出します。非同期の場合、JMSクライアントによりトピックまたはキューにメッセージ・リスナーが登録され、メッセージはそのリスナーのonMessage()
メソッドを呼び出すことで配信されます。
宛先プロパティには、JMSキューまたはトピックのアドレス情報が含まれます。接続は、JMSプロバイダへの物理接続を表します。コネクション・ファクトリは、JMS接続の作成に使用されます。セッションは、キューまたはトピックの宛先、JMSプロデューサ、およびJMSコンシューマのオブジェクトの作成に使用されます。
JMSメッセージには、必須の標準ヘッダー要素、オプションのプロパティ要素およびオプションの標準ペイロード要素があります。ペイロードはテキスト・メッセージ、バイト・メッセージ、マップ・メッセージ、ストリーム・メッセージまたはオブジェクト・メッセージのいずれかになります。プロパティ要素はJMSプロバイダ固有で、JMSプロバイダごとに異なります。
Oracle JMSアダプタのヘッダー・プロパティの詳細は、付録Aの「Oracle JMSアダプタのプロパティ」を参照してください。
この項には、次の項目が含まれます。
次の使用例では、Oracle JMSアダプタの構成手順を説明し、結果のWSDLファイルおよび関連するweblogic-ra.xml
ファイルを検証します。
この項には、次の項目が含まれます。
最初に、SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従って新規アプリケーションとSOAプロジェクトを作成します。
JDeveloperを開きます。
「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。
図8-1に示すように、「汎用アプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。
「アプリケーション名」フィールドにアプリケーションの名前を入力します。たとえば、AQQueue2Queue
と入力します。
「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。
「次へ」をクリックします。
図8-2に示すように、「プロジェクトの名前付け」ダイアログが表示されます。
「プロジェクト名」フィールドにわかりやすい名前を入力します。たとえば、AQQueue2Queue
と入力します。
「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。
「次へ」をクリックします。
図8-3に示すように、「汎用アプリケーションの作成 - SOA設定の設定」ページが表示されます。
「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。
新規アプリケーションおよびSOAプロジェクトが作成されました。これにより、SOAコンポジットが自動的に作成されます。
図8-4に示すように、「BPELプロセスの作成」ページが表示されます。
「名前」フィールドにBPELプロセスの名前を入力します。この例では、デフォルト名を使用します。
「テンプレート」リストで「サービスを後で定義」を選択し、「OK」をクリックします。
BPELプロセスが作成されました。
アダプタ構成ウィザードを使用してOracle JMSアダプタを構成するには、次の手順を実行します。
「コンポーネント・パレット」で、「SOA」を選択します。
「サービス・アダプタ」リストから「JMSアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。
「アダプタ構成ウィザード」が表示されます。
「次へ」をクリックします。
図8-5に示すように、アダプタ構成ウィザードの「サービス名」ページが表示されます。
サービス名を入力して「次へ」をクリックします。
図8-6に示すように、アダプタ構成ウィザードの「JMSプロバイダ」ページが表示されます。
操作を1つ選択します。この例では「Oracle Weblogic JMS」を選択します。
Oracle Enterprise Messaging Service (OEMS): WebLogicサービスまたはアドバンスト・キューイング・メッセージ・サービスと統合できます。
サード・パーティ: このオプションを選択すると、サード・パーティのプロバイダと統合できます。
「次へ」をクリックします。
アダプタ構成ウィザードの「サービス接続」ページが表示されます。
設計時環境とデプロイ先サーバーの間の接続性を確立する必要があります。
第2.7項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明した手順に従って、アプリケーション・サーバー接続を作成します。
「次へ」をクリックします。図8-7に示すように、「アダプタ・インタフェース」ページが表示されます。
「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択します。
「次へ」をクリックします。
アダプタ構成ウィザードの「操作」ページが表示されます。
「メッセージ消費」、「メッセージ発行」または「リクエスト/リプライ」を選択します。この例では「メッセージ消費」を選択します。
図8-8に示すように、操作名は自動的に入力されます。
「メッセージ消費」オプションを選択すると、JMS宛先からのインバウンド・メッセージをアダプタで消費(受信)できます。
「次へ」をクリックします。
図8-9に示すように、アダプタ構成ウィザードの「消費操作のパラメータ」ページが表示されます。
次のフィールドに値を入力します。
接続先名
メッセージの送信元である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名で指定した値がOracle JMSアダプタのweblogic-ra.xmlファイルに存在する必要があります。
適切なパラメータを入力したら、「次へ」をクリックします。
図8-10に示すように、アダプタ構成ウィザードの「メッセージ」ページが表示されます。このページでの設定により、メッセージ・ペイロードの適切なスキーマが定義されます。
次のいずれかを実行できます。
「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択します。これにより残りのフィールドが使用できなくなります。
ネイティブ・フォーマットの定義プロセスを支援するネイティブ・フォーマット・ビルダー・ウィザードを起動するには、「ネイティブ・フォーマットのスキーマの定義」をクリックします。
スキーマ・ファイルURLのパスを入力します(またはパスを参照します)。
次に、最後に示した、スキーマ・ファイルURLを参照するオプションの手順を示します。
「参照」ボタンをクリックします。
図8-11に示すように、「タイプ・エクスプローラ」ナビゲーション・ツリーを含む「タイプ・チューザ」ダイアログが表示されます。
ツリーを参照し、適切なスキーマ・タイプを選択して「OK」をクリックします。
今度は、図8-12に示すように、「スキーマ・ファイルのURL」フィールドおよび「スキーマ要素」フィールドが入力された状態で、「メッセージ」ページが再表示されます。
「次へ」をクリックします。
「終了」ページが表示されます。このボックスには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。
「終了」をクリックします。
「composite.xml」ページが表示されます。
アダプタ構成ウィザードにより次のコンポジット・ファイルが生成されます。
<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>
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>
新規接続は、Oracle WebLogic Server管理コンソールを使用して作成する方法もあることに注意してください。
Oracle WebLogic Server管理コンソールを使用した新規接続の作成
次の手順に従って、Oracle WebLogic Server管理コンソールで新規接続を作成します。
Oracle WebLogic Server管理コンソールhttp://
servername
:
portnumber
/console
にナビゲートします。
必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。
Oracle WebLogic Server管理コンソールのホーム・ページが表示されます。
「ドメイン構造」ペインで「デプロイメント」を選択します。
Oracle WebLogic Server管理コンソールの「デプロイメントの概要」ページが表示されます。
「デプロイメント」で、デプロイしたJMSアダプタをクリックします。たとえば、JmsAdapterをクリックします。
Oracle WebLogic Server管理コンソールの「JmsAdapterの設定」ページが表示されます。
「構成」タブをクリックし、「アウトバウンド接続プール」タブをクリックします。
「アウトバウンド接続プールの構成表」が表示されます。
「次へ」をクリックします。
「新しいアウトバウンド接続の作成」ページが表示されます。
デフォルトのアウトバウンド接続グループを選択して「次へ」をクリックします。
「次へ」をクリックします。
「JNDI名」フィールドに、新規接続インスタンスの取得に使用するJNDI名を入力します。たとえば、eis/wls/Queue
と入力します。
JNDIフィールドには任意の名前を指定できることに注意してください。ただし、JDeveloperで消費操作または発行操作のパラメータを定義する際に同じJNDI名を使用する必要があります。
「終了」をクリックします。
「デプロイメント・プラン保存アシスタント」ページが表示されます。
構成の変更内容は、新規デプロイメント計画に格納する必要があります。
「パス」フィールドで、デプロイメント計画ファイルのパスを選択または入力します。パスは「.xml」で終了する必要があります。
「OK」をクリックします。
新規接続が作成されました。この操作の完了後に、作成したプロパティが正しいかどうかを確認する必要があります。
「JmsAdapterの設定」ページで、「構成」タブをクリックし、「プロパティ」タブをクリックします。
作成した接続はこのページに表示されます。この値が正しいかどうかを確認します。たとえば、サード・パーティのJMSサーバーに接続する場合は、「コネクション・ファクトリの位置」フィールドにサード・パーティのJMSサーバーに適用可能な正しい値が設定されていることを確認します。
注意: この例では、Oracle WebLogic Server管理コンソールを使用してOracle JMSアダプタ用の新規接続を作成しました。他のアダプタ用の接続を作成するには、同じ手順に従う必要があります。ただし、ステップ4では接続の作成対象として適切なアダプタを選択します。 |
「保存」をクリックします。
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.2項「アダプタ構成ウィザードを使用したOracle JMSアダプタの構成」のステップ13において、定義の手順が異なります。消費操作パラメータを指定するかわりに、次の発行操作パラメータを指定します。これにより、JMS宛先へのアウトバウンド・メッセージをアダプタで発行(送信)できます。図8-13に、「発行操作のパラメータ」ページを示します。
接続先名:
メッセージの配信先にする必要のあるJMSキューまたはトピックのJNDI名。入力する名前は、使用するJMSプロバイダのタイプに基づきます。
接続先名の詳細は、次の項を参照してください。
メッセージ本文のタイプ:
サポートされている値は、TextMessage
、BytesMessage
およびMapMessage
です。このリリースでは、StreamMessage
メッセージ・タイプはサポートされていません。
配信モード:
値は「永続」
または「非永続」
です。永続配信モードでは、今後の使用に備えて、永続サブスクライバによりメッセージを保存するパブリッシャである永続JMSパブリッシャを指定します。永続サブスクライバは、第8.4.1.2項「アダプタ構成ウィザードを使用したOracle JMSアダプタの構成」のステップ15の対応するフィールドに永続サブスクライバIDのあるメッセージ消費です。非永続サブスクライバでは、アダプタがアクティブではないときに発行されたメッセージは失われます。永続サブスクライバでは、永続パブリッシャに保存されていたメッセージをダウンロードするため、すべてのメッセージを受信するために常にアクティブである必要はありません。
優先度:
優先度の値を選択します。9
は最も高い優先度を、0
は最も低い優先度を表します。デフォルトは4
です。
TimeToLive:
メッセージが失効して消費できなくなるまでの期間です。
この項では、直接接続と非直接接続用にTibco JMSを使用するOracle JMSアダプタの構成方法について説明します。
次の手順を実行します。
次のファイルを<SOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>/lib
フォルダにコピーします。
/<YOUR-TIBCO-INSTALL-LOCATION>/clients/java/tibjms.jar
次の例に示すように、AS11gR1SOA/soa/connectors/JmsAdapter.rar
にあるweblogic-ra.xml
ファイルを変更してコネクタ・ファクトリを構成します。
<connection-instance> <jndi-name>eis/tibjms/Topic</jndi-name> <connection-properties> <properties> <property> <name>ConnectionFactoryLocation</name> <value>TopicConnectionFactory</value> </property> <property> <name>FactoryProperties</name> <value>java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory;java.naming.provider.url=tibjmsnaming://<HOST>:<PORT>;java.naming.security.principal=<USERNAME>;java.naming.security.credentials=<PASSWORD></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> <connection-instance> <jndi-name>eis/tibjms/Queue</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://<HOST>:<PORT>;java.naming.security.principal=<USERNAME>;java.naming.security.credentials=<PASSWORD></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>がそれぞれadmin
およびpassword
であることに注意してください。
または、Oracle WebLogic Server管理コンソールを使用して新規コネクション・ファクトリを作成するには、第2.19項「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。
次の手順を実行します。
次のファイルを<SOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>/lib
フォルダにコピーします。
/<YOUR-TIBCO-INSTALL-LOCATION>/clients/java/tibjms.jar
次の例に示すように、AS11gR1SOA/soa/connectors/JmsAdapter.rar
にあるweblogic-ra.xml
ファイルを変更してコネクタ・ファクトリを構成します。
<connection-instance> <jndi-name>eis/tibjmsDirect/Queue</jndi-name> <connection-properties> <properties> <property> <name>ConnectionFactoryLocation</name> <value>com.tibco.tibjms.TibjmsQueueConnectionFactory</value> </property> <property> <name>FactoryProperties</name> <value>ServerUrl=tcp://<HOST>:<PORT>;UserName=<USERNAME>;UserPassword=<PASSWORD></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/tibjmsDirect/Topic</jndi-name> <connection-properties> <properties> <property> <name>ConnectionFactoryLocation</name> <value>com.tibco.tibjms.TibjmsTopicConnectionFactory</value> </property> <property> <name>FactoryProperties</name> <value>ServerUrl=tcp://<HOST>:<PORT>;UserName=<USERNAME>;UserPassword=<PASSWORD></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>
デフォルトの<USERNAME>および<PASSWORD>がそれぞれadmin
およびpassword
であることに注意してください。
または、Oracle WebLogic Server管理コンソールを使用して新規コネクション・ファクトリを作成するには、第2.19項「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。
この項では、非XAおよびXAデータソース用にIBM WebSphere MQ JMSを使用するOracle JMSアダプタの構成方法について説明します。
次の手順を実行します。
次のファイルを<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
次の例に示すように、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管理コンソールを使用して新規コネクション・ファクトリを作成するには、第2.19項「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。
次の手順を実行します。
次のファイルを<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拡張トランザクション・クライアント(別途ライセンスが必要なオプション・コンポーネント)です。
次の例に示すように、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管理コンソールを使用して新規コネクション・ファクトリを作成するには、第2.19項「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。
この項では、Active MQ JMSを使用するOracle JMSアダプタの構成方法について説明します。
次の手順を実行します: 次のファイルを<SOAInstall_DIR>/user_projects/domains/<DOMAIN_NAME>/lib
フォルダにコピーします。
/<YOUR-ACTIVEMQ-INSTALL-LOCATION>//activemq-core-4.1.1.jar
/<YOUR-ACTIVEMQ-INSTALL-LOCATION>//backport-util-concurrent-2.1.jar
/<YOUR-ACTIVEMQ-INSTALL-LOCATION>//activeio-core-3.0.0-incubator.jar
/<YOUR-ACTIVEMQ-INSTALL-LOCATION>//commons-logging-1.1.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></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管理コンソールを使用して新規コネクション・ファクトリを構成するには、第2.19項「アダプタ・コネクション・ファクトリの追加」で説明する手順に従います。
Oracle BPEL PMのこのWLS JMSテキスト・メッセージの使用例では、Oracle JMSアダプタでWLS JMSキューとの間のエンキューおよびデキューを実行する方法について説明します。
メディエータ・ビジネス・プロセスのWLS JMSテキスト・メッセージ・シナリオの場合、adapters-jms-101-wlsjms-textmessageusingqueues
サンプルに含まれているartifacts.zip
ファイルの次のファイルが必要です。
artifacts/schemas/expense.xsd
adapters-jms-101-wlsjms-textmessageusingqueues
サンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択します。
この項には、次の項目が含まれます。
Oracle BPEL PMのWLS JMSテキスト・メッセージの使用例では、前提条件として次のタスクを実行する必要があります。
次の手順を実行して、この使用例で必要となるキューを作成します。
Oracle WebLogic Server管理コンソールhttp://
servername
:portnumber
/console
にナビゲートします。
必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。
図8-14に示すように、Oracle WebLogic Server管理コンソールのホーム・ページが表示されます。
「ドメイン構造」ペインで、「サービス」、「メッセージング」、「JMSモジュール」の順にナビゲートします。
Oracle WebLogic Server管理コンソールの「JMSモジュール」ページが表示されます。
既存のモジュールのいずれかをクリックします。この例では、「SOAJMSModule」をクリックします。
Oracle WebLogic Server管理コンソールの「SOAJMSModuleの設定」ページが表示されます。
「リソースの概要」セクションで、「新規作成」をクリックします。
Oracle WebLogic Server管理コンソールの「新しいJMSシステム・モジュール・リソースの作成」ページが表示されます。
「キュー」を選択して「次へ」をクリックします。
次のキューの詳細を入力します。
名前
JNDI名
テンプレート
「次へ」をクリックします。
「サブデプロイメント」リストから、使用するサブデプロイメントを選択します。
「終了」をクリックします。
ReceiveQueue
という名前のキューが作成されました。
ステップ1から10を繰り返して、SendQueue
という名前のキューを作成します。
次のコードを使用して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="""> </xsd:element> <xsd:element name="Type" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""> </xsd:element> <xsd:element name="Quantity" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="," nxsd:quotedBy="""> </xsd:element> <xsd:element name="Rate" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="${eol}" nxsd:quotedBy="""> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> <!--NXSDWIZ:C:\errors\inputFiles\orders.txt:-->
設計時環境とデプロイ先サーバーの間の接続性を確立する必要があります。第2.7項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明した手順に従って、アプリケーション・サーバー接続を作成します。
SOAコンポジットが含まれるJDeveloperアプリケーションを作成する必要があります。次の手順に従って新規アプリケーションとSOAプロジェクトを作成します。
JDeveloperを開きます。
「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。「汎用アプリケーションの作成 - アプリケーションの名前付け」ダイアログが表示されます。
「アプリケーション名」フィールドにアプリケーションの名前を入力します。たとえば、queue2queue
と入力します。
「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。
「次へ」をクリックします。
「プロジェクトの名前付け」ページが表示されます。
「プロジェクト名」フィールドにわかりやすい名前を入力します。たとえば、queue2queue
と入力します。
「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。
「次へ」をクリックします。「汎用アプリケーションの作成 - SOA設定の設定」ページが表示されます。
「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。
新規アプリケーションおよびSOAプロジェクトが作成されました。
「BPELプロセスの作成」ページが表示されます。
「名前」フィールドにBPELプロセスの名前を入力します。たとえば、queue2queue
と入力します。
「テンプレート」リストで「インタフェースを後で定義」を選択し、「OK」をクリックします。
BPELプロセスが作成されました。
設計領域に、queue2queue
アプリケーション、queue2queue
プロジェクトおよびSOAコンポジットが表示されます。
Q2Qorders.xsd
ファイルをプロジェクトのXSDフォルダにコピーします。
次の手順を実行し、メッセージをキューにデキューするアダプタ・サービスを作成します。
「サービス・アダプタ」リストから「JMSアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドにInbound
と入力して「OK」をクリックします。
「JMSプロバイダ」ページが表示されます。
図8-15に示すように、「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Weblogic JMS」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
図8-16に示すように、第8.4.5.2項「アプリケーション・サーバー接続の作成」で作成した接続を選択します。
「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
図8-17に示すように、「メッセージ消費」を選択して「次へ」をクリックします。
「消費操作のパラメータ」ページが表示されます。
「参照」をクリックし、「接続先」フィールドで「ReceiveQueue」を選択します。
「消費操作のパラメータ」ページが表示されます。
消費操作のパラメータを入力して「次へ」をクリックします。
「メッセージ」ページが表示されます。
注意: アダプタが管理モードで確実に実行されるように、JNDI名で指定した値がOracle JMSアダプタのweblogic-ra.xml ファイルに存在する必要があります。 |
「URL」フィールドの端にある「参照」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
図8-18に示すように、「プロジェクトのスキーマ・ファイル」、「Q2Qorders.xsd」および「Items」を順番に選択します。
「次へ」をクリックします。図8-19に示すように、「メッセージ」ページの「URL」にQ2Qorders.xsdスキーマ・ファイルが表示されます。
「次へ」をクリックします。「終了」ページが表示されます。
「終了」をクリックします。JMSインバウンド・アダプタ・サービスの構成を完了しました。
リクエスト・メッセージをエンキューし、対応するレスポンス・メッセージ(レポート)をキューからデキューするアダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」から、「JMSアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。「サービス名」ページが表示されます。
「サービス名」フィールドにOutboundと入力して「OK」をクリックします。「JMSプロバイダ」ページが表示されます。
「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Weblogic JMS」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
第8.4.5.2項「アプリケーション・サーバー接続の作成」で作成した接続を選択し、「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
「メッセージ発行」を選択して「次へ」をクリックします。「発行操作のパラメータ」ページが表示されます。
「参照」をクリックし、「接続先」フィールドで「SendQueue」を選択します。「発行操作のパラメータ」ページが表示されます。
「次へ」をクリックします。「メッセージ」ページが表示されます。
「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」、「Q2Qorders.xsd」および「Items」を順番に選択します。
「次へ」をクリックします。「メッセージ」ダイアログの「URL」にQ2Qorders.xsdスキーマ・ファイルが表示されます。
「次へ」をクリックします。「終了」ページが表示されます。
「終了」をクリックします。JMSアダプタ・サービスの構成が完了し、「composite.xml」ページが表示されます。
作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)を接続する必要があります。コンポーネントを接続する手順は、次のとおりです。
「公開されたサービス」領域にあるインバウンドOracle JMSアダプタ・コンポーネント内の小さい三角形を、「コンポーネント」領域のBPELプロセス内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のアウトバウンドOracle JMSアダプタ内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
JDeveloperのcomposite.xmlが図8-20のように表示されます。
「ファイル」、「すべて保存」を順番にクリックします。
「queue2queue」をダブルクリックします。
「queue2queue.bpel」ページが表示されます。
図8-21に示すように、「コンポーネント・パレット」から、receive、assignおよびinvokeアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。
「Receive」をダブルクリックします。
「Receive」ダイアログが表示されます。
「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。
「パートナ・リンク・チューザ」ダイアログが表示されます。
「Inbound」を選択して「OK」をクリックします。
「パートナ・リンク」フィールドに値Inboundが移入された状態で「Receive」ダイアログが表示されます。
「変数」フィールドの端に表示される「変数の自動作成」アイコンをクリックします。
「変数の作成」ダイアログが表示されます。
デフォルトを受け入れて「OK」をクリックします。
図8-22に示すように、「インスタンスの作成」ボックスを選択して「OK」をクリックします。
invokeアクティビティをダブルクリックします。
「Invoke」ダイアログが表示されます。
「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。
「パートナ・リンク・チューザ」ダイアログが表示されます。
「Outbound」を選択して「OK」をクリックします。
「パートナ・リンク」フィールドに値Outboundが移入された状態で「Invoke」ダイアログが表示されます。
「入力変数」フィールドの端に表示される「入力変数の自動作成」アイコンをクリックします。
「変数の作成」ダイアログが表示されます。
デフォルトを受け入れて「OK」をクリックします。
図8-23に示すように、「Invoke」ダイアログが表示されます。
「OK」をクリックします。
assignアクティビティをダブルクリックします。
「Assign」ダイアログが表示されます。
「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。
図8-24に示すように、変数を選択して「OK」をクリックします。
「Assign」ダイアログで「OK」をクリックします。
「ファイル」、「すべて保存」を順番にクリックします。
前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。JDeveloperを使用してアプリケーション・プロファイルをデプロイするには、次の手順に従います。
第2章の「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明されている手順を使用して、アプリケーション・サーバー接続を作成します。
第2.8項「Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。
Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。
http://
servername
:
portnumber
/em
にナビゲートします。
デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。
「最後の5つのインスタンス」ペインに、新規インスタンスのエントリがあります。これは、queue2queue.java
を使用してメッセージをエンキューするときにトリガーされたインスタンスです。
インスタンスのいずれかをクリックします。「フローのトレース」ページが表示されます。
「TextMessage」コンポーネント・インスタンスをクリックします。「監査」ページが表示されます。
「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。
Oracle 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>
Oracle JMSアダプタでリモートWLS JMSサーバーにあるリモート・キューから読み取れるようにするには、次のように構成する必要があります。
両方のサーバーに一意のドメイン名とJMSサーバー名が必要です。
2つのサーバー間でグローバルな信頼を有効化する必要があります。
サーバー間でグローバルな信頼を有効化する方法については、次のリンクを参照してください。
この構成は、WLS9.2サーバーにあるキューまたはトピックに接続する際にも適しています。
JMSアダプタを使用すると、SOAがインストールされているWebLogicServerドメインに対してリモートになっている、ドメイン内のWebLogic Server JMSの宛先の場所と対話できます。
JMSアダプタを介してリモートの宛先にアクセスできるようにする2つのオプションがサポートされています。
アクセス・パラメータにリモート・ドメインを指定したweblogic-ra.xmlファイルのFactoryProperties
の指定による直接アクセス。
リモート・ドメインにアクセスするように外部サーバーを構成。
インバウンドの使用例では、両方のオプションがサポートされます。アウトバウンドの使用例の場合のみ、直接アクセスはサポートされますが、外部サーバーの構成はサポートされません。
Oracle JMSアダプタでは、同期と非同期のリクエスト-リプライ相互作用パターンの両方がサポートされています。
アダプタ構成ウィザードを使用すると、Oracle JMSアダプタを同期リクエスト-リプライ相互作用パターンに使用できるプロセスをモデル化できます。この場合、Oracle JMSアダプタはリクエスト・キューにリクエストを送信し、リプライ・キューからのレスポンスを待ってから実行を継続します。下位では、Oracle JMSアダプタにより新規の相互作用パターンJmsRequestReplyInteractionSpec
が使用されます。このインタラクション仕様では、リクエストとリプライの宛先名の構成が許可されています。
11g リリース1 (11.1.1.4.0)の新機能であるバリエーションでは、リプライ・キューの一部として一時返信先の使用が許可されます。基本的に、このパターンではOracle JMSアダプタはJMS宛先にメッセージを送信できます。その後、アダプタはJMSReplyTo
ヘッダーをリプライの宛先に設定します。この値を使用してサード・パーティ・クライアントからリプライの宛先にメッセージが送信され、その後にメッセージがOracle JMSアダプタによりデキューされます。
Oracle JMSアダプタを同期パターンで使用する場合は、非XAコネクション・ファクトリを使用し、コネクタ・ファクトリのisTransacted
プロパティをweblogic-ra.xml
でtrue
に設定してください。
Oracle WebLogic Server JMSとの同期パターンでOracle JMSアダプタを使用する場合、コネクション・ファクトリはweblogic.jms.ConnectionFactory
またはその他任意の非XAコネクション・ファクトリにする必要があります。
詳細は、Oracle SOA Sample Codeサイトにアクセスし、
「Adapters」タブを選択することで次のサンプルを入手できます。
adapters-jms-106-wlsjms-syncrequestreply
adapters-jms-107-wlsjms-syncrequestreplywithtemporaryreplydestination
アダプタ構成ウィザードを使用すると、Oracle JMSアダプタを非同期リクエスト-リプライ相互作用パターンに使用できるプロセスをモデル化できます。
基本的に、このパターンではOracle JMSアダプタはJMS宛先にメッセージを送信できます。メッセージがリプライ・キューで受信されると、Oracle JMSアダプタはメッセージを正しいコンポジットまたはコンポーネント・インスタンスにルーティングできます。相関付けはリクエスト・メッセージのJMSMessageID
に基づいて実行され、このIDはリプライ・メッセージのJMSCorrelationID
および基礎となるコンポーネントの対話IDとなります。
詳細は、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択することで次のサンプルを入手できます。
adapters-jms-105-wlsjms-nativecorrelation
この使用例では、Oracle JMSアダプタでAQ JMSキューとの間のエンキューおよびデキューを実行する方法について説明します。
adapters-jms-108-aqjms-textmessageusingqueues
サンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択します。
この項には、次の項目が含まれます。
この使用例を実行するには、前提条件として次のタスクを実行する必要があります。
Oracle WebLogic Server管理コンソールでAQ JMSを構成するには、次の手順を実行する必要があります。
Oracle WebLogic JMSモジュールの追加
Oracle WebLogic JMSモジュールの追加はオプションです。AQ JMS外部サーバーを既存のJMSモジュールに作成することもできます。
Oracle WebLogic Server管理コンソールhttp://
servername
:
portnumber
/console
にナビゲートします。
必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。
Oracle WebLogic Server管理コンソールのホーム・ページが表示されます。
「ドメイン構造」ペインで、「サービス」、「メッセージング」、「JMSモジュール」の順にナビゲートします。
Oracle WebLogic Server管理コンソールの「JMSモジュール」ページが表示されます。
「新規作成」をクリックして新規のWebLogic JMSモジュールを作成します。
Oracle WebLogic Server管理コンソールの「JMSシステム・モジュールの作成」ページが表示されます。
JMSモジュール名を入力して「次へ」をクリックします。
Oracle WebLogic Server管理コンソールの「JMSシステム・モジュールの作成」ページが表示されます。
SOAコンポーネントが実行中のターゲット・サーバーを選択し、「次へ」をクリックします。
Oracle WebLogic Server管理コンソールの「JMSシステム・モジュールの作成」ページが表示されます。
「終了」をクリックします。
JMSモジュールが作成されました。
JMSモジュールへのAQ JMS外部サーバーの追加
次のステップは、次の手順に従ってJMSモジュールにAQ JMS外部サーバーを追加することです。
作成したJMSモジュールをクリックします。
Oracle WebLogic Server管理コンソールの「AQJMSModuleの設定」ページが表示されます。
「リソースの概要」表で、「新規作成」をクリックして新規のJMSシステム・モジュール・リソースを作成します。
Oracle WebLogic Server管理コンソールの「新しいJMSシステム・モジュール・リソースの作成」ページが表示されます。
「作成するリソースのタイプを選択してください。」で、「外部サーバー」を選択して「次へ」をクリックします。
Oracle WebLogic Server管理コンソールの「新しいJMSシステム・モジュール・リソースの作成」ページが表示されます。
「名前」フィールドに外部サーバー名を入力し、「終了」をクリックします。
Oracle WebLogic Server管理コンソールの「<JMSモジュール名>の設定」ページが表示されます。
AQ JMS外部サーバーの構成
次のステップは、作成したAQ JMS外部サーバーを構成することです。
「リソースの概要」表に表示されるAQ JMS外部サーバーをクリックします。
Oracle WebLogic Server管理コンソールの「TestAQJMS_ForeignServerの設定」ページが表示されます。
次の値を入力します。
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アプリケーション・クライアントで使用される場合にのみ必須です。
注意: RACデータベースをアダプタ・エンドポイントとして使用する場合は、前述の手順で説明したJNDIプロパティが指すデータソースでマルチ・データソースを指す必要があります。このようなエンドポイントに使用される個別データソースとマルチ・データソースには、第2.21項「Oracle JCAアダプタで使用するデータソースの推奨設定」に示す推奨設定を使用する必要があります。 |
AQ JMS外部サーバーへのコネクション・ファクトリの追加
AQJMS外部サーバーにコネクション・ファクトリを追加する手順は、次のとおりです。
「<外部サーバー名>の設定」ページの「接続ファクトリ」タブで、作成したAQJMS外部サーバーをクリックします。
「新規作成」をクリックします。
Oracle WebLogic Server管理コンソールの「新しい外部JMS接続ファクトリの作成」ページが表示されます。
「名前」フィールドに、このコネクション・ファクトリの名前を入力します。これは、Oracle WebLogic Serverで参照される論理名です。
「ローカルJNDI名」フィールドに、このコネクション・ファクトリを参照するためにアプリケーションで使用するローカルJNDI名を入力します。
注意: サンプルの使用例AQQueuetoQueue で提供されるJNDI名がeis/aqjms/Queueのキューに接続する場合は、ローカルJNDI名にaqjms/XAQueueConnectionFactory を指定してください。
また、JNDI名が |
「リモートJNDI名」フィールドに、要件に応じて次のいずれかの値を入力します。このコネクション・ファクトリをグローバル変換に使用する場合はXAベースのコネクション・ファクトリを使用し、それ以外の場合は非XAベースのコネクション・ファクトリを使用します。
QueueConnectionFactory
TopicConnectionFactory
ConnectionFactory
XAQueueConnectionFactory
XATopicConnectionFactory
XAConnectionFactory
「OK」をクリックします。
AQ JMS外部サーバーへの宛先の追加
AQJMS外部サーバーに宛先を追加する手順は、次のとおりです。
「<外部サーバー名>の設定」ページの「宛先」タブをクリックします。
「新規作成」をクリックし、この宛先の名前を指定します。これはOracle WebLogic Serverにより参照される論理名で、この宛先名では何も実行されません。
「ローカルJNDI名」フィールドに、この宛先を参照するためにアプリケーションで使用するローカルJNDI名を入力します。
「リモートJNDI名」フィールドに、宛先がキューの場合はQueues/<queue name>
、宛先がトピックの場合はTopics/<topic name>
と入力します。
「OK」をクリックします。
Oracle WebLogic Server管理コンソールを再起動します。
Oracle WebLogic ServerでAQJMSの構成を完了しました。
キューを作成する手順は、次のとおりです。
setup_user.sql
スクリプトを実行します。
create_start_queues.sql
スクリプトを実行します。
これらのスクリプトは、adapters-jms-108-aqjms-textmessageusingqueues
サンプルのartifacts/sql
ディレクトリにあります。adapters-jms-108-aqjms-textmessageusingqueues
サンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択します。
設計時環境とデプロイ先サーバーの間の接続性を確立する必要があります。第2.7項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明した手順に従って、アプリケーション・サーバー接続を作成します。
SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従って新規アプリケーションとSOAプロジェクトを作成します。
JDeveloperを開きます。
「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。「汎用アプリケーションの作成 - アプリケーションの名前付け」ダイアログが表示されます。
「アプリケーション名」フィールドにアプリケーションの名前を入力します。たとえば、AQQueue2Queue
と入力します。
「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。
「次へ」をクリックします。
「プロジェクトの名前付け」ページが表示されます。
「プロジェクト名」フィールドにわかりやすい名前を入力します。たとえば、AQQueue2Queue
と入力します。
「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。
「次へ」をクリックします。「汎用アプリケーションの作成 - SOA設定の設定」ページが表示されます。
「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。
新規アプリケーションおよびSOAプロジェクトが作成されました。
「BPELプロセスの作成」ページが表示されます。
「名前」フィールドにBPELプロセスの名前を入力します。
「テンプレート」リストで「インタフェースを後で定義」を選択し、「OK」をクリックします。
BPELプロセスが作成されました。
AQQueue2Queue
アプリケーション、AQQueue2Queue
プロジェクトおよびSOAコンポジットが設計領域に表示されます。
expense.xsd
ファイルをプロジェクトのXSDフォルダにコピーします。
このファイルは、adapters-jms-108-aqjms-textmessageusingqueues
サンプルのartifacts/schemas
ディレクトリにあります。adapters-jms-108-aqjms-textmessageusingqueues
サンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスし、「Adapters」タブを選択します。
次の手順を実行し、メッセージをキューにデキューするアダプタ・サービスを作成します。
「サービス・アダプタ」リストから「JMSアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。「サービス名」ページが表示されます。
「サービス名」フィールドにInboundと入力して「OK」をクリックします。「JMSプロバイダ」ページが表示されます。
「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Advanced Queueing」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
第8.4.5.2項「アプリケーション・サーバー接続の作成」で作成した接続を選択します。
「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
「メッセージ消費」を選択して「次へ」をクリックします。「消費操作のパラメータ」ページが表示されます。
「参照」をクリックし、「接続先」フィールドで「testInQueue」を選択します。
「次へ」をクリックします。「メッセージ」ページが表示されます。
「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」と「expense.xsd」を順番に選択します。
「次へ」をクリックします。「メッセージ」ページの「URL」フィールドにexpenses.xsdスキーマ・ファイルが表示されます。
「次へ」をクリックします。「終了」ページが表示されます。
「終了」をクリックします。JMSインバウンド・アダプタ・サービスの構成を完了しました。
リクエスト・メッセージをエンキューし、対応するレスポンス・メッセージ(レポート)をキューからデキューするアダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」から、「JMSアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。「サービス名」ページが表示されます。
「サービス名」フィールドにOutboundと入力して「OK」をクリックします。「JMSプロバイダ」ページが表示されます。
「Oracle Enterprise Messaging Service (OEMS)」ボックスで「Oracle Advanced Queueing」を選択し、「次へ」をクリックします。「サービス接続」ページが表示されます。
第8.4.5.2項「アプリケーション・サーバー接続の作成」で作成した接続を選択し、「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作」ページが表示されます。
「メッセージ発行」を選択して「次へ」をクリックします。「発行操作のパラメータ」ページが表示されます。
「参照」をクリックし、「接続先」フィールドで「testOutQueue」を選択します。「発行操作のパラメータ」ページが表示されます。
「次へ」をクリックします。「メッセージ」ページが表示されます。
「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。
「プロジェクトのスキーマ・ファイル」と「expense.xsd」を順番に選択します。
「次へ」をクリックします。「メッセージ」ダイアログの「URL」フィールドにexpense.xsdスキーマ・ファイルが表示されます。
「次へ」をクリックします。「終了」ページが表示されます。
「終了」をクリックします。JMSアダプタ・サービスの構成が完了し、「composite.xml」ページが表示されます。
作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)を接続する必要があります。コンポーネントをまとめて接続する手順は、次のとおりです。
「公開されたサービス」領域にあるインバウンドOracle JMSアダプタ・コンポーネント内の小さい三角形を、「コンポーネント」領域のBPELプロセス内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のアウトバウンドOracle JMSアダプタ内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
JDeveloperのcomposite.xmlが図8-25のように表示されます。
「ファイル」、「すべて保存」を順番にクリックします。
BPELプロセスをダブルクリックします。「BPELProcess1.bpel」ページが表示されます。
「コンポーネント・パレット」から、receive、assignおよびinvokeアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。
receiveアクティビティをダブルクリックします。
「Receive」ダイアログが表示されます。
「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。
「パートナ・リンク・チューザ」ダイアログが表示されます。
「Inbound」を選択して「OK」をクリックします。
「パートナ・リンク」フィールドに値Outboundが移入された状態で「Receive」ダイアログが表示されます。
「変数」フィールドの端に表示される「変数の自動作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
デフォルトを受け入れて「OK」をクリックします。
「インスタンスの作成」ボックスを選択します。
Outboundのためのinvokeアクティビティをダブルクリックします。
「Invoke」ダイアログが表示されます。
「入力変数」フィールドの端に表示される「入力変数の自動作成」アイコンをクリックします。
「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。
「パートナ・リンク・チューザ」ダイアログが表示されます。
「Outbound」を選択して「OK」をクリックします。
「パートナ・リンク」フィールドに値Outboundが移入された状態で「Invoke」ダイアログが表示されます。
デフォルトを受け入れて「OK」をクリックします。
「OK」をクリックします。
assignアクティビティをダブルクリックします。
「Assign」ダイアログが表示されます。
「+」アイコンをクリックして「コピー操作」を選択します。
「コピー操作の作成」ダイアログが表示されます。
変数を選択して「OK」をクリックします。
「Assign」ダイアログで「OK」をクリックします。
「ファイル」、「すべて保存」を順番にクリックします。
注意: Oracle JMSアダプタを使用して永続サブスクリプションを使用するAQ JMSトピックからデキューする際に、デキュー操作が低パフォーマンスであることに気づいた場合は、アダプタ・サービスごとに複数のインバウンド・スレッドを使用することでパフォーマンス全体を高速化できます。Oracle JMSアダプタでは、エンドポイント・プロパティ ただし、非永続サブスクリプションを使用する場合、メッセージが重複するため、この解決策は機能しないことに注意してください。 |
前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。JDeveloperを使用してアプリケーション・プロファイルをデプロイするには、次の手順を実行する必要があります。
第2章の「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」で説明されている手順を使用して、アプリケーション・サーバー接続を作成します。
第2.8項「Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。
Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。
http://
servername
:portnumber
/em
にナビゲートします。デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。
「最後の5つのインスタンス」ペインに、新規インスタンスのエントリがあります。これは、AQQueue2Queue.java
を使用してメッセージをエンキューするときにトリガーされたインスタンスです。
インスタンスのいずれかをクリックします。「フローのトレース」ページが表示されます。
「TextMessage」コンポーネント・インスタンスをクリックします。「監査」ページが表示されます。
「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。
この項では、Oracle Application Server 11gで作成されたキューとトピックにOC4J 10.1.3.4からアクセスする手順について説明します。このことを行うには、Oracle WebLogic Serverを使用してOracle BPEL PM JMSアダプタを構成する必要があります。
Oracle WebLogic Serverを使用してOracle BPEL PM JMSアダプタを構成する手順は、次のとおりです。
次の手順に従ってwlfullclient.jar
ファイルを作成します。
次の例に示すようにserver/lib
ディレクトリに移動します。
cd WL_HOME
/server/lib
次のコマンドを使用して、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
wlfullclient.jar
ファイルを、次の場所にある10.1.3.4サーバーにコピーします。
<ORACLEAS_HOME>/j2ee/<OC4J_INSTANCE>/connectors/JmsAdapter/JmsAdapter
次の例に示すように、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://w3.us.oracle.com:7001;java.naming.security.principal=weblogic;java.naming.security.credentials=weblogic"/> <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にデプロイされていないかぎりサポートされていません。 |
次の例に示すように、10.1.3.4サーバーのserver.xml
ファイルを変更し、environment-naming-url-factory-enabled="true"
プロパティを追加します。
<application-server ... ... environment-naming-url-factory-enabled="true" ... >
10.1.3.4サーバーを再起動して変更内容を有効にします。
次の手順に従って、10.1.3.x OC4Jに存在するキューにアクセスするように11Gサーバーを構成できます。
次の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
次の手順は、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_soa
はoc4j_soa
インスタンスに使用します。
分散宛先は、単一の論理的な宛先としてクライアントからアクセスできる宛先のセット(キュー、物理的なJMSキュー・メンバーのセット、またはトピック、物理的なJMSトピック・メンバーのセット)です。
JMSアダプタは、使用可能通知の受信後に分散宛先メンバーにアドレス指定されたメッセージを処理できます。分散宛先メンバーに関連する使用可能通知、使用不能通知および障害通知を処理できます。JMSアダプタでこのようなメッセージを処理するには、JMSアダプタで分散宛先(キューまたはトピック)へのアクセスを可能にする追加のプロパティを指定する必要があります。
追加のプロパティを指定する場合は、複数のFactoryProperty値をセミコロンで区切ることができます。次の例を参照してください。
<property> <name>FactoryProperties</name> <value>ClientID=SOACLient2; TopicMessageDistributionAll=true</value> </property>
3つのFactoryPropertyパラメータ値を使用して、分散宛先へのアクセスの提供、複数の接続でのクライアントIDの共有の有効化、複数のサブスクライバ間での永続サブスクリプションの共有の有効化、アプリケーションごとまたはエンドポイントごとにメッセージのコピーが1つ必要かどうかの指定を行うことができます。次のプロパティがあります。
複数の接続でクライアントIDを共有できるようにするには、FactoryPropertiesパラメータのClientIDPolicy
プロパティにUNRESTRICTED
という値を使用します。値が指定されていない場合、デフォルトはUNRESTRICTED
です。デフォルト以外の値はRESTRICTED
です。デフォルトはほぼすべての用途に使用されるため、通常はこのプロパティを設定する必要はありません。次の例を参照してください。
</property> <name>FactoryProperties</name> <value>ClientIDPolicy=UNRESTRICTED</value> </property>
複数のサブスクライバ間で永続サブスクリプションを共有できるようにするには、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>
特定のインバウンドおよびアウトバウンド・キューおよびエラー処理の動作は、JMS分散キューおよび分散トピックを使用したJMSアダプタに適用されます。
インバウンド・キューの場合、JMSアダプタはインバウンド・ポーラー・スレッドを作成し、エンドポイント・アクティブ化時にWebLogic Server JMSに通知リスナーを登録します。エンドポイントの非アクティブ化時に通知リスナーを登録解除します。
JMSアダプタは、非分散環境のエラーが処理されるのと同じ方法で分散環境のエラーを処理します。再試行可能例外ではメッセージが再試行されます。再試行不能例外ではメッセージが拒否されます。
アダプタが分散キューへのメッセージを生成するときに、他のアダプタの動作からJMSアダプタの動作への変更は行われません。
分散宛先に対するJMSメッセージは、分散宛先に対してMessageProducerを作成し、特定のメンバーに対しては作成しないことで生成されます。
アウトバウンド・エラーは、アウトバウンド参照に対して以前に定義されたフォルト・ポリシーに基づいて処理されます。
分散トピックを使用したインバウンド・アダプタの場合、JMSアダプタはエンドポイントのアクティブ化時に通知リスナーをWebLogic Server JMSに登録します。JMSアダプタは、分散トピック・メンバーに対してWebLogic Server JMSから受信した使用可能通知ごとにインバウンド・ポーラー・スレッドを作成します。
ポーラー・スレッドが作成されたメンバーに対する使用不能通知が受信された場合は、インバウンド・ポーラー・スレッドが作業を停止し、必要なクリーン・アップが実行されます。永続サブスクリプションは、非分散トピックのシナリオと同様の方法でメンテナンスされます。
アダプタは、エンドポイントの非アクティブ化時に通知リスナーを登録解除します。分散トピックに到着したメッセージは、使用されている様々な設定と使用中の分散宛先のタイプ(アプリケーションごとにメッセージのコピーが1つ、またはアダプタ・エンドポイントごとにメッセージのコピーが1つ)に基づいて処理されます。
これらの各タイプの分散宛先の動作を次に示します。
JMSアダプタで使用される場合のWebLogic Serverパーティション分散トピックのデフォルトの動作では、アプリケーションごとにメッセージのコピーが1つ提供されます。各メッセージは必ず1回のみ処理する(つまり、重複する処理がない)必要があります。アプリケーションごとにメッセージのコピーが1つあるこのシナリオでは、クライアントIDとサブスクリプション名はすべての分散宛先に対して 同じ であり、 各 アダプタ・インスタンスが すべての メンバーにサブスクリプションを作成します。サーバーの再起動後も名前は一意であり不変です。パーティション分散トピックを使用する場合、無制限のクライアントIDと共有サブスクリプション・ポリシーを使用するようにJMSアダプタを構成する必要があります。この2つは分散宛先のデフォルト設定です。複製された分散トピックを使用している場合は、無制限のクライアントIDと共有サブスクリプションのポリシーを使用するようにJMSアダプタを構成する必要があります(これはデフォルト設定です)。パフォーマンスを向上させるには、パーティション分散トピックを使用する必要があります。また、アクティブ化仕様を定義するときに、メッセージ・セレクタNOT JMS_WL_DDForwarded
を指定する必要があります。
ローカル・クラスタのweblogic-ra.xml
ファイルの接続インスタンスのスニペットから構成される例については、次を参照してください。
<property> <name>FactoryProperties</name> <value>ClientID=SOAClient1;</value> </property>
分散トピックで使用できる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>
また、アクティブ化の仕様を定義するときに、メッセージ・セレクタ(NOT JMS_WL_DDForwarded
)を指定する必要があります。
パフォーマンスを向上するには、パーティション分散トピックを使用する必要があります。
複製された分散トピックを使用している場合は、無制限のクライアントIDと共有サブスクリプションのポリシーを使用するようにJMSアダプタを構成する必要があります(これはデフォルト設定です)。同時に、サブスクリプション名を一意にするには、JMSアダプタではプロパティTopicMessageDistributionAll
(デフォルト値はfalse)がtrueに設定されている必要があります。このプロパティは、weblogic-ra.xml
で接続インスタンスのFactoryProperties
プロパティを設定することで定義できます。使用例(ローカル・クラスタのweblogic-ra.xml
の接続インスタンスのスニペット)を次に示します。
<name>FactoryProperties</name> <value> ClientID=SOAClient2;TopicMessageDistributionAll=true</value> </property>
アクティブ化の仕様を定義するときに、メッセージ・セレクタも指定する必要があります。メッセージ・セレクタは、アダプタ・エンドポイントごとにメッセージのコピーを1つ作成する場合に必要です。
セレクタを指定するには、重複する分散トピックから読み取ったコンポジット・アプリケーションをモデリングするときにアダプタ・ウィザードを使用します。指定するメッセージ・セレクタのメタデータは、.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を作成し、特定のメンバーに対しては作成しないことで生成されます。
分散トピック環境では、他の環境と同様に、エラーはアウトバウンド参照に対して定義されているフォルト・ポリシーに基づいて処理されます。