13 Microsoft Message Queueing用のOracle JCAアダプタ
Oracle JCA Adapter for Microsoft Message Queueingの使用方法を学習します。このアダプタは、MSMQ機能へのアクセスを可能にし、Oracle BPEL Process Manager (Oracle BPEL PM)およびOracle Service Bus (OSB)と連携して動作します。このアダプタは、MSMQからネイティブ・フォーマット変換フレームワーク(nXSD)まで、様々なメッセージ・フォーマットの処理もサポートしています。
13.1 Oracle JCA Adapter for MSMQの概念と機能
Microsoftメッセージ・キュー(MSMQ)は、Microsoft Windowsオペレーティング・システム用の疎結合の分散メッセージング・アプリケーションを作成するためのメッセージ・インフラストラクチャおよび開発プラットフォームです。
メッセージ・キューイング・アプリケーションは、メッセージ・キューイングを使用して、異なるネットワーク間で、オフラインである可能性があるコンピュータと通信します。Microsoftメッセージ・キューは、保証付きメッセージ配信、ルーティング、セキュリティ、トランザクション・サポートおよび優先度ベース・ルーティングを提供します。
メッセージ・キューは、MSMQがメッセージを保存し、その後転送するために使用する論理コンテナであり、メッセージ・キューイングの疎結合的側面の基盤を提供します。キューイング・アプリケーションは、キューにメッセージを送信する際に、メッセージが処理されるタイミング、およびそのメッセージを実際に処理する受信アプリケーションについて認識する必要はありません。
MSMQを使用するアプリケーションは、キューの作成/検索、キューへの接続、キューの移動、キューに対するメッセージの送受信を行い、MSMQキュー・プロパティを使用して該当するキューの動作を定義します。
13.1.1 MSMQの用語
MSMQの基本概念について理解することに加え、MSMQアダプタを使用するための背景知識としてMSMQの基本用語を理解することが重要です。MSMQの用語についてよく理解するには、関連のMicrosoftドキュメントを参照する必要がありますが、MSMQアダプタの使用を補完するレベルでMSMQ製品について理解するには、次の定義が役立ちます。
-
パブリック・キュー – すべてのメッセージ・キューイング・アプリケーションが検出できる、ディレクトリ・サービスに登録されているキュー。これにより、MSMQアプリケーションはそのドメイン内の任意の場所にあるキューを検出して開くことができます。パブリック・キューにより、メッセージがActive Directoryサービス全体にレプリケートされるマルチホップ・シナリオを実現できます。
-
プライベート・キュー–通常は他のアプリケーションが検出できない、(ディレクトリ・サービスではなく)ローカル・コンピュータ上に登録されているキュー。
-
MSMQキュー – 条件が許せば、メッセージを確実に送受信できる一時記憶域の場所。
-
MSMQユーザー・メッセージ・キュー – プライベートまたはパブリックのいずれかであるキュー。
-
リモート・キュー – キュー・マネージャは、メッセージの配信、受信、認証、ルーティングを行い、ディレクトリ・サービス内の情報を保持するメッセージ・キューイング・サービスです。アプリケーションの場合、リモート・キューは、アプリケーションが通信するキューではなく、キュー・マネージャがホストするキューです。
-
配信リスト – 配信リストは、Active Directoryドメイン・サービス(ADDS)に保存されている宛先のパブリック・リストです。
-
ADDS – Active Directoryドメイン・サービスは、Windowsドメイン・ネットワーク用にMicrosoftにより実装されているディレクトリ・サービスです。ほとんどのWindows Serverオペレーティング・システムに含まれています。
-
トランザクション・キュー – トランザクション・メッセージを含むキュー。トランザクション・キューには、トランザクション内で送信されるメッセージであるトランザクション・メッセージのみを含めることができます。トランザクション・メッセージを使用して、メッセージの送信または受信を、別の操作のアクションと組み合せることができます。トランザクション・メッセージを使用すると、作業ユニットがアトミック操作として確実に実行されます。
-
非トランザクション・キュー – 非トランザクション・メッセージのみを含むキュー。メッセージ・キューイングでは、非トランザクション・キュー内にトランザクション・メッセージを含めることはできません。
-
外部キュー – メッセージ・キューイングを実行していないコンピュータ(外部コンピュータ)上にあるキュー。
13.1.1.1 jCOMおよびMSMQアダプタ
MSMQアダプタは、Oracle WebLogic jCOMを使用して、MSMQ v5.0との相互作用を可能にします。jCOMにより、Java-to-COMの統合がサポートされます。
13.1.1.1.1 背景
具体的には、WebLogic jCOMは、分散コンピューティング環境リモート・プロシージャ・コール上のCOM/DCOMの分散コンポーネント・インフラストラクチャと、Java Remote Method Protocol/Internet Inter-ORB Protocol上のRemote Method Invocation (RMI)の分散コンポーネント・インフラストラクチャの両方を実装するランタイム・コンポーネントを提供します。これにより、相互作用の反対側にあるオブジェクトが、各環境のネイティブ・オブジェクトであるかのように見えます。
分散コンポーネント・オブジェクト・モデル(Distributed Component Object Model: DCOM)モードは、コンポーネント・オブジェクト・モデル(Component Object Model: COM)を使用して異なるコンピュータ上のオブジェクト間の通信をサポートします。
DCOMモードで実行されているWebLogic jCOMアプリケーションでは、COMクライアントはWebLogic Server DCOMプロトコルと通信します。
ネイティブ・モードの場合、COMクライアントはWebLogic Serverにネイティブ呼出しを行い(COM-to-WLS)、WebLogic ServerはCOMアプリケーションにネイティブ呼出しを行います。
ネイティブ・モードでは、ローカルのオペレーティング・システムとCPU用に特にコンパイルおよび最適化された、ネイティブ・コードの動的にロードされるライブラリ(DLL)が使用されるため、COM-to-WLSアプリケーションとWLS-to-COMアプリケーションでは、ネイティブ・モードを使用するとパフォーマンスが向上します。
13.1.1.1.2 MSMQアダプタの影響
MSMQアダプタを使用する理由は、MSMQサーバーとSOAサーバーが同じマシン上にインストールされている場合にネイティブ・モードを使用できるためです。インストールされているSOAサーバーは、Windowsプラットフォームである必要があり、Linuxプラットフォームなど、別のプラットフォームであってはなりません。MSMQアダプタとMSMQが同じシステム上にインストールされている場合、jCOMプロトコル・レベルとMSMQアダプタ・レベルの両方でネイティブ・モードを有効にできます。ネイティブ・モードを使用している場合、MSMQアダプタは、MSMQサーバーと同じシステム上にあるためMSMQサーバーと直接通信でき、(MSMQアダプタとMSMQサーバーが2つの異なるマシン上にある場合に使用される)DCOMプロトコルを通信に使用する必要はありません。MSMQアダプタがMSMQ COMコンポーネントとの通信にDCOMプロトコルを使用しないようにすることで、パフォーマンス上の利点がもたらされます。
13.1.1.2 セキュリティ
MSMQアダプタがMSMQサーバーへのアウトバウンド接続を確立する必要がある場合は、有効なセキュリティ資格証明を使用してサインオンする必要があります。J2CA 1.5仕様に従って、WebLogic Serverではアウトバウンド接続についてコンテナ管理のサインオンとアプリケーション管理のサインオンの両方がサポートされています。MSMQアダプタは、これらの方法のいずれかを利用して、エンタープライズ情報システムにサインオンできます。
13.1.1.2.1 コンポーネント管理のサインオン
コンポーネント管理のサインオンでは、コンポーネント自体が、エンタープライズ情報システムへの接続を取得するためのコール時に、必要なセキュリティ資格証明を提供します。アプリケーション・サーバーは、nullのサブジェクト・インスタンスを渡して、ManagedConnectionFactory
のcreateManagedConnection
メソッドを起動します。
13.1.1.2.2 コンテナ管理のサインオン
コンテナ管理のサインオンでは、ユーザーはOracle WebLogic Serverにサインオンすると、リソース・アダプタを通してエンタープライズ情報システムにもアクセスでき、エンタープライズ情報システムに個別にサインインする必要がなくなります。
Oracle WebLogic ServerとMSMQは独立したセキュリティ・レルムを保守しているため、このことは資格証明マッピングを使用して実現されます。Oracle WebLogic Serverのセキュリティ・プリンシパルは、エンタープライズ情報システムへのアクセスに必要な対応する資格証明にマップされます。
13.1.1.3 ロギングおよび診断能力
MSMQアダプタは、アダプタ・フレームワーク・コンポーネントにより提供されるMSMQアダプタ・ロギング・フレームワークを使用して、ランタイム・ログを取得します。
MSMQアダプタは、次のログを生成します。
-
oracle.soa.adapter.msmq
-
oracle.soa.adapter.msmq.transaction
-
oracle.soa.adapter.msmq.connection
-
oracle.soa.adapter.msmq.inbound
-
oracle.soa.adapter.msmq.outbound
各ログ出力をTRACE:32
に設定して、その領域のデバッグ・ロギングを有効にしたり、oracle.soa.adapter.msmq
ログ出力をTRACE:32
に設定して、MSMQアダプタの完全ロギングを有効にすることができます。MSMQアダプタで発生する例外には、対応するエラー・コードとエラー・メッセージがあります。
13.1.2 Windows Server 2008でのMSMQの設定
Windows Server 2008のインストール環境でMSMQを使用するには、MSMQをインストールするWindows Serverの次の機能を有効にします。設定と構成の詳細は、関連のMicrosoftドキュメントを参照してください。
-
メッセージ・キュー・サーバー。インストールの詳細は、http://msdn.microsoft.com/en-us/library/aa967729.aspxにあるMicrosoftのドキュメント「Installing Message Queuing (MSMQ)」を参照してください。
-
ディレクトリ・サービス統合(パブリック・キューと配信リストの場合)。具体的な前提条件として、Windows 2008 Serverシステム上にActive Directoryドメイン・サービス(AD_DS)が構成されている必要があります。Active Directoryドメイン・サービスはMSMQパブリック・キューにアクセスする必要があり、アクセスできない場合、MSMQアダプタ使用例で使用できるのはプライベート・キューのみとなります。
-
メッセージ・キューDCOMプロキシ
インストールが正常に行われると、メッセージ・キューがMicrosoftサーバー・マネージャ・コンソール・ウィンドウの機能リンクの下に表示されます。
13.1.3 Oracle Weblogic Server for COMの設定
COMで使用するようにOracle WebLogic Serverを設定するには:
-
SOA MSMQアダプタをデプロイするサーバーのjCOMを有効にします。
jCOMがSOAサーバーで有効になっている場合は、MSMQアダプタをアクティブ化するときに、そのアダプタがデプロイされるターゲットはSOAサーバー自体である必要があります。jCOMは、アダプタのターゲットとなる管理対象サーバー上で有効になっている必要があります。『Oracle WebLogic Server Administration Consoleオンライン・ヘルプ』のjCOMの有効化を参照してください。
-
Microsoftメッセージ・キューを実行しているWindowsマシン上にWebLogicがインストールされている場合、『Oracle WebLogic Server Administration Consoleオンライン・ヘルプ』のサーバー・プロトコル: jCOMの説明に従って、構成オプション「ネイティブ・モードの有効化」によりネイティブ・モードを構成できます。
-
最後に、jCOMを有効化するには、SOA MSMQアダプタをデプロイする該当サーバーの再起動が必要です。WebLogic Serverを再起動します。
詳細は、Oracle WebLogic Server JCOMアプリケーションの開発を参照してください。
13.1.3.1 トランザクション管理およびエラー処理
アダプタに通常適用される、トランザクション管理およびエラー処理の詳細は、「アダプタ・フレームワーク」を参照してください。
13.1.3.1.1 トランザクション管理
MSMQアダプタ・トランザクション・サポートはデフォルトでLocalTransactionに設定されます。MSMQアダプタは、XAトランザクションをサポートしていません。トランザクション・キューは、ローカル・トランザクション・セマンティクスで使用される場合にサポートされます。
インバウンドとアウトバウンドの両方のエラーの場合において、MSMQアダプタは、JCA管理対象コネクション・ファクトリのTransactionMode
プロパティがSingle
に設定されていると、内部MSMQトランザクションを開始します。
JCA管理対象コネクション・ファクトリのTransactionMode
プロパティがNone
に設定されている場合、MSMQアダプタは、MSMQ側でトランザクションを開始せず、メッセージはトランザクションではない方法で生成および消費されます。
TransactionMode
プロパティ値のNoneは、非トランザクション・キューに対してメッセージを送受信する場合に必要となります。
13.1.3.1.2 フォルト処理
MSMQアダプタは、MSMQキューに対するメッセージの生成や消費の実行時に発生したフォルトを処理できます。
フォルトが発生した場合、フォルトの性質に基づいて、またエラーが再試行可能であるか再試行不可であるかに応じて、メッセージはBPELリカバリ・キューに配信されるか、再試行されます。アダプタ・フォルトの処理方法の詳細は、「エラー処理」を参照してください。
MSMQアダプタはXAトランザクションをサポートしていないため、XA再試行可能エラーはサポートされていません。
XA再試行可能エラーは、XAトランザクションのコンテキストで発生したエラーを指しています。アダプタは、PCRetriable例外またはXARetriable例外をスローできます。ただし、MSMQアダプタで使用する場合はXAがないため、MSMQアダプタではXAエラーは許可されていません。
13.1.3.1.3 アウトバウンド再試行可能エラー
MSMQアダプタは、構成されたバインディング・プロパティに応じて再試行を実行します。これらのバインディング・プロパティが指定されていない場合は、デフォルト・ポリシーがコンポジット・アプリケーションの一部として含まれていれば、デフォルト・ポリシーによって再試行が実行されます。
MSMQバインディング・プロパティの詳細は、表13-3 (MSMQアダプタのバインディング・プロパティ)を参照してください。
13.1.4 MSMQアダプタの機能
Oracle MSMQアダプタには、次の機能があります。
-
MSMQプライベート・キューへのメッセージの送信
-
MSMQアダプタにより、ローカル・プライベート・キューにメッセージを送信できます。MSMQアダプタ構成ウィザードを使用してMSMQアダプタ参照をモデル化する場合は、MSMQキューへのメッセージの送信(またはプット)に使用されるエンキュー操作をモデル化できます。
-
MSMQアダプタにより、ローカル・トランザクション・プライベート・キューにメッセージを送信できます。MSMQアダプタ構成ウィザードを使用してMSMQアダプタ参照をモデル化する場合は、ローカル・トランザクションMSMQキューへのメッセージの送信に使用されるエンキュー操作をモデル化できます。
ノート:
メッセージの送受信時に接続がトランザクションに関与するかどうかを示す、MSMQの
TransactionMode
プロパティの関連性を理解することが重要です。このプロパティの値は[Single|None]です。値がSingleの場合、メッセージの送信先となるローカルおよびリモートのMSMQキューはトランザクションである必要があります。値がSingleの場合、メッセージの取得元となるローカルMSMQキューはトランザクションである必要があります。
値がNoneで、かつメッセージの送信先となるキューがトランザクションの場合は、ResourceExceptionが発生します。
-
-
MSMQパブリック・キューへのメッセージの送信
-
MSMQアダプタにより、ローカル・パブリック・キューにメッセージを送信できます。MSMQアダプタ構成ウィザードを使用してMSMQアダプタ参照をモデル化する場合は、エンキュー操作をモデル化できます。このエンキュー操作を使用して、パブリックMSMQキューにメッセージを送信できます。
-
MSMQアダプタにより、ローカル・トランザクション・パブリック・キューにメッセージを送信できます。MSMQアダプタ構成ウィザードを使用してMSMQアダプタ参照をモデル化する場合は、エンキュー操作をモデル化できます。このエンキュー操作を使用して、MSMQキューにメッセージを送信できます。
-
-
MSMQ配信リストへのメッセージの送信
-
MSMQアダプタにより、配信リストにメッセージを送信できます。MSMQアダプタ構成ウィザードを使用してMSMQアダプタ参照をモデル化する場合は、MSMQ配信リストにメッセージを送信するようにエンキュー操作を構成できます。
-
-
プライベートMSMQキューからのメッセージの消費または受信
-
MSMQアダプタにより、ローカル・プライベートMSMQキューからのメッセージの消費または受信が可能になります。デフォルトの動作は、消費可能なキュー上の、次に使用可能なメッセージに対して適用されます。
これを行うには、MSMQアダプタ構成ウィザードを使用して、MSMQプライベート・キューからのメッセージの消費を可能にするデキュー操作をモデル化します。MSMQアダプタは、ローカル・プライベート・トランザクションMSMQキューからのメッセージ消費を可能にし、デキューと呼ばれる操作をサポートします。
これを行うには、構成ウィザードを使用して、トランザクションMSMQキューからメッセージを消費または受信するデキューを作成します。
-
-
パブリックMSMQキューからのメッセージの受信
-
MSMQアダプタにより、パブリックMSMQキューからメッセージを受信できます。MSMQアダプタは、アダプタ・サービスのモデル化時に構成し、MSMQキューからのメッセージの消費または受信に使用される、デキューと呼ばれる操作をサポートします。
-
MSMQアダプタにより、パブリック・トランザクションMSMQキューからメッセージを受信できます。トランザクションMSMQキューからのメッセージの受信に使用される、デキューと呼ばれるMSMQアダプタ構成ウィザードの操作を使用できます。
-
13.1.5 サポートされるMSMQプロパティ
MSMQアダプタには、いくつかのJCAプロパティがあります。簡単に参照できるよう、これらをここで示し、プロパティの付録でも示します。
JCAプロパティのリストは、表13-1を参照してください。
表13-1 MSMQアダプタのJCAプロパティ
プロパティ | 説明 | デフォルト値 | 必須 |
---|---|---|---|
|
メッセージが、配信リスト名で識別されるパブリック・キュー、プライベート・キュー、またはキューのグループに送信されるかどうかを示します。値;
|
なし |
はい |
|
MSMQキューの名前。 |
なし |
はい(UseActiveDirectoryPathがFalseの場合) |
|
ActiveDirectoryで表されるDistributionListキューまたはPublicキューを識別する文字列。文字列の例を次に示します。 LDAP://MyLDAPServer/CN=MyQueue,CN=msmq,CN=MyComputer,CN=Computers,DC=MyDomain,DC=MyCompany,DC=COM |
なし |
はい(UseActiveDirectoryPathがTrueの場合) |
|
パブリック・キューの識別に、キュー名ではなくActive Directoryパスを使用することを許可するブール。このプロパティは、DestinationTypeが |
False |
- |
|
パブリックおよびプライベートのキューに直接フォーマット名を使用することを許可するブール。 |
False |
- |
|
優先度は7から0までの任意の整数値に設定できます(デフォルトは3)。7は高い優先度を意味します。0は最も低い優先度を意味します。最も高い優先度は、高速な処理を意味します。 |
3 |
- |
|
このプロパティは、ターゲット・キューからメッセージを取得する時間制限(秒)を指定します。値は、指定したMSMQメッセージの |
-1 (無限) |
- |
|
このプロパティは、式(非永続)またはリカバリ可能なメッセージング(永続)の指定に使用します。高速メッセージングでは、スループットが高速になります。リカバリ可能メッセージングでは、メッセージがキューに到達する途中にコンピュータがクラッシュした場合でもメッセージが配信されることを保証します。値は、Persistent、Non-Persistentです。 |
永続 |
- |
|
実行する操作。サポートされるOperationTypeの値は、 |
なし |
はい |
|
値は、 |
文字列 |
はい |
|
ペイロードのストリーミングを可能にするブール |
False |
- |
MSMQアダプタに関連する正規化されたプロパティのリストについては、表13-2を参照してください。各プロパティのアダプタ処理の方向も示されています。
表13-2 MSMQアダプタの正規化されたプロパティ
プロパティ名 | 説明 | 方向 |
---|---|---|
|
このプロパティは、メッセージが送信されたときを示します。 |
インバウンド |
|
このプロパティは、メッセージの優先度を指定します。これにより、MSMQInteractionSpecの |
インバウンド /アウトバウンド |
|
このプロパティは、ターゲット・キューからメッセージを取得する時間制限(秒)を指定します。これにより、MSMQInteractionSpec.の |
インバウンド /アウトバウンド |
|
このプロパティは、メッセージがキューに到達する時間制限(秒)を指定します。ここで何も指定しない場合、メッセージ・キューイングでは、キューへの到達時間間隔に企業全体の設定が使用されます。 |
インバウンド /アウトバウンド |
|
MSMQにより生成されたメッセージ識別子を使用して、メッセージを識別します。 |
インバウンド |
|
このプロパティは、メッセージ・キューイングがメッセージを配信する方法を指定します。これにより、MSMQInteractionSpecの |
インバウンド/アウトバウンド |
|
このプロパティは、メッセージ本文の長さ(バイト)を指定します。 |
インバウンド |
|
このプロパティは、メッセージがキューに到達したときを示します。 |
インバウンド |
MSMQアダプタに適用されるバインディング・プロパティのリストについては、表13-3を参照してください。
表13-3 MSMQアダプタのバインディング・プロパティ
プロパティ名 | 説明 |
---|---|
adapter.msmq.receive.timeout |
別のポーリング・サイクルを開始する前にメッセージ・キューイングがメッセージの到着を待機する時間(ミリ秒)。デフォルト値は1秒(1)です。 |
adapter.msmq.dequeue.threads |
エンドポイントのアクティブ化が発生すると初期化されるポーラー・スレッドの数。これにより、アダプタは次のポーリング・サイクルが開始されるまでメッセージの受信を指定された時間待機することができます。指定した場合、adapter.msmq.dequeue.threadsの値は、複数のインバウンド・ポーラー・スレッドを生成するために使用されます。複数のインバウンド・スレッドは、パフォーマンスを向上させるために使用できます。デフォルト値は1です。 |
MSMQアダプタのコネクション・ファクトリを構成する場合は、コネクション・ファクトリ構成プロパティを使用します。表13-4を参照してください。各プロパティの処理方向も示されています。
表13-4 MSMQアダプタのコネクション・ファクトリ構成
プロパティ名 | 説明 | デフォルト |
---|---|---|
|
MSMQホストのIPアドレス。 |
- |
AccessMode |
コネクション・ファクトリがネイティブ・アクセスを許可するかどうかを識別します。値は[ |
DCOM |
|
メッセージを送信および受信する場合に接続がトランザクションに参加するかどうかを識別します。値は[Single|None]です。Singleの場合、メッセージの送信先となるローカルおよびリモートのMSMQキューはトランザクションである必要があります。Singleの場合、メッセージの取得元となるローカルMSMQキューはトランザクションである必要があります。Noneの場合に、メッセージの送信先となるキューがトランザクションであると、ResourceExceptionが発生します。 |
|
ユーザー |
ユーザーを識別します。 |
- |
パスワード |
指定したユーザーのパスワードです。 |
- |
|
MSMQホストのドメイン。 |
- |
13.2 MSMQアダプタ構成ウィザードのフロー
MSMQアダプタ構成ウィザードを使用して、MSMQアダプタを作成および構成します。
13.2.2 サンプルのMSMQアダプタ・コネクション・ファクトリ・プロパティ
Fusion Middleware Control内のサンプルのMSMQアダプタ・コネクション・ファクトリ・プロパティを次に示します。「ホーム」→「デプロイメントのサマリー」→「MSMQアダプタ」→「構成」→「アウトバウンド接続プール」でこれらを探します。「新規」オプションを選択し、eis/MSMQ/MSMQAdapter_NonTrans1
などの名前をJNDIに指定します。
プロパティは次のとおりです。
MSMQ_AccessMode=DCOM MSMQ_Domain=adapter.test.msmq MSMQ_Host=slc04lya.us.mydomain.com MSMQ_Password=Welcome12 MSMQ_TransactionMode= NONE MSMQ_User=Administrator
13.2.3 MSMQアダプタ設計時アーティファクト
アダプタ構成ウィザードでは、相互作用およびメッセージ定義に基づいて、JCA、WSDLおよびXMLスキーマのアーティファクトを生成します。
13.2.3.1 MSMQエンキュー操作のサンプルJCAファイル
次に、MSMQエンキュー操作のWSDLを指定する、サンプルJCAファイルを示します。
例 - MSMQエンキュー操作のサンプルJCAファイル
<adapter-config name="enqueueOp" adapter="msmq" wsdlLocation="../WSDLs/enqueueOp.wsdl" xmlns="http://platform.integration.oracle/ blocks/adapter/fw/metadata"> <connection-factory location="eis/MSMQ/MSMQAdapter"/> <endpoint-interaction portType="EnqueueOperation_ptt" operation="EnqueueOperation"> <interaction-spec className="oracle.tip.adapter.msmq.v2.jca. MSMQInteractionSpec"> <property name="BodyType" value="ByteArray"/> <property name="DestinationPath" value="dest"/> <property name="TimeToLive" value="-1"/> <property name="Delivery" value="Persistent"/> <property name="DestinationType" value="PUBLIC_QUEUE"/> <property name="UseDirectFormatName" value="true"/> <property name="OperationType" value="Enqueue"/> <property name="Priority" value="5"/> <property name="UseActiveDirectoryPath" value="true"/> </interaction-spec> </endpoint-interaction> </adapter-config>
13.2.3.2 MSMQデキュー操作のサンプルJCA
次のサンプルJCAでは、デキュー操作用のWSDLを指定します。
例 - MSMQデキュー操作のサンプルJCA
<adapter-config name="dequeueOp" adapter="msmq" wsdlLocation="../WSDLs/dequeueOp.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/ fw/metadata"> <connection-factory location="eis/MSMQ/MSMQAdapter"/> <endpoint-activation portType="DequeueOperation_ptt" operation="DequeueOperation"> <activation-spec className="oracle.tip.adapter.msmq.v2. jca.MSMQActivationSpec"> <property name="BodyType" value="String"/> <property name="DestinationType" value="PUBLIC_QUEUE"/> <property name="UseDirectFormatName" value="false"/> <property name="DestinationName" value="dest"/> <property name="OperationType" value="Dequeue"/> <property name="EnableStreaming" value="false"/> </activation-spec> </endpoint-activation> </adapter-config>
13.2.3.3 設計時WSDLアーティファクト
WSDLファイルは、MSMQアダプタ構成ウィザードで「終了」をクリックすると生成されます。「スキーマ」ページで指定したスキーマは、生成されたWSDLにインポートされます。
13.2.3.3.1 MSMQエンキュー操作のWSDL
Base64Binaryエンキュー操作用に生成されたWSDLを次に示します。
例 - エンキュー操作のMSMQアダプタWSDL
<wsdl:definitions name="msmqService" targetNamespace="http://xmlns.oracle.com/ pcbpel/adapter/msmq/ MSMQAdapterUseCases/Project1/msmqReference" xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/ msmq/MSMQAdapterUseCases/Project1/msmqReference" xmlns:opaque="http://xmlns.oracle.com/ pcbpel/adapter/opaque/" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/ partner-link/"> <plt:partnerLinkType name="Enqueue_plt" > <plt:role name="Enqueue_role" > <plt:portType name="tns:Enqueue_ptt" /> </plt:role> </plt:partnerLinkType> <wsdl:types> <schema targetNamespace="http://xmlns.oracle.com/ pcbpel/adapter/opaque/" xmlns="http://www.w3.org/2001/XMLSchema" > <element name="opaqueElement" type="base64Binary" /> </schema> </wsdl:types> <wsdl:message name="Enqueue_msg"> <wsdl:part name="opaque" element= "opaque:opaqueElement"/> </wsdl:message> <wsdl:portType name="Enqueue_ptt"> <wsdl:operation name="Enqueue"> <wsdl:input message="tns:Enqueue_msg"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
13.2.3.3.2 MSMQアダプタのデキュー操作のWSDL
次の例は、MSMQアダプタのデキュー操作用のWSDLを示しています。
MSMQアダプタのデキュー操作のWSDL
<wsdl:definitions name="mqService" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter /msmq/MSMQAdapterUseCases/Project1/msmqService" xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter /msmq/MSMQAdapterUseCases/ Project1/msmqService" xmlns:pc="http://xmlns.oracle.com/pcbpel/" xmlns:imp1="http://platform.integration.oracle/ blocks/adapter/fw/metadata/ msmqSchema" xmlns:plt="http://schemas.xmlsoap.org/ws/ 2003/05/partner-link/"> <plt:partnerLinkType name="Dequeue_plt" > <plt:role name="Dequeue_role" > <plt:portType name="tns:Dequeue_ptt" /> </plt:role> </plt:partnerLinkType> <wsdl:types> <schema xmlns="http://www.w3.org/ 2001/XMLSchema" > <import namespace="http://platform.integration.oracle/ blocks/adapter /fw/metadata/msmqSchema" schemaLocation="../Schemas/msmqSchema.xsd" /> </schema> </wsdl:types> <wsdl:message name="Dequeue_msg"> <wsdl:part name="body" element="imp1:message"/> </wsdl:message> <wsdl:portType name="Dequeue_ptt"> <wsdl:operation name="Dequeue"> <wsdl:input message="tns:Dequeue_msg"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
13.3 MSMQの使用例
次の使用例では、MSMQアダプタの様々な用途を段階を追って説明しています:
13.3.1 パブリック・キューでのメッセージのエンキュー/デキュー
この使用例では、次のステップに従って、MSMQパブリック・キューに対してメッセージをエンキューおよびデキューするアプリケーションを作成します:
13.3.1.1 SOAコンポジットの設計
SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次のステップに従ってアプリケーションとプロジェクトを作成します:
- JDeveloperの「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。次に、「SOAアプリケーション」を選択します。「アプリケーションの名前付け」ページが表示されます。
- 「アプリケーション名」フィールドに
Enq_Deq_PublicApp
と入力して、「次へ」をクリックします。「プロジェクトの名前付け」ページが表示されます。 - 「プロジェクト名」フィールドに
Enq_Deq_Public
と入力し、「次へ」をクリックします。 - 「コンポジット・テンプレート」ボックスで「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成 - BPELプロセス」ページが表示されます。
- 「名前」フィールドに
BPELPublic
と入力し、「テンプレート」リストから「サービスを後で定義」を選択します。 - 「OK」をクリックします。
Enq_Deq_PublicApp
アプリケーションとEnq_Deq_Public
プロジェクトが設計領域に表示されます。
13.3.1.2 インバウンドOracle MSMQアダプタ・サービスの作成
インバウンドOracle MSMQアダプタ・サービスを作成し、Microsoftメッセージング・キューからメッセージをデキューするには、次のステップを実行します。
13.3.1.3 アウトバウンドOracle MSMQアダプタ・サービスの作成
アウトバウンドOracle MSMQアダプタ・サービスを作成し、あるMicrosoftメッセージング・キューから他のMicrosoftメッセージング・キューにメッセージをエンキューするには、次のステップを実行します:
13.3.1.4 サービスとアクティビティのワイヤリング
作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)をアセンブルまたは接続する必要があります。コンポーネントを接続するステップは、次のとおりです。
13.3.2 プライベート・キューでのメッセージのエンキュー/デキュー
この使用例では、次のステップに従って、MSMQプライベート・キューに対してメッセージをエンキューおよびデキューするアプリケーションを作成します:
13.3.2.2 インバウンドOracle MSMQアダプタ・サービスの作成
インバウンドOracle MSMQアダプタ・サービスを作成し、Microsoftメッセージング・キューからメッセージをデキューするには、次のステップを実行します。
13.3.2.3 アウトバウンドOracle MSMQアダプタ・サービスの作成
アウトバウンドOracle MSMQアダプタ・サービスを作成し、あるMicrosoftメッセージング・キューから他のMicrosoftメッセージング・キューにメッセージをエンキューするには、次のステップを実行します:
13.3.2.4 サービスとアクティビティのワイヤリング
作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)をアセンブルまたは接続する必要があります。コンポーネントを接続するステップは、次のとおりです。
13.3.3 配信リストへのメッセージのエンキュー
この使用例では、次のステップに従って、MSMQメッセージを配信キューにエンキューするアプリケーションを作成します:
13.3.3.2 インバウンドOracleファイル・アダプタ・サービスの作成
ローカル・ディレクトリからファイルを読み取るインバウンドOracleファイル・アダプタ・サービスを作成するには、次のステップを実行します。
13.3.3.3 アウトバウンドOracle MSMQアダプタ・サービスの作成
ローカル・ディレクトリから配信リストにメッセージをエンキューするアウトバウンドOracle MSMQアダプタ・サービスを作成するには、次のステップを実行します:
13.3.3.4 サービスとアクティビティのワイヤリング
作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)をアセンブルまたは接続する必要があります。コンポーネントを接続するステップは、次のとおりです。