ヘッダーをスキップ
Oracle® Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド
11gリリース(11.1.1.6.2)
B55918-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 Oracle JCA Adapter for MQ Series

この章では、外部サービスとしてOracle BPEL Process Manager(Oracle BPEL PM)およびOracle Mediator(メディエータ)とともに動作する、Oracle JCA Adapter for MQ Series(Oracle MQ Seriesアダプタ)の使用方法について説明します。この章では、JCA Adapter for MQ Seriesの概念、機能、構成および使用例について説明します。

この章には、次の項が含まれます。

10.1 MQ Seriesメッセージ・キューイングの概要

メッセージ・キューイングは、非同期プログラム間通信のためのテクニックです。分散システム上の独立したアプリケーションの相互通信を可能にすることによりアプリケーションを統合できます。あるアプリケーションがキュー・マネージャ所有のキューにメッセージを送信し、別のアプリケーションがキューからメッセージを取り出します。各アプリケーションが異なる時期に実行されたり一時的に使用できなくなっても、アプリケーション間の通信は維持されます。

次のリストに、メッセージ・キューイングの基本的な概念を示します。

10.1.1 MQ Seriesの概要

Messaging and Queuing Series(MQ Series)は、IBM社が開発した製品および規格の集合です。MQ Seriesは、保証付きメッセージ配信、セキュリティおよび優先度ベースのメッセージングを提供するキューイング・インフラストラクチャとなります。


注意:

Oracle MQ Seriesアダプタは、IBM WebSphere MQ V7.0で動作確認済です。


図10-3に、MQ SeriesアプリケーションとMQ Seriesサーバー間の通信プロセスを示します。MQ Seriesクライアントにより、アプリケーションからリモート・コンピュータ上のキュー・マネージャに接続できます。

図10-3 MQ Seriesの通信プロセス

図10-3の説明が続きます
「図10-3 MQ Seriesの通信プロセス」の説明

MQ Seriesの各キューはキュー・マネージャに属しています。キュー・マネージャには一意の名前があり、Message Queue Interface(MQI)チャネルを介してアプリケーションにメッセージ・サービスとキューイング・サービスを提供します。また、キュー・マネージャは作成されたキューへのアクセスを提供し、メッセージ・チャネルを介してメッセージを他のキュー・マネージャに転送します。

MQ Seriesでは、データはメッセージ形式で送信されます。送信側アプリケーションではメッセージを作成し、APIコールを使用してキューに送信します。メッセージは、受信側アプリケーションの受信準備ができるまでキューに保持されます。受信側アプリケーションでは、APIコールを使用してキューからメッセージを取得します。

メッセージをリモート・キューに送信する場合は、リモート・キュー定義をローカルに定義する必要があります。リモート・キュー定義は、宛先キュー名と転送キュー名で構成されます。

図10-4に、MQ Seriesメッセージのメッセージ構造を示します。

図10-4 MQ Seriesメッセージ

図10-4の説明が続きます
「図10-4 MQ Seriesメッセージ」の説明

MQ Seriesメッセージは、図10-4に示すパートで構成されます。

  • メッセージ・ヘッダー

    メッセージ・ヘッダーには、一意のメッセージID、メッセージ・タイプ、メッセージ優先度およびルーティング情報などが含まれています。各MQ Seriesメッセージには、メッセージ・ヘッダーが必要です。

  • オプション・ヘッダー

    オプション・ヘッダーは、特定のアプリケーション(CICSアプリケーションなど)との通信に必須です。

    詳細は、第10.4.8項「CICSとの統合」を参照してください。

  • アプリケーション・データ

    これには実際のデータが含まれます(索引付きファイルまたはフラット・ファイルからのレコードや、DB2の表からの行または列など)。

10.2 ネイティブOracle MQ Seriesアダプタの概要

Oracle BPEL Process Managerとメディエータには、Oracle MQ Seriesアダプタが組み込まれています。Oracle MQ Seriesアダプタにより、アプリケーションはMQ Seriesキュー・マネージャに接続し、MQ Seriesメッセージをキューに蓄積したりキューから削除できます。

この項には、次の項目が含まれます。

10.2.1 Oracle MQ Seriesアダプタの必要性

Oracle MQ Seriesアダプタは、すべてのネイティブMQ Series機能を提供します。Oracle JCA Adapter for JMS(Oracle JMSアダプタ)をMQ Seriesプロバイダとともに構成することはできますが、提供されるのはMQ Seriesで提供されるJMS機能のみで、ネイティブMQ Series機能は提供されません。次のリストに、Oracle JMSアダプタを上回るOracle MQ Seriesアダプタのメリットを示します。

  • Oracle MQ Seriesアダプタは、肯定アクション通知(PAN)および否定アクション通知(NAN)をサポートしています。

  • Oracle MQ Seriesアダプタは、送信時の確認、着信時の確認、例外レポートおよび有効期限レポートなどのレポート・メッセージをサポートしています。

  • Oracle MQ Seriesアダプタは、不要なメッセージや破損したメッセージの配信不能キューへの送信をサポートしています。

  • Oracle MQ Seriesアダプタには、グループに属するメッセージのフィルタリングなど、高度なフィルタ・オプションが用意されています。

  • Oracle MQ Seriesアダプタは高速で、使用が容易です。


注意:

Oracle MQ Seriesアダプタが動作確認済のMQ Seriesのバージョンは、WindowsでもLinuxでも6.0.0.0です。


10.2.2 Oracle MQ SeriesアダプタとOracle BPEL Process Managerの統合

Oracle MQ Seriesアダプタは、自動的にOracle BPEL Process Managerと統合されます。Oracle JDeveloper(JDeveloper)でパートナ・リンクまたはMQアダプタ・サービスを作成する際に、アダプタ構成ウィザードが起動します。

このウィザードで、Oracle MQ Seriesアダプタまたは他のOracle JCAアダプタを選択して構成できます。アダプタ構成ウィザードでは、図10-5に示すように、サービス名の入力を求められます。

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

図10-5の説明が続きます
「図10-5 「サービス名」ページ」の説明

構成が完了すると、JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。

アダプタ構成ウィザードの「操作」ページで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のページが表示され、構成情報の入力を求められます。

表10-1に実行可能な操作と、これらの操作に関する情報が記載されている項を示します。

10.2.3 Oracle MQ Seriesアダプタとメディエータの統合

Oracle MQ Seriesアダプタは、自動的にメディエータと統合されます。JDeveloperメディエータ・デザイナでMQアダプタ・サービスを作成すると、アダプタ構成ウィザードが起動します。

このウィザードで、Oracle MQ Seriesアダプタを選択して構成できます。構成が完了すると、JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。

アダプタ構成ウィザードの「操作」ページで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のページが表示され、構成情報の入力を求められます。表10-2に実行可能な操作と、指定する必要がある構成情報が記載されている項を示します。

10.3 Oracle MQ Seriesアダプタの機能

この項では、Oracle MQ Seriesアダプタの次の機能について説明します。

10.3.1 RFHバージョン2(RFH2)ヘッダー

RFH2ヘッダーは拡張可能なヘッダーです。RFH2ヘッダーでは、より多くのヘッダー・プロパティをペイロードに追加できます。RFH2は、メッセージ・コンテンツに関連するJMS固有データを送信します。JMSに直接関連しない追加情報も送信できます。

RFH2ヘッダーは、固定部分と可変部分の2つの部分で構成されます。

10.3.1.1 固定部分

固定部分は、standardのWebSphere MQヘッダー・パターンをモデルにして作成されており、次のフィールドで構成されています。

StrucId(MQCHAR4)

構造識別子。

初期値では、MQRFH_STRUC_ID(値: "RFH ")になります。

MQRFH_STRUC_ID_ARRAY(値: "R"、"F"、"H"、" ")を通常の方法で定義することもできます。

Version(MQLONG)

構造バージョン番号。

初期値では、MQRFH_VERSION_2(値: 2)になります。

StrucLength(MQLONG)

NameValueDataフィールドを内容としたMQRFH2の長さの合計。

StrucLengthに設定する値は、4の倍数である必要があります(このために、NameValueDataフィールドのデータをパディングできます)。

Encoding(MQLONG)

データのエンコーディング。

メッセージのうち、MQRFH2の後の部分(次のヘッダー、またはこのヘッダーの後のメッセージ・データ)に含まれているすべての数値データのエンコーディング。

CodedCharSetId(MQLONG)

コード化キャラクタ・セット識別子。

メッセージのうち、MQRFH2の後の部分(次のヘッダー、またはこのヘッダーの後のメッセージ・データ)に含まれているすべての文字データの表現。

Format(MQCHAR8)

フォーマット名。

メッセージのうち、MQRFH2の後の部分のフォーマット名。

Flags(MQLONG)

フラグ。

MQRFH_NO_FLAGS=0(フラグは設定されません)。

NameValueCCSID(MQLONG)

このヘッダーに含まれているNameValueData文字列のコード化キャラクタ・セット識別子(CCSID)。NameValueDataは、ヘッダーに含まれている他の文字列(StrucIDおよびFormat)とは異なるキャラクタ・セットでコード化できます。

NameValueCCSIDフィールドが2バイトのUnicodeのCCSID(1200、13488または17584)である場合、Unicode CCSIDのバイト順は、MQRFH2の数値フィールドのバイト順と同じです(数値フィールドの例は、Version、StrucLengthまたはNameValueCCSID自体など)。

NameValueCCSIDフィールドに指定できる値は、表10-3に示す値のみです。

表10-3 NameValueCCSIDフィールドに指定できる値

意味

1200

拡張UCS2

1208

UTF8

13488

UCS2 2.0サブセット

17584

UCS2 2.1サブセット(ユーロ記号を含む)


10.3.1.2 可変部分

固定部分の後に、可変部分が続きます。可変部分には、不特定数のMQRFH2フォルダが含まれます。各フォルダには、不特定数の要素またはプロパティが含まれます。関連するプロパティは、グループにまとめられます。MQRFH2ヘッダーには、次のメッセージ・サービス・フォルダを含めることができます。

<mcd>フォルダ

このフォルダには、メッセージの形またはフォーマットを記述するプロパティを指定します。たとえば、Msdプロパティはメッセージをテキスト、バイト、ストリーム、マップ、オブジェクトまたはNullであるとして識別します。このフォルダは、常にJMS MQRFH2に含まれています。

<jms>フォルダ

このフォルダは、JMSヘッダーのフィールドを転送する目的と、MQMDでは完全には表現できないJMSXプロパティを転送する目的に使用されます。このフォルダは、常にJMS MQRFH2に含まれています。

<usr>フォルダ

このフォルダは、メッセージに関連付けられているすべてのアプリケーション定義プロパティを転送するために使用されます。このフォルダは、アプリケーションにアプリケーション定義プロパティが設定されている場合にのみ含まれています。

<psc>フォルダ

このフォルダは、パブリッシュ/サブスクライブ・コマンド・メッセージをブローカに伝達するために使用されます。NameValueDataフィールドに許可されるpscフォルダは1つのみです。

<pscr>フォルダ

このフォルダは、パブリッシュ/サブスクライブ・コマンド・メッセージへのレスポンスとしてブローカからの情報を含めるために使用されます。レスポンス・メッセージに使用できるpscrフォルダは1つのみです。

表10-4に、すべてのプロパティ名のリストを示します。

表10-4 JMSで使用されるMQRFH2フォルダとプロパティ

JMSフィールド名 Javaタイプ MQRFH2フォルダ名 プロパティ名 タイプ/値

JMSDestination

Destination

jms

Dst

string

JMSExpiration

long

jms

Exp

i8

JMSPriority

int

jms

Pri

i4

JMSDeliveryMode

int

jms

Dlv

i4

JMSCorrelationID

String

jms

Cid

string

JMSReplyTo

Destination

jms

Rto

string

JMSTimestamp

long

jms

Tms

i8

JMSType

String

mcd

Type、Set、Fmt

string

JMSXGroupID

String

jms

Gid

string

JMSXGroupSeq

int

jms

Seq

i4

xxx(ユーザー定義)

Any

usr

xxx

any



mcd

Msd

jms_none

jms_text

jms_bytes

jms_map

jms_stream

jms_object


可変部分でプロパティを表現するには、次の構文を使用します。

NameValueLength(MQLONG)

この長さフィールドの直後に指定するNameValueData文字列のバイト単位の長さ。長さ自体の長さは含みません。NameValueLengthに設定する値は、常に4の倍数である必要があります。このために、NameValueDataフィールドをパディングできます。

NameValueData(MQCHARn)

直前のNameValueLengthフィールドによってバイト長を指定した単一文字列。これには、プロパティの順序を格納するフォルダを指定します。各プロパティは名前/タイプ/値の3つからなるセット(トリプレットと呼ばれる)で構成されており、次に示すように、これらのプロパティはフォルダ名と同じ名前のXML要素内に含まれています。

<フォルダ名> triplet1 triplet2 ..... tripletn </フォルダ名>

10.3.2 SSLの有効化

Secure Sockets Layer(SSL)は、インターネットまたは内部ネットワークを介して暗号化されたデータを転送するプロトコルです。SSLは、公開鍵と秘密鍵を使用して、SSL接続を介して転送されるデータを暗号化することによって機能します。公開鍵を使用して暗号化されたデータは、対応する秘密鍵でのみ復号化できます。逆に、秘密鍵を使用して暗号化されたデータは、対応する公開鍵でのみ復号化できます。

MQ Seriesでは、SSLを使用したMQ Seriesクライアントとのセキュアな通信がサポートされています。この機能の一環として、SSLを使用したメッセージのエンキューがアダプタでサポートされます。Oracle MQ SeriesアダプタでSSLを有効化するには、次のプロパティを指定する必要があります。

  • SSLEnable: このプロパティのtrue/false値は、Oracle MQ SeriesアダプタでのSSL有効化/無効化を示します。

  • KeyStoreLocation: これは、Oracle MQ Seriesアダプタが秘密鍵を格納するキーストアです。このプロパティは、アダプタがMQ Seriesサーバーから認証を受ける必要があるため必要です。

  • KeyStorePassword: このパスワードは、キーストアへのアクセスで必要になります。

  • TrustStoreLocation: これは、アダプタが信頼できる証明書情報を格納する場所です。この情報は、アダプタがMQ Seriesサーバーから認証を受ける場合に必要になります。

  • Protocol: キー管理のアルゴリズム。

  • KeyStoreProviderName: キーストア・プロバイダの名前。

  • KeyStoreType: キーストアのタイプ。

  • KeyStoreAlgorithm: キーストアで使用されるアルゴリズム。

  • CipherSuite: CipherSuiteは、SVRCONNチャネルで設定されているCipherSpecと一致する名前に設定します。NULL(デフォルト)に設定すると、SSL暗号化は実行されません。

  • SSLPeerName: 識別名パターン。CipherSuiteが設定されている場合、この変数を使用することによって、常に正しいキュー・マネージャが使用されるようにできます。NULL(デフォルト)に設定すると、キュー・マネージャの識別名はチェックされません。sslCipherSuiteがNULLの場合は、この変数は無視されます。

10.3.3 XAトランザクション

Oracle MQ Seriesアダプタにより、固有のデータ処理とともにトランザクション・サポートが可能になります。これにより、それぞれの変更の結果が明確に定義されており、結果は成功か失敗のいずれかになるため、潜在的なデータ破損が防止され、他の変更から独立して実行され、完了後は別のトランザクションが発生するまで基礎となるデータが同じ状態で維持されることが保証されます。

Oracle MQ Seriesアダプタでは、インバウンドとアウトバウンドの両方のXAトランザクションがサポートされています。XAトランザクションを有効化するには、Oracle WebLogic Server管理コンソールでXATransactionプロパティを設定する必要があります。XAトランザクションを有効化する手順は、次のとおりです。

  1. パスワード資格証明を使用して、Oracle WebLogic Server管理コンソールにログインします。

  2. 左ペインの「ドメイン構造」で、「デプロイメント」をクリックします。「デプロイメントの概要」ページが表示されます。

  3. 「MQSeriesAdapter」をクリックします。「MQSeriesAdapterの設定」ページが表示されます。

  4. 「構成」タブをクリックします。「構成」サブメニュー・オプションが表示されます。

  5. 「アウトバウンド接続プール」をクリックします。「アウトバウンド接続プールの構成表」が表示されます。

  6. javax.resource.cci.ConnectionFactoryの横にある「+」アイコンをクリックし、「eis/MQ/MQAdapter」を選択します。「アウトバウンド接続のプロパティ」ページが表示されます。


    注意:

    コンソールでオプションを有効化するには、「ロックして編集」をクリックします。


  7. 「XATransaction」オプションを選択し、「XATransaction」の端にある「プロパティ値」の行をクリックします。

  8. 図10-6に示すように、テキスト・フィールドにtrueと入力して「保存」をクリックします。

    図10-6 「アウトバウンド接続のプロパティ」ページ

    図10-6の説明が続きます
    「図10-6 「アウトバウンド接続のプロパティ」ページ」の説明

  9. 「トランザクション」タブをクリックします。javax.resource.cci.ConnectionFactoryの設定ページが表示されます。

  10. 「トランザクションのサポート」リストから「XAトランザクション」を選択します。

  11. 「保存」をクリックして設定を保存します。「デプロイメント・プラン保存アシスタント」ページが表示されます。

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

Oracle MQ Seriesアダプタに対してXAトランザクションが正常に有効化されました。

同期インバウンド・リクエスト-リプライのシナリオで、MQ SeriesのXAトランザクション機能をBPELで使用するには、bpel.config.transactionパラメータをrequiredに設定する必要があります。このパラメータを設定しなければ、トランザクションはBPEL境界で分割され、MQはMQRC_SYNCPOINT_NOT_AVAILABLEエラー・コードを戻します。

<property name="bpel.config.transaction">required
</property>

10.3.3.1 XAリカバリ

prepare phaseが正常に完了した後、ミドルウェアに障害が発生するなどの、フェイルオーバーが関係するシナリオでは、メッセージはMQSeriesサーバーを再起動しないでアダプタ内でリカバリされる必要があります。インダウト・トランザクションは手動で解決する必要があります。

キュー・マネージャのインダウト・トランザクションをすべて表示するには、コマンド・プロンプトで次のコマンドを実行する必要があります。

dspmqtrn -m[ourQueueManager]

メッセージをバックアウトするには、次のコマンドを使用します。

rsvmqtrn -m[ourQueueManager] -b [Transaction],[Number]

メッセージをコミットするには、次のコマンドを使用します。

rsvmqtrn -m[ourQueueManager] -c [Transaction],[Number]

注意:

dspmqtrnコマンドの出力から[Transaction]および[Number]を使用できます。


10.3.4 高可用性

Oracle MQ Seriesアダプタは、Oracle BPEL Process Manager(Oracle BPEL PM)とOracle Mediatorサービス・エンジンでのアクティブ/アクティブ・トポロジに対する高可用性機能をサポートしています。この機能は、インバウンド操作とアウトバウンド操作の両方でサポートされています。

10.3.4.1 高可用性の前提条件

高可用性を実現するようにOracle MQ Seriesアダプタを構成するには、次の前提条件が満たされていることを確認する必要があります。

  • クラスタリングされた複数のプロセスで、同じキューが使用されている必要があります。

  • アダプタを正常に機能させるために、リモート・フォルトに対するフォルト・ポリシーとフォルト・バインディングが作成されている必要があります。

10.3.4.2 インバウンド/アウトバウンド操作での高可用性

Oracle MQ Seriesアダプタは、XAトランザクションに関与する必要があります。XAトランザクションの詳細は、第10.3.3項「XAトランザクション」を参照してください。

10.3.5 スケーラビリティ

Oracle MQ Seriesアダプタでは、インバウンド操作に対してのみ、スケーラビリティ機能がサポートされます。Oracle MQ Seriesアダプタには、インバウンド・キューからメッセージをデキューするスレッドの数を制御するパラメータが用意されています。次のプロパティを.jcaファイルで指定する必要があります。

InboundThreadCount='N'

ここで、Nは、インバウンド・キューからメッセージをデキューするために制御するスレッドの数を表しています。デフォルト設定は2です。

Oracle MQアダプタは、デプロイ時、つまりアダプタ・エンドポイントがポーリングを開始したときにバックエンド接続を作成します。接続の作成によって全体的なデプロイ・タスク自体が遅延することはありませんが、アプリケーション・サーバーで接続プールを事前にウォームアップするとわずかに利点があります。

.jcaファイルでInboundThreadCountを使用する場合の構文例を次に示します。

<adapter-config name="ExpressDeathEventListener" adapter="MQSeriesAdapter" wsdlLocation="ExpressDeathEventListener.wsdl" <xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  <connection-factory location="eis/MQ/MQAdapter" adapterRef=""/>
   <endpoint-activation portType="Dequeue_ptt" operation="Dequeue"              UITransmissionPrimitive="Dequeue">
   <activation-spec className="oracle.tip.adapter.mq.inbound.ActivationSpecImpl">
      <property name="QueueName" value="BPMPOC_EXPCLAIMQ"/>
      <property name="InboundThreadCount" value="10"/>
   </activation-spec>
  </endpoint-activation>
</adapter-config>

10.3.6 エンタープライズ情報システムの資格証明の保護

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

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

10.3.7 フォルト・ポリシー

フォルト・ポリシー・ファイルには、フォルト条件および対応するフォルト・リカバリ・アクションを定義します。それぞれのフォルト条件で、処理を試みる特定のフォルトまたは一連のフォルトを指定し、それに対応するアクションを指定します。フォルト・ポリシー・ファイルでは一連のアクションがIDで識別されます。

Oracle MQ Seriesアダプタでは、フォルト・ポリシーを使用した拒否ハンドラの定義がサポートされています。

フォルト・ポリシーの詳細は、第2.21.1.1項「拒否ハンドラの構成」を参照してください。

10.3.8 インバウンド拒否ハンドラ

Oracle MQ Seriesアダプタでは、インバウンドのメッセージ拒否処理がサポートされています。メッセージ拒否ハンドラは、変換エラーを処理して修正処理を実行するように構成できます。

拒否ハンドラの詳細は、第2.21.1.1項「拒否ハンドラの構成」を参照してください。

10.3.9 再試行メカニズム

Oracle MQ Seriesアダプタでは、次の2つのインバウンド再試行メカニズムがサポートされています。

通常、JCAインバウンド再試行メカニズムはすべてのアダプタで共通して使用されますが、メッセージ・バックアウト・キュー・メカニズムはOracle MQ Seriesアダプタでのみ使用されます。.jcaファイルでBackoutQueueNameプロパティを指定した場合にのみ、Oracle MQ Seriesアダプタでは再試行にメッセージ・バックアウト・キュー・メカニズムが使用されます。デフォルトでは、再試行にはJCAインバウンド再試行メカニズムが使用されます。


注意:

Oracle MQ Seriesアダプタでは、この2つの再試行方法は相互に排他的な操作であり、アダプタで一度に使用できるメカニズムは一方のみです。両方のオプションを指定した場合は、バックアウト・キュー・オプションが優先されます。


10.3.9.1 JCAインバウンド再試行メカニズム

Oracle MQ Seriesアダプタでは、バックエンド・アプリケーションに接続してイベントを受信するためのプル・モデルがサポートされています。接続関連の問題はリカバリ可能とみなされ、ほとんどのインバウンド・アダプタはEISとの接続を確立できるまで再試行を続けます。

Oracle MQ Seriesアダプタの場合、メッセージをキューに蓄積できない場合も再試行可能です。

再試行メカニズムの詳細は、第2.21項「エラー処理」を参照してください。

10.3.9.2 メッセージ・バックアウト・キュー

バックアウト・キューは、インバウンド・キューから拒否されたメッセージが蓄積されるキューです。インバウンド・アダプタはメッセージのバックアウト数をチェックし、この数がMaximumBcakoutCount値を超えた場合、指定されたバックアウト・キューにメッセージを蓄積します。Oracle MQ Seriesアダプタではこのメカニズムを使用して、拒否されたメッセージのインバウンド再試行が処理されます。

.jcaファイルでBackoutQueueNameプロパティを指定すると、Oracle MQ Seriesアダプタでは再試行にメッセージのバックアウト数が使用されます。MaximumBackoutCountプロパティを使用して最大再試行回数を指定できます。このプロパティのデフォルト値はinfiniteです。MaximumBackoutCount値をBackoutQueueNameとともに指定しない場合、アダプタは無制限に再試行します。バックアウト・キュー・プロパティが指定されている場合、アダプタは(composite.xmlで指定された)JCA再試行を考慮しません。

BackoutRetriesプロパティを設定して、メッセージをバックアウト・キューに配信する再試行の回数を指定する必要があります。この再試行の間隔はBackoutRetryIntervalを使用して設定されます。BackoutRetriesのデフォルト値は3で、BackoutInterval5秒です。

MaximumBackoutCount値に達した後もメッセージが拒否される場合、アダプタはメッセージをバックアウト・キューに蓄積します。Oracle MQ Seriesアダプタは、メッセージをバックアウト・キューに蓄積できなければ、BackoutIntervalの時間遅延を使用してBackoutRetries数になるまで試行します。BackoutRetriesの後もメッセージをバックアウト・キューに蓄積できない場合、アダプタはエンドポイントを非アクティブ化します。

BackoutQueueManagerNameプロパティで、バックアウト・キューのキュー・マネージャの名前も指定する必要があります。BackoutQueueがインバウンド・キューQueueManagerにある場合、このプロパティは使用できません。


注意:

バックアウト・キューを使用する場合は、次の点を考慮してください。

  • バックアウト・キュー・オプションは、変換の失敗には使用できません。

  • JCA再試行とBackOut再試行の両方が指定されている場合は、BackOut再試行が優先されます。


バックアウト・キューの構成の詳細は、第10.6.7項「バックアウト・キューの構成」を参照してください。

10.3.10 パフォーマンス・チューニング

Oracle MQ Seriesアダプタはパフォーマンス・チューニング・オプションをサポートしています。

詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のOracle MQアダプタのチューニングに関する項を参照してください。

10.4 Oracle MQ Seriesアダプタの概念

この項では、Oracle MQ Seriesアダプタの次の概念について説明します。

10.4.1 メッセージングのシナリオ

Oracle MQ Seriesアダプタでは、次のメッセージングのシナリオがサポートされます。

10.4.1.1 メッセージのエンキュー

このシナリオでは、Oracle MQ Seriesアダプタはキュー・マネージャにより管理されている特定のキューに接続してメッセージを書き込みます。Oracle BPEL PMまたはメディエータから送信されるアウトバウンド・メッセージの場合、Oracle MQ Seriesアダプタでは次の操作が実行されます。

  1. Oracle BPEL PMまたはメディエータからメッセージを受信します。

  2. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  3. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。これらのプロパティは、アダプタ構成ウィザードで選択した内容に基づきます。

    メッセージのプロパティの詳細は、第10.4.2.1項「メッセージ・タイプ」を参照してください。

  4. 設計時にアダプタ構成ウィザードで指定したキューにメッセージが送信されます。

図10-7に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

図10-7 アダプタ構成ウィザード: メッセージ発行の選択

図10-7の説明が続きます
「図10-7 アダプタ構成ウィザード: メッセージ発行の選択」の説明

図10-8に、「MQにメッセージを蓄積」操作タイプを選択した後に表示されるページを示します。

図10-8 メッセージ蓄積オプション

図10-8の説明が続きます
「図10-8 メッセージ蓄積オプション」の説明

このページで次のプロパティを指定できます。

  • キュー名: Oracle MQ Seriesアダプタがメッセージをエンキューするキューの名前。これは必須フィールドです。

  • キュー・マネージャ: キューが属しているキュー・マネージャの名前です。このフィールドはオプションで、メッセージをリモート・キューにエンキューする場合に必要です。

  • 一部配信: このオプションを適用できるのは、アウトバウンド操作用のキューを複数指定した場合(配布リストのシナリオ)のみです。「一部配信」の値は、trueまたはfalseです。trueを割り当てると、一部のキューでメッセージの配信に失敗しても、メッセージは配布リストで指定した残りのキューに入れられて蓄積されます。falseを割り当てると、メッセージの1つに失敗しても、そのメッセージはキューに蓄積されません。

  • メッセージの書式: メッセージのフォーマット。


    注意:

    メッセージをエンキューする場合は、特定のフォーマットに必要な各種の必須値を正しく指定していることを確認してください。


  • 優先度: 0(最低)から9(最高)までのメッセージの優先度。

  • 永続性: メッセージの永続性。メッセージの永続性を、宛先キューで定義されているデフォルトの永続性属性から取得するように指定することも可能です。

  • 配信失敗: メッセージの配信に失敗した場合、そのメッセージを配信不能キューに蓄積するか、または破棄できます。

  • 必要な場合、メッセージをセグメント化できます: これは、大きすぎてキューに収まらないメッセージに適用可能です。その場合、セグメント化するように指定していれば、単一メッセージをキューで対応できるバイト数の複数のメッセージに分割できます。

  • 有効期限: メッセージの有効期限。有効期限が経過したメッセージは破棄されます。

これらのプロパティの詳細は、第10.4.2項「メッセージ・プロパティ」を参照してください。

次に表示されるアダプタ構成ウィザードのページは、図10-9の「メッセージ」ページです。このページでは、変換用のXMLスキーマ定義(XSD)ファイルを選択できます。

図10-9 「メッセージ」ページ

図10-9の説明が続きます
「図10-9 「メッセージ」ページ」の説明

ネイティブ・フォーマット変換が不要である場合は(JPGまたはGIFイメージが処理中であるなど)、「ネイティブ・フォーマット変換は不要」チェック・ボックスを選択します。ファイルはBase64エンコーディングで渡されます。

トランスレーションにはXSDファイルが必要です。新しいスキーマの定義、または既存のデータ型定義(DTD)やCOBOLコピーブックの変換を行うには、「ネイティブ・フォーマットのスキーマの定義」を選択します。これにより、ネイティブ・フォーマット・ビルダー・ウィザードが起動されます。このウィザードは、特殊文字区切り、カンマ区切り値(CSV)、固定長、DTDおよびCOBOLコピーブックなどのファイル・フォーマットを使用したネイティブ・スキーマ・ファイルの作成を支援します。ネイティブ・スキーマ・ファイルの作成後、「スキーマ・ファイルのURL」および「スキーマ要素」フィールドが入力された「メッセージ」ページが表示されます。

詳細は、第6.1項「ネイティブ・フォーマット・ビルダー・ウィザードを使用したネイティブ・スキーマ・ファイルの作成」を参照してください。


注意:

指定するスキーマにネームスペースが含まれていることを確認してください。スキーマにネームスペースがないと、エラー・メッセージが表示されます。


10.4.1.2 メッセージのデキュー

このシナリオでは、Oracle MQ Seriesアダプタはキュー・マネージャにより管理されている特定のキューに接続し、そのキューからメッセージを削除します。Oracle BPEL PMまたはメディエータに送信されるインバウンド・メッセージの場合、Oracle MQ Seriesアダプタでは次の操作が実行されます。

  1. 設計時に指定したキューに接続されます。

  2. メッセージの着信時にキューからメッセージがデキューされます。

  3. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  4. メッセージがXMLメッセージとしてOracle BPEL PMまたはメディエータにパブリッシュされます。

    図10-10に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

    図10-10 アダプタ構成ウィザード: メッセージ消費の選択

    図10-10の説明が続きます
    「図10-10 アダプタ構成ウィザード: メッセージ消費の選択」の説明

    図10-11に、「MQからメッセージを取得」操作タイプを選択した後に表示されるページを示します。

    図10-11 「MQからメッセージを取得」ページ

    図10-11の説明が続きます
    「図10-11 「MQからメッセージを取得」ページ」の説明

    このページで次のプロパティを指定できます。

    • キュー名: Oracle MQ Seriesアダプタがメッセージをデキューするキューの名前。これは必須フィールドです。

    • スキーマ・オプション: このオプションを使用すると、メッセージのデキューに使用するスキーマを指定できます。

      • 他のスキーマを選択します: このオプションでは、メッセージのデキューに使用するスキーマを選択できます。

      • 事前定義済スキーマを選択します: このオプションでは、アダプタに用意されている事前定義済のスキーマを選択できます。

    次に表示されるアダプタ構成ウィザードのページは、図10-9の「メッセージ」ページです。このページでは、変換用のXSDスキーマ・ファイルを選択できます。

    メッセージ発行操作のスキーマの指定と同様に、このページでは次のタスクを実行できます。

    • ネイティブ・フォーマット変換の要不要の指定

    • 変換用のXSDスキーマ・ファイルの選択

    • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

    「メッセージ」ページの詳細は、第10.4.1.1項「メッセージのエンキュー」を参照してください。

10.4.1.3 非同期リクエスト-レスポンス(Oracle BPEL PMがクライアントの場合)

このシナリオでは、Oracle BPEL PMがリクエスト・メッセージを送信し、非開始のreceiveアクティビティを使用して対応するレスポンスを受信します。invokeアクティビティによりアダプタのアウトバウンド起動が開始され、リクエストが送信されます。Oracle MQ Seriesアダプタでは、次の操作が実行されます。

  1. Oracle BPEL PMからのメッセージが受信されます。

  2. 設計時にアダプタ構成ウィザードで指定したXMLコンテンツがフォーマットされます。

  3. リクエスト・メッセージのプロパティと相関スキーマが設定されます。

  4. 設計時に指定したキューにメッセージが送信されます。サード・パーティ・アプリケーションはメッセージを受信して処理し、レスポンスを生成してから、リクエスト・メッセージで指定されたreplyToキューにレスポンス・メッセージをエンキューします。レスポンス・メッセージの相関IDとメッセージIDは、リクエスト・メッセージで指定された相関スキーマに基づいて生成されます。

  5. Oracle MQ Seriesアダプタにより、replyToキューからメッセージがデキューされます。

  6. レスポンスがメディエータの非開始のreceiveアクティビティに送信されます。レスポンスが正しいBPELインスタンスに確実に送信されるように、相関スキーマが使用されます。

図10-12に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

図10-12 操作タイプの選択

図10-12の説明が続きます
「図10-12 操作タイプの選択」の説明

図10-13に、「MQにメッセージを送信し、リプライ/レポートを取得」操作タイプを選択した後に表示されるページを示します。

図10-13 「MQにメッセージを送信し、リプライ/レポートを取得」ページ

図10-13の説明が続きます
「図10-13 「MQにメッセージを送信し、リプライ/レポートを取得」ページ」の説明

このページで次のプロパティを指定できます。

  • メッセージ・タイプ: メッセージのタイプ。通常メッセージまたはリクエスト・メッセージを送信できます。

  • レポートの取得: なんらかのレポートが必要な場合は、このオプションを選択します。レポートのタイプは、図10-14に示す次のページで指定できます。

  • キュー名: Oracle MQ Seriesアダプタがメッセージをエンキューするキューの名前。これは必須フィールドです。

  • キュー・マネージャ: キューが属しているキュー・マネージャの名前です。このフィールドはオプションです。

  • メッセージの書式: メッセージのフォーマット。

  • 優先度: 0(最低)から9(最高)までのメッセージの優先度。

  • 永続性: メッセージの永続性。メッセージの永続性を、宛先キューで定義されているデフォルトの永続性属性から取得するように指定することも可能です。

  • 配信失敗: メッセージの配信に失敗した場合、そのメッセージを配信不能キューに蓄積するか、または破棄できます。

  • 必要な場合、メッセージをセグメント化できます: これは、大きすぎてキューに収まらないメッセージに適用可能です。その場合、セグメント化するように指定していれば、単一メッセージをキューで対応できるバイト数の複数のメッセージに分割できます。

  • 有効期限: メッセージの有効期限。有効期限が経過したメッセージは破棄されます。

これらのプロパティの詳細は、第10.4.2項「メッセージ・プロパティ」および第10.4.5項「レポート・メッセージ」を参照してください。

「MQにメッセージを送信し、リプライ/レポートを取得」ページで「次へ」をクリックすると、「レポート」ページ(図10-14)または「レスポンス」ページ(図10-15)が表示されます。

図10-14に示す「レポート」ページが表示されるのは、図10-13に示した「MQにメッセージを送信し、リプライ/レポートを取得」ページで「レポートの取得」オプションを選択した場合のみです。

図10-14 「レポート」ページ

図10-14の説明が続きます
「図10-14 「レポート」ページ」の説明

このページで次のレポート・タイプを選択できます。

  • 着信時の確認

  • 送信時の確認

  • 例外レポート

  • 有効期限レポート

これらのレポート・タイプの詳細は、第10.4.5項「レポート・メッセージ」を参照してください。

「レポート」ページで「次へ」をクリックすると、図10-15に示す「レスポンス」ページが表示されます。

図10-15 「レスポンス」ページ

図10-15の説明が続きます
「図10-15 「レスポンス」ページ」の説明

「レスポンス」ページで次のプロパティを指定できます。

  • 返信先キュー名: 返信先キューの名前。

  • 「相関スキーム」: Oracle MQ Seriesアダプタで必要な相関スキーマ。

    相関スキーマの詳細は、第10.4.3項「相関スキーマ」を参照してください。

  • スキーマ・オプション: このオプションを使用すると、メッセージのデキューに使用するスキーマを指定できます。

    • 他のスキーマを選択します: このオプションでは、メッセージのデキューに使用するスキーマを選択できます。

    • 事前定義済スキーマを選択します: このオプションでは、アダプタに用意されている事前定義済のスキーマを選択できます。


注意:

非同期アウトバウンド・リクエスト/リプライのシナリオのOracle MQ Seriesアダプタの場合、プロパティはOracle Enterprise Managerコンソールで(Enqueue)または(Dequeue)ラベルによって区別されます。たとえば、QueueName(Enqueue)はメッセージの蓄積に使用され、QueueName(Dequeue)はリプライのデキューに使用されます。

Oracle Enterprise Manager Consoleを使用してこのシナリオのOracle MQ Seriesアダプタのプロパティを編集する場合は、次の点に注意してください。

  • ReplyToQueueName(Enqueue)プロパティを変更する場合は、QueueName(Dequeue)プロパティも同じ値に変更する必要があります。

  • MessageId(Dequeue)プロパティを変更する場合は、MessageId(Enqueue)プロパティも同じ値に変更する必要があります。

  • CorrelationId(Dequeue)プロパティを変更する場合は、CorrelationId(Enqueue)プロパティも同じ値に変更する必要があります。


「レスポンス」ページで「次へ」をクリックすると、図10-16に示す「メッセージ」ページが表示されます。このページでは、リクエスト・メッセージとレスポンス・メッセージの変換に使用するXSDスキーマ・ファイルを選択できます。

図10-16 「メッセージ」ページ

図10-16の説明が続きます
「図10-16 「メッセージ」ページ」の説明

このページで次のタスクを実行できます。

  • ネイティブ・フォーマット変換の要不要の指定

  • 変換用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

「メッセージ」ページの詳細は、第10.4.1.1項「メッセージのエンキュー」を参照してください。

請求-リクエスト-レスポンスのシナリオでは、リクエスト・メッセージを介して提供される、なんらかの相関スキームで指定されたリプライ・キュー内でリプライ・メッセージが予期されます。このリプライ・キューは特定のプロセス(BPEL/メディエータ)により使用され、他のプロセスでは使用されません。

同じリプライ・キューが他のなんらかのアプリケーションで使用される場合は、リプライ・メッセージの相関付けが正しいかどうかに関係なくメッセージが取得され、最終的にはメッセージが消失します。

10.4.1.4 同期リクエスト-レスポンス(Oracle BPEL PMがサーバーの場合)

このシナリオでは、Oracle BPEL PMがリクエストを受信して処理し、replyアクティビティを使用してレスポンスを同期的に送信します。Oracle MQ Seriesアダプタでは、次の操作が実行されます。

  1. メッセージの着信時にキューからリクエスト・メッセージがデキューされます。

  2. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  3. メッセージがXMLメッセージとしてOracle BPEL PMにパブリッシュされます。Oracle BPEL PMでは、リクエストが処理されてレスポンスがOracle MQ Seriesアダプタに送信されます。

  4. Oracle BPEL PMからのレスポンス・メッセージが受信されます。

  5. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。これらのプロパティは、アダプタ構成ウィザードで選択した内容に基づきます。

  7. 設計時にアダプタ構成ウィザードで指定したキューにメッセージが送信されます。

図10-17に、このシナリオのサンプルBPELプロセスを示します。

図10-17 同期リクエスト-レスポンスのサンプル(Oracle BPEL PMがサーバーの場合)

図10-17の説明が続きます
「図10-17 同期リクエスト-レスポンスのサンプル(Oracle BPEL PMがサーバーの場合)」の説明

図10-18に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

図10-18 同期リクエスト-レスポンス相互作用の「操作タイプ」ページでの選択

図10-18の説明が続きます
「図10-18 同期リクエスト-レスポンス相互作用の「操作タイプ」ページでの選択」の説明

図10-19に、「MQからメッセージを取得し、リプライ/レポートを送信」操作タイプを選択した後に表示されるページを示します。このページで、Oracle MQ Seriesアダプタでメッセージがデキューされるキュー名を指定します。

図10-19 「MQからメッセージを取得し、リプライ/レポートを送信」ページ

図10-19の説明が続きます
「図10-19 「MQからメッセージを取得し、リプライ/レポートを送信」ページ」の説明

「MQからメッセージを取得し、リプライ/レポートを送信」ページで「次へ」をクリックすると、図10-20に示す「レスポンス」ページが表示されます。

図10-20 同期リクエスト-レスポンスの「レスポンス」ページ

図10-20の説明が続きます
「図10-20 同期リクエスト-レスポンスの「レスポンス」ページ」の説明

「レスポンス」ページで次のプロパティを指定できます。

  • メッセージ・タイプ: デキューするメッセージのタイプ。このオプションは返信メッセージ・タイプに影響します。

  • メッセージの書式: メッセージのフォーマット。

  • 優先度: メッセージの優先度。

  • 永続性: メッセージの永続性。メッセージの永続性を、宛先キューで定義されているデフォルトの永続性属性から取得するように指定することも可能です。

  • 配信失敗: メッセージの配信に失敗した場合、そのメッセージを配信不能キューに蓄積するか、または破棄できます。

  • 必要な場合、メッセージをセグメント化できます: これは、大きすぎてキューに収まらないメッセージに適用可能です。その場合、セグメント化するように指定していれば、単一メッセージをキューで対応できるバイト数の複数のメッセージに分割できます。

  • 有効期限: メッセージの有効期限。

これらのプロパティの詳細は、第10.4.2項「メッセージ・プロパティ」を参照してください。

「レスポンス」ページで「次へ」をクリックすると、図10-16に示す「メッセージ」ページが表示されます。このページで次のタスクを実行できます。

  • ネイティブ・フォーマット変換の要不要の指定

  • 変換用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

「メッセージ」ページの詳細は、第10.4.1.1項「メッセージのエンキュー」を参照してください。

10.4.1.5 非同期リクエスト-レスポンス(Oracle BPEL PMがサーバーの場合)

Oracle BPEL PMがリクエスト-レスポンス相互作用を開始すると、BPELプロセスはリクエストをインバウンド・メッセージとして受信し、処理してからinvokeアクティビティを介してレスポンスを送信します。非同期リクエスト-リプライのシナリオでは、Oracle MQ Seriesアダプタにより次の操作が実行されます。

  1. メッセージの着信時にキューからメッセージがデキューされます。

  2. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  3. メッセージがXMLメッセージとしてOracle BPEL PMにパブリッシュされます。Oracle BPEL PMでは、リクエストが処理されてレスポンスがOracle MQ Seriesアダプタに送信されます。

  4. Oracle BPEL PMからのメッセージが受信されます。

  5. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。これらのプロパティは、アダプタ構成ウィザードで選択した内容に基づきます。

  7. 設計時にアダプタ構成ウィザードで指定したキューにメッセージが送信されます。

図10-21に、このシナリオのサンプルBPELプロセスを示します。

図10-21 非同期リクエスト-レスポンスのサンプル(Oracle BPEL PMがサーバーの場合)

図10-21の説明が続きます
「図10-21 非同期リクエスト-レスポンスのサンプル(Oracle BPEL PMがサーバーの場合)」の説明

図10-22に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

図10-22 非同期リクエスト-レスポンス相互作用の「操作タイプ」ページでの選択

図10-22の説明が続きます
「図10-22 非同期リクエスト-レスポンス相互作用の「操作タイプ」ページでの選択」の説明

図10-19に、「MQからメッセージを取得し、リプライ/レポートを送信」操作タイプを選択した後に表示されるページを示します。このページで、Oracle MQ Seriesアダプタでメッセージがデキューされるキュー名を指定します。

「MQからメッセージを取得し、リプライ/レポートを送信」ページで「次へ」をクリックすると、図10-20に示す「レスポンス」ページが表示されます。

「レスポンス」ページで次のプロパティを指定できます。

  • メッセージ・タイプ: デキューするメッセージのタイプ。このオプションは返信メッセージ・タイプに影響します。

  • メッセージの書式: メッセージのフォーマット。

  • 優先度: メッセージの優先度。

  • 永続性: メッセージの永続性。メッセージの永続性を、宛先キューで定義されているデフォルトの永続性属性から取得するように指定することも可能です。

  • 配信失敗: メッセージの配信に失敗した場合、そのメッセージを配信不能キューに蓄積するか、または破棄できます。

  • 必要な場合、メッセージをセグメント化できます: これは、大きすぎてキューに収まらないメッセージに適用可能です。その場合、セグメント化するように指定していれば、単一メッセージをキューで対応できるバイト数の複数のメッセージに分割できます。

  • 有効期限: メッセージの有効期限。

これらのプロパティの詳細は、第10.4.2項「メッセージ・プロパティ」を参照してください。

「MQからメッセージを取得し、リプライ/レポートを送信」ページで「次へ」をクリックすると、「レスポンス」ページ(図10-23および図10-24)が表示されますが、これらのページのオプションのセットは互いに異なります。

図10-23 「レスポンス」ページ(「リクエスト」メッセージ・タイプを選択した場合)

図10-23の説明が続きます
「図10-23 「レスポンス」ページ(「リクエスト」メッセージ・タイプを選択した場合)」の説明

図10-24に示す「レスポンス」ページが表示されるのは、「MQからメッセージを取得し、リプライ/レポートを送信」ページの「メッセージ・タイプ」フィールドで「標準」オプションを選択した場合のみです。

図10-24 「レスポンス」ページ(「標準」メッセージ・タイプを選択した場合)

図10-24の説明が続きます
「図10-24 「レスポンス」ページ(「標準」メッセージ・タイプを選択した場合)」の説明

「レスポンス」ページで次のプロパティを指定できます。

  • (オプション)フォールバック返信先キュー: レスポンス・フォールバック・キュー名を入力します。レスポンス・メッセージは、リクエスト・メッセージのreplyToQueueプロパティで指定されたキューにエンキューされます。ただし、リクエスト・メッセージでreplyToQueueプロパティが設定されていない場合、ここに名前を入力することにより、プロセスがレスポンスをエンキューできるようになります。

  • (オプション)フォールバック返信先キュー・マネージャ: セカンダリ・キュー名を入力します。この名前が使用されるのは、JNDI接続名の指定時に設定したプライマリ・キュー・マネージャが、「キュー名」フィールドに入力されているキュー名にアクセスできない場合です。これは、「フォールバック返信先キュー」フィールドの説明にある機能に類似しています。

    「レスポンス」ページでの他のプロパティの指定方法は、図10-23で説明されているプロパティを参照してください。

「レスポンス」ページで「次へ」をクリックすると、図10-25に示す「メッセージ」ページが表示されます。このページで次のタスクを実行できます。

  • ネイティブ・フォーマット変換の要不要の指定

  • 変換用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

図10-25 「メッセージ」ページ

図10-25の説明が続きます
「図10-25 「メッセージ」ページ」の説明

「メッセージ」ページの詳細は、第10.4.1.1項「メッセージのエンキュー」を参照してください。

非同期リクエスト-リプライ相互作用では、インバウンド・メッセージ・ヘッダーからアウトバウンド・メッセージ・ヘッダーに次のプロパティをマップする必要があります。

  • MsgID: メッセージIDを指します。

  • CorrelID: メッセージの相関IDを指します。

  • CorrelationScheme: リクエスト・メッセージのmsgidとcorrelidの組合せを指します。

    詳細は、第10.4.3項「相関スキーマ」を参照してください。

  • ReplyToQ: レスポンス・キューの名前を指します。

  • ReplyToQueueManager: レスポンス・キュー・マネージャの名前を指します。

これらのプロパティはassignアクティビティを使用してマップできます。

  1. BPELプロセスを作成してダブルクリックし、「BPELデザイナ」ページを開きます。

  2. 表示される垂直メニューで、(x)としてグレー表示されている「変数」アイコンをクリックします。図10-26に示すように、「変数」ダイアログが表示されます。

    図10-26 「変数」ダイアログ

    図10-26の説明が続きます
    「図10-26 「変数」ダイアログ」の説明

  3. 図10-27および図10-28に示すように、これらの変数にインバウンド・ヘッダー・メッセージを取得します。

    図10-27 「Receive」ダイアログ

    図10-27の説明が続きます
    「図10-27 「Receive」ダイアログ」の説明

  4. 図10-28および図10-23に示すように、アウトバウンド・リプライ・メッセージについてステップ2で取得した変数を割り当てます。

    図10-28 「Invoke」ダイアログ

    図10-28の説明が続きます
    「図10-28 「起動」ダイアログ」の説明

10.4.1.6 同期リクエスト-レスポンス(Mediatorがサーバーの場合)

このシナリオでは、メディエータがリクエストを受信して処理し、レスポンスを同期的に送信します。Oracle MQ Seriesアダプタでは、次の操作が実行されます。

  1. メッセージの着信時にキューからリクエスト・メッセージがデキューされます。

  2. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  3. メッセージがXMLメッセージとしてメディエータにパブリッシュされます。メディエータでは、リクエストが処理されてレスポンスがOracle MQ Seriesアダプタに送信されます。

  4. メディエータからのレスポンス・メッセージが受信されます。

  5. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。これらのプロパティは、アダプタ構成ウィザードで選択した内容に基づきます。

  7. 設計時にアダプタ構成ウィザードで指定したキューにメッセージが送信されます。

図10-19に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

これ以降のページは、すべて第10.4.1.4項「同期リクエスト-レスポンス(Oracle BPEL PMがサーバーの場合)」で説明したページと同様です。


注意:

メディエータの場合、非同期リクエスト-レスポンス・パターンはサポートされていません。


10.4.1.7 同期リクエスト-レスポンス(Oracle BPEL PMがクライアントの場合)

Oracle MQ Seriesアダプタでは、アウトバウンドの同期-請求-リクエスト-レスポンスのシナリオがサポートされています。このシナリオでは、アダプタにより同期的に通常/リクエスト・メッセージがキューにエンキューされてレポート/リプライが予想されます。レポート/リプライ・メッセージは、通常/リクエスト・メッセージのReplyToQueueNameキューに着信します。


注意:

グローバル・トランザクションに参加している場合、リクエスト・メッセージはエンキューされないため、非XAモードでアウトバウンド同期-請求-レスポンスを実行する必要があります。


図10-29に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

図10-29 「操作タイプ」ダイアログ

図10-29の説明が続きます
「図10-29 「操作タイプ」ダイアログ」の説明

図10-13に、「MQにメッセージを送信し、リプライ/レポートを取得」操作タイプを選択した後に表示されるページを示します。

このページで次のプロパティを指定できます。

  • メッセージ・タイプ: メッセージのタイプ。通常メッセージまたはリクエスト・メッセージを送信できます。

  • キュー名: Oracle MQ Seriesアダプタがメッセージをエンキューするキューの名前。これは必須フィールドです。

  • キュー・マネージャ: キューが属しているキュー・マネージャの名前です。このフィールドはオプションで、メッセージをリモート・キューにエンキューする場合に必要です。

  • メッセージの書式: メッセージのフォーマット。

  • 優先度: 0(最低)から9(最高)までのメッセージの優先度。

  • 永続性: メッセージの永続性。メッセージの永続性を、宛先キューで定義されているデフォルトの永続性属性から取得するように指定することも可能です。

  • 配信失敗: メッセージの配信に失敗した場合、そのメッセージを配信不能キューに蓄積するか、または破棄できます。

  • 必要な場合、メッセージをセグメント化できます: これは、大きすぎてキューに収まらないメッセージに適用可能です。その場合、セグメント化するように指定していれば、単一メッセージをキューで対応できるバイト数の複数のメッセージに分割できます。

  • 有効期限: メッセージの有効期限。有効期限が経過したメッセージは破棄されます。

「MQにメッセージを送信し、リプライ/レポートを取得」ページで「次へ」をクリックすると、図10-30に示す「レスポンス」ページが表示されます。

図10-30 「レスポンス」ページ

図10-30の説明が続きます
「図10-30 「レスポンス」ページ」の説明

同期リクエスト-レスポンスのシナリオでは、「レスポンス」ページで次のプロパティも編集する必要があります。

  • 返信先キュー名: 返信先キューの名前。

  • 「相関スキーム」: Oracle MQ Seriesアダプタで使用される必要がある相関スキーマ。

    相関スキーマの詳細は、第10.4.3項「相関スキーマ」を参照してください。

  • スキーマ・オプション: このオプションを使用すると、メッセージのデキューに使用するスキーマを指定できます。

    • 他のスキーマを選択します: このオプションでは、メッセージのデキューに使用するスキーマを選択できます。

    • 事前定義済スキーマを選択します: このオプションでは、アダプタに用意されている事前定義済のスキーマを選択できます。

  • レスポンス待機間隔: このプロパティに有効な値は、任意の間隔値(>= 0)です。これは、アダプタがreplyToQueueNameへのレポート/リプライの着信を待機するミリ秒数です。デフォルトでは、このプロパティの値は0(ゼロ)ミリ秒です。この値は変更できますが、アウトバウンド・アクティビティのタイムアウト間隔よりも小さい値に設定する必要があります。レポート/リプライ・メッセージが規定の時間内に着信しなければ、アダプタにより例外がスローされます。このプロパティはオプションです。


注意:

ResponseWaitIntervalは、アウトバウンド・アクティビティのタイムアウト間隔よりも小さい値に設定する必要があります。ResponseWaitIntervalの値がアウトバウンド・アクティビティのタイムアウトを超えると、アダプタの動作が曖昧になる可能性があります。


10.4.1.8 同期リクエスト-レスポンス(Oracle Mediatorがクライアントの場合)

Oracle MQ Seriesアダプタでは、アウトバウンドの同期-請求-リクエスト-レスポンスのシナリオもサポートされています。このシナリオでは、アダプタにより同期的に通常/リクエスト・メッセージがキューにエンキューされてレポート/リプライが予想されます。レポート/リプライ・メッセージは、通常/リクエスト・メッセージのReplyToQueueNameキューに着信します。

同期リクエスト-レスポンス(Oracle Mediatorがクライアントの場合)のシナリオは、同期リクエスト-レスポンス(Oracle BPELがクライアントの場合)と同じです。同期リクエスト-レスポンスのシナリオの詳細は、第10.4.1.7項「同期リクエスト-レスポンス(Oracle BPEL PMがクライアントの場合)」を参照してください。

10.4.1.9 非同期リクエスト-レスポンス(Oracle Mediatorがクライアントの場合)

このシナリオでは、Oracle Mediatorがリクエスト・メッセージを送信し、Mediatorコールバック・ハンドラから対応するレスポンスを受信します。Oracle Mediatorでは、アウトバウンド起動が送信されてリクエストが送信されます。Oracle MQ Seriesアダプタでは、次の操作が実行されます。

  1. Oracle Mediatorからのメッセージが受信されます。

  2. 設計時にアダプタ構成ウィザードで指定したXMLコンテンツがフォーマットされます。

  3. リクエスト・メッセージのプロパティと相関スキーマが設定されます。

  4. 設計時に指定したキューにメッセージが送信されます。サード・パーティ・アプリケーションはメッセージを受信して処理し、レスポンスを生成してから、リクエスト・メッセージで指定されたreplyToキューにレスポンス・メッセージをエンキューします。レスポンス・メッセージの相関IDとメッセージIDは、リクエスト・メッセージで指定された相関スキーマに基づいて生成されます。

  5. Oracle MQ Seriesアダプタにより、replyToキューからメッセージがデキューされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。これらのプロパティは、アダプタ構成ウィザードで選択した内容に基づきます。

  7. レスポンスがBPELプロセスの非開始のreceiveアクティビティに送信されます。レスポンスが正しいBPELインスタンスに確実に送信されるように、相関スキーマが使用されます。

図10-12に、アダプタ構成ウィザードで選択する必要がある操作タイプを示します。

図10-13に、「MQにメッセージを送信し、リプライ/レポートを取得」操作タイプを選択した後に表示されるページを示します。

このページで次のプロパティを指定できます。

  • メッセージ・タイプ: メッセージのタイプ。通常メッセージまたはリクエスト・メッセージを送信できます。

  • キュー名: Oracle MQ Seriesアダプタがメッセージをエンキューするキューの名前。これは必須フィールドです。

  • メッセージの書式: メッセージのフォーマット。

  • キュー・マネージャ: キューが属しているキュー・マネージャの名前です。このフィールドはオプションで、メッセージをリモート・キューにエンキューする場合に必要です。

  • 優先度: 0(最低)から9(最高)までのメッセージの優先度。

  • 永続性: メッセージの永続性。メッセージの永続性を、宛先キューで定義されているデフォルトの永続性属性から取得するように指定することも可能です。

  • 配信失敗: メッセージの配信に失敗した場合、そのメッセージを配信不能キューに蓄積するか、または破棄できます。

  • 必要な場合、メッセージをセグメント化できます: これは、大きすぎてキューに収まらないメッセージに適用可能です。その場合、セグメント化するように指定していれば、単一メッセージをキューで対応できるバイト数の複数のメッセージに分割できます。

  • 有効期限: メッセージの有効期限。有効期限が経過したメッセージは破棄されます。

これらのプロパティの詳細は、第10.4.2項「メッセージ・プロパティ」および第10.4.5項「レポート・メッセージ」を参照してください。

「MQにメッセージを送信し、リプライ/レポートを取得」ページで「次へ」をクリックすると、「レポート」ページ(図10-14)または「レスポンス」ページ(図10-15)が表示されます。

図10-14に示す「レポート」ページが表示されるのは、図10-13に示した「MQにメッセージを送信し、リプライ/レポートを取得」ページで「レポートの取得」オプションを選択した場合のみです。

図10-15に示す「レスポンス」ページは、「リクエスト」オプションと「標準」オプションのどちらを選択したかに関係なく表示されます。唯一の違いは、「リクエスト」オプションを選択すると、「レスポンス」ページの「メッセージ・タイプ」フィールドにREPLYと表示されることです。これに対して、「標準」オプションを選択すると、「レスポンス」ページの「メッセージ・タイプ」フィールドにはREPORTSと表示されます。

図10-14に示すように、次のレポート・タイプを選択できます。

  • 着信時の確認

  • 送信時の確認

  • 例外レポート

  • 有効期限レポート

これらのレポート・タイプの詳細は、第10.4.5項「レポート・メッセージ」を参照してください。

「レポート」ページで「次へ」をクリックすると、図10-15に示す「レスポンス」ページが表示されます。

「レスポンス」ページで次のプロパティを指定できます。

  • 返信先キュー名: 返信先キューの名前。

  • 「相関スキーム」: Oracle MQ Seriesアダプタで使用される相関スキーマ。

    相関スキーマの詳細は、第10.4.3項「相関スキーマ」を参照してください。

  • スキーマ・オプション: このオプションを使用すると、メッセージのデキューに使用するスキーマを指定できます。

    • 他のスキーマを選択します: このオプションでは、メッセージのデキューに使用するスキーマを選択できます。

    • 事前定義済スキーマを選択します: このオプションでは、アダプタに用意されている事前定義済のスキーマを選択できます。


注意:

非同期アウトバウンド・リクエスト/リプライのシナリオのOracle MQ Seriesアダプタの場合、プロパティはOracle Enterprise Managerコンソールで(Enqueue)または(Dequeue)ラベルによって区別されます。たとえば、QueueName(Enqueue)はメッセージの蓄積に使用され、QueueName(Dequeue)はリプライのデキューに使用されます。

Oracle Enterprise Manager Consoleを使用してこのシナリオのOracle MQ Seriesアダプタのプロパティを編集する場合は、次の点に注意してください。

  • ReplyToQueueName(Enqueue)プロパティを変更する場合は、QueueName(Dequeue)プロパティも同じ値に変更する必要があります。

  • MessageId(Dequeue)プロパティを変更する場合は、MessageId(Enqueue)プロパティも同じ値に変更する必要があります。

  • CorrelationId(Dequeue)プロパティを変更する場合は、CorrelationId(Enqueue)プロパティも同じ値に変更する必要があります。


「レスポンス」ページで「次へ」をクリックすると、図10-16に示す「メッセージ」ページが表示されます。このページでは、リクエスト・メッセージとレスポンス・メッセージの変換に使用するXSDスキーマ・ファイルを選択できます。

「メッセージ」ページの詳細は、第10.4.1.1項「メッセージのエンキュー」を参照してください。

10.4.1.10 アウトバウンド・デキューのシナリオ

アウトバウンド・デキューのシナリオでは、アダプタ構成ウィザードの「操作タイプ」ページで「MQからメッセージを取得」オプションを使用し、アウトバウンドOracle MQ Seriesアダプタを使用してキューから単一メッセージをデキューします。アウトバウンド・デキュー・オプションを有効化するには、図10-29に示すように「同期」オプションを選択する必要があります。

「MQにメッセージを送信し、リプライ/レポートを取得」ページで「次へ」をクリックすると、図10-30に示す「レスポンス」ページが表示されます。「レスポンス」ページで次のプロパティを設定する必要があります。

  • QueueName: メッセージのデキュー元のMQ Seriesキュー名です。このプロパティは必須です。

  • レスポンス待機間隔: メッセージがキューにない場合にアダプタが待機するミリ秒数です。このプロパティのデフォルト値は0(ゼロ)ミリ秒です。このプロパティはオプションです。このプロパティに有効な値は、任意の整数値(>= 0)です。このプロパティには、アウトバウンド・アクティビティのタイムアウトよりも小さい値を設定する必要があります。


    注意:

    ResponseWaitIntervalは、アウトバウンド・アクティビティのタイムアウト間隔よりも小さい値に設定する必要があります。ResponseWaitIntervalの値がアウトバウンド・アクティビティのタイムアウトを超えると、アダプタの動作が曖昧になる可能性があります。


  • メッセージID: このプロパティは、messageIdに基づいてメッセージ・フィルタ・オプションを設定します。このプロパティはオプションです。このプロパティに設定する値は、特定のmessageIdの16進数エンコード値である必要があります。

  • 相関ID: このプロパティは、correlationIdに基づいてメッセージ・フィルタ・オプションを設定します。このプロパティはオプションです。このプロパティに設定する値は、特定のcorrelationIdの16進数エンコード値である必要があります。


    注意:

    ヘッダーを介し、「メッセージID」および「相関ID」プロパティに基づいてメッセージをフィルタ処理できます。


10.4.2 メッセージ・プロパティ

Oracle MQ Seriesアダプタでは、次のメッセージ・プロパティがサポートされます。

10.4.2.1 メッセージ・タイプ

Oracle MQ Seriesアダプタは、次の4タイプのメッセージをサポートしています。

  • 通常メッセージ

    通常メッセージは、あるプログラムから別のプログラムに送信されますが、レスポンスは期待されません。

  • リクエスト・メッセージ

    リクエスト・メッセージは、あるプログラムから別のプログラムに送信され、レスポンスが必要です。

  • リプライ・メッセージ

    リプライ・メッセージは、リクエスト・メッセージに対するレスポンスとしてプログラムにより送信されます。

  • レポート・メッセージ

    レポート・メッセージは、受信側プログラムから送信側プログラムに、メッセージ配信の成功または失敗の確認として送信されます。レポート・メッセージはすべてのメッセージ・タイプ(通常メッセージ、リクエスト・メッセージまたはリプライ・メッセージ)について生成できます。

    Oracle MQ Seriesアダプタでサポートされている確認メッセージの詳細は、第10.4.5項「レポート・メッセージ」を参照してください。

10.4.2.2 メッセージのフォーマット

図10-8のように、アダプタ構成ウィザードを介して送信メッセージのフォーマットを指定できます。次のメッセージ・フォーマットがサポートされています。

  • フォーマット名なし(デフォルト)

  • コマンド・サーバー・リクエスト/リプライ・メッセージ

  • タイプ1コマンド・リプライ・メッセージ

  • タイプ2コマンド・リプライ・メッセージ

  • 配信不能ヘッダー

  • イベント・メッセージ

  • プログラム可能なコマンド・フォーマットによるユーザー定義メッセージ

  • 文字のみで構成されるメッセージ

  • トリガー・メッセージ

  • 転送キュー・ヘッダー

10.4.2.3 メッセージの有効期限

図10-8のように、アダプタ構成ウィザードを使用して送信メッセージの有効期限を指定できます。メッセージの有効期限後は、キュー・マネージャによりメッセージが破棄されます。

メッセージに有効期限通知が設定されている場合は、メッセージが破棄されるときに通知が生成されます。この通知は、replyToQueueパラメータで指定されたキューに送信されます。デフォルトでは、expiryフィールドにNEVERが設定されます。

10.4.2.4 メッセージの優先度

図10-8のように、アダプタ構成ウィザードを介して送信メッセージの優先度を指定できます。優先度の範囲は0(最低)から9(最高)までです。また、メッセージの優先度を、宛先キューで定義されているデフォルトの優先度属性から取得するように指定することも可能です。デフォルトでは、メッセージ優先度としてAS_Q_DEFが設定されます。

10.4.2.5 メッセージの永続性

図10-8のように、アダプタ構成ウィザードを介して送信メッセージの永続性を指定できます。メッセージの永続性が設定されていない場合は、キュー・マネージャの再起動時またはシステム障害の発生時にメッセージが消失します。メッセージの永続性をtrueに設定すると、システム障害が発生したりキュー・マネージャが再起動してもメッセージは消失しません。メッセージの永続性を、宛先キューで定義されているデフォルトの優先度属性から取得するように指定することも可能です。永続メッセージは、アダプタによってログ・ファイルとキュー・データ・ファイルに書き込まれます。障害後にキュー・マネージャが再起動すると、これらの永続メッセージが各ファイルからリカバリされます。


注意:

前述のメッセージ・プロパティはすべて、実行時にメッセージ・ヘッダーを介して指定できます。これらのプロパティにはassignアクティビティを使用して値を割り当てることができます。


10.4.3 相関スキーマ

リクエスト-リプライ相互作用でリクエストにレスポンスをマッピングするには、相関付けが必要です。各MQ Seriesリクエスト・メッセージには、メッセージIDと相関IDが含まれています。アプリケーションは、Oracle BPEL PMからリクエスト・メッセージを受信すると、レスポンス・メッセージに対して定義されている相関スキーマをチェックします。アプリケーションでは、相関スキーマに基づいてレスポンス・メッセージのメッセージIDと相関IDが生成されます。

図10-15に示すアダプタ構成ウィザードの「レスポンス」ページでは、レスポンス・メッセージの相関スキーマを指定できます。

図10-15に示す「メッセージID」ボックスには、レスポンス・メッセージのメッセージIDについて次のオプションが用意されています。

  • レスポンス・メッセージの新規メッセージIDの生成

  • リクエスト・メッセージのメッセージIDを使用

同様に、図10-15に示す「相関ID」ボックスには、レスポンス・メッセージの相関IDについて次のオプションが用意されています。

  • リクエスト・メッセージのメッセージIDを使用

  • リクエスト・メッセージの相関IDを使用

10.4.4 配布リストのサポート

Oracle MQ Seriesアダプタでは、メッセージを複数のキューにエンキューできます。

「操作タイプ」ページで「MQにメッセージを蓄積」オプションを選択した場合に、複数のキューがあると、自動的にJCAファイルにDistributionListパラメータが追加されます。

10.4.5 レポート・メッセージ

Oracle MQ Seriesアダプタでは、送信メッセージに各種の確認メッセージを設定できます。これらの確認メッセージはレポート・メッセージと呼ばれます。レポート・メッセージが生成されるのは、その生成基準が満たされる場合のみです。メッセージをキューにエンキューするときに、複数タイプのレポート・メッセージをリクエストできます。レポート・メッセージをリクエストする場合は、レポート・メッセージの送信先となるキュー名を指定する必要があります。このキューはreplyToキューと呼ばれます。レポート・メッセージは、キュー・マネージャ、メッセージ・チャネルまたはアプリケーションで生成できます。

Oracle MQ Seriesアダプタでは、次のメッセージ・レポートがサポートされます。

  • 着信時の確認

    「着信時の確認」(COA)メッセージは、メッセージがターゲット・キュー・マネージャに送信されたことを示します。COAメッセージはキュー・マネージャにより生成されます。このメッセージ・レポートは、図10-14に示したアダプタ構成ページの「レポート」ページで選択できます。

  • 送信時の確認

    「送信時の確認」(COD)メッセージは、メッセージが受信側アプリケーションにより受信されたことを示します。CODメッセージはキュー・マネージャにより生成されます。このメッセージ・レポートは、図10-14に示した「レポート」ページで選択できます。

  • 例外レポート

    例外レポートが生成されるのは、メッセージを指定の宛先キューに送信できない場合です。例外レポートは、メッセージ・チャネルにより生成されます。このメッセージ・レポートは、図10-14に示したアダプタ構成ページの「レポート」ページで選択できます。

  • 有効期限レポート

    有効期限レポートは、メッセージが取得される前に指定の有効期限が経過したために、メッセージが破棄されたことを示します。有効期限レポートは、キュー・マネージャにより生成されます。このメッセージ・レポートは、図10-14に示したアダプタ構成ページの「レポート」ページで選択できます。

  • 肯定アクション通知

    肯定アクション通知(PAN)は、リクエストが正常に処理されたことを示します。つまり、メッセージでリクエストされたアクションが正常に実行されたことを意味します。このタイプのレポートは、アプリケーションにより生成されます。

  • 否定アクション通知

    否定アクション通知(NAN)は、リクエストが正常に処理されなかったことを示します。つまり、メッセージでリクエストされたアクションが正常に実行されなかったことを意味します。このタイプのレポートは、アプリケーションにより生成されます。

PANとNANを除き、前述のすべてのレポート・メッセージについて、オリジナル・メッセージの全体または一部を含めるか、まったく含めないかを指定できます。アダプタ構成ウィザードで次のいずれかのオプションを選択できます。

  • オリジナル・メッセージのデータなし

  • オリジナル・メッセージの最初の100バイトのデータ

  • オリジナル・メッセージ全体

10.4.6 メッセージ配信失敗オプション

メッセージ配信失敗オプションは、リモート・キューに対してのみサポートされ、通常のキューではサポートされません。Oracle MQ Seriesアダプタでは、メッセージを宛先キューに配信できなかった場合に実行するアクションを指定できます。次のいずれかを指定できます。

  • メッセージを配信不能キューに蓄積します

    これはデフォルト・アクションです。宛先キューに配信できなかったメッセージは配信不能キューに蓄積されます。送信者からリクエストされた場合は、レポート・メッセージが生成されます。

  • メッセージの破棄

    これは、宛先キューに配信できないメッセージを破棄する必要があることを示します。送信者からリクエストされた場合は、レポート・メッセージが生成されます。

アダプタ構成ウィザードで「MQにメッセージを蓄積」オプションを選択すると、これらのオプションを指定できます。

10.4.7 メッセージのセグメンテーション

Oracle MQ Seriesアダプタでは、インバウンド相互作用とアウトバウンド相互作用の両方でメッセージのセグメンテーションがサポートされています。セグメンテーションが必要になるのは、メッセージ・サイズがキューの許容メッセージ・サイズよりも大きい場合です。物理メッセージは2つ以上の論理メッセージに分割されます。すべての論理メッセージには、同じグループIDと順序番号およびオフセットが付きます。

インバウンド相互作用の場合、セグメンテーションは本来Oracle MQ Seriesアダプタでサポートされています。Oracle MQ Seriesアダプタでは、すべての論理メッセージが順序番号順にデキューされてから、単一メッセージがXMLとしてOracle BPEL PMまたはメディエータにパブリッシュされます。

「必要な場合、メッセージをセグメント化できます」オプションを使用すると、アウトバウンド相互作用についてメッセージをセグメント化できます。このオプションは、アダプタ構成ウィザードの「レスポンス」ページに表示されます。

メッセージは、サイズがキューに設定された上限を超えるかどうかに基づいてセグメント化されます。

10.4.8 CICSとの統合

Oracle MQ Seriesアダプタは、CICSサーバーからのメッセージの送受信をサポートします。インバウンド方向では、CICSサーバーからのインバウンド・メッセージは通常メッセージと同様にデキューされます。アウトバウンド方向では、メッセージにCICSフォーマットを使用する必要があります。次の例に、アウトバウンドCICSメッセージ・フォーマットのサンプル・スキーマ・ファイルを示します。

<?xml version="1.0" ?><schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/cics_mqcih"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        
        xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
        nxsd:version="NXSD"
        
        nxsd:encoding="UTF8"
        nxsd:stream="bytes"
        nxsd:byteOrder="bigEndian"
        
        xmlns:nxsd_extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"

<element name="MSGForMQCICSBridge">
    <complexType>
      <sequence>
        <element name="MQCIH">
          <complexType>
            <sequence>
              <!--
              MQCHAR4   StrucId;
              Structure identifier
              -->
              <element name="StrucId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" nxsd:padStyle="tail"/>
              
              <!--
              MQLONG    Version;
              Structure version number 1 or 2
              -->
              <element name="Version" type="string"
               nxsd:style="integer" nxsd_extn:octet="4"
               nxsd_extn:align="0" nxsd_extn:sign="unticked" />
              <!--
              MQLONG    StrucLength;
              Length of MQCIH structure V1=164 V2=180
              -->
              <element name="StrucLength" type="string"
               nxsd:style="integer" nxsd_extn:octet="4"
               nxsd_extn:align="0" nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG    Encoding;
              Reserved
              -->
              <element name="Encoding" type="string"
               nxsd:style="integer" nxsd_extn:octet="4"
               nxsd_extn:align="0" nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG    CodedCharSetId;
              Reserved              -->
              <element name="CodedCharSetId" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQCHAR8   Format;
              MQ Format name
              -->
              <element name="Format" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />
              
              <!--
              MQLONG    Flags;
              Reserved
              -->
              <element name="Flags" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 

               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   ReturnCode;
              Return code from bridge
              -->
              <element name="ReturnCode" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   CompCode;
              MQ completion code or CICS EIBRESP
              -->
              <element name="CompCode" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   Reason;
              MQ reason or feedback code, or CICS EIBRESP2
              -->
              <element name="Reason" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   UOWControl;
              Unit-of-work control
              -->
              <element name="UOWControl" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   GetWaitInterval;
              Wait interval for MQGET call issued by bridge
              -->
              <element name="GetWaitInterval" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="ticked" />
              
              <!--
              MQLONG   LinkType;
              Link type
              -->
              <element name="LinkType" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
              nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   OutputDataLength;
              Output commarea data length
              -->
              <element name="OutputDataLength" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="ticked" />
              
              <!--
              MQLONG   FacilityKeepTime;
              Bridge facility release time
              -->
              <element name="FacilityKeepTime" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   ADSDescriptor;
              Send/receive ADS descriptor
              -->
              <element name="ADSDescriptor" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   ConversationalTask;
              Whether task can be conversational
              -->
              <element name="ConversationalTask" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
                            <!--
              MQLONG   TaskEndStatus;
              Status at end of task
              -->
              <element name="TaskEndStatus" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              
              <!--
              MQBYTE   Facility[8];
              BVT token value. Initialise as required.
              -->
              <element name="Facility" type="string"
               nxsd:style="integer" nxsd_extn:octet="8" nxsd_extn:align="0" 
               nxsd _extn:sign="unticked" />
              
              <!--
              MQCHAR4  Function;
              MQ call name or CICS EIBFN function name
              -->
              <element name="Function" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  AbendCode;
              Abend code
              -->
              <element name="AbendCode" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR8  Authenticator;
              Password or passticket
              -->
              <element name="Authenticator" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />
              
              <!--
              MQCHAR8  Reserved1;
              Reserved
              -->
              <element name="Reserved1" type="string"
               nxsd:style="fixedLength" nxsd:length="8" />
              
              <!--
              MQCHAR8  ReplyToFormat;
              MQ format name of reply message
              -->
              <element name="ReplyToFormat" type="string"
               nxsd:style="fixedLength" nxsd:length="8" />
              
              <!--
              MQCHAR4  RemoteSysId;
              Remote sysid to use
              -->
              <element name="RemoteSysId" type="string"
              nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  RemoteTransId;
              Remote transid to attach
              -->
              <element name="RemoteTransId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  TransactionId;
              Transaction to attach
              -->
              <element name="TransactionId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  FacilityLike;
              Terminal emulated attributes
              -->
              <element name="FacilityLike" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  AttentionId;
              AID key
              -->
              <element name="AttentionId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  StartCode;
              Transaction start code
              -->
              <element name="StartCode" type="string"
              nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  CancelCode;
              Abend transaction code
              -->
              <element name="CancelCode" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR4  NextTransactionId;
              Next transaction to attach
              -->
              <element name="NextTransactionId" type="string"
              nxsd:style="fixedLength" nxsd:length="4" />
              
              <!--
              MQCHAR8  Reserved2;
              Reserved
              -->
              <element name="Reserved2" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />
              <!--
              MQCHAR8  Reserved3;
              Reserved
              -->
              <element name="Reserved3" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />
              
              <!--
              MQLONG   CursorPosition;
              Cursor position
              -->
              <element name="CursorPosition" type="string"
              nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
              nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   ErrorOffset;
              Error offset
              -->
              <element name="ErrorOffset" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   InputItem;
              Input item
              -->
              <element name="InputItem" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
               nxsd_extn:sign="unticked" />
              
              <!--
              MQLONG   Reserved4;
              Reserved
              -->
              <element name="Reserved4" type="string"
              nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0" 
              nxsd_extn:sign="unticked" />
            </sequence>
          </complexType>
        </element>
        
        <!--
        Application data
        -->
        <element name="ApplicationData" type="string"
                                      fixed="Nothing" />
        
      </sequence>
    </complexType>
  </element>
</schema>

10.4.9 サポートされるエンコーディング

デフォルトでは、Oracle MQ Seriesアダプタは次のリストに示すエンコーディングをサポートしています。MQ Seriesメッセージ・エンコーディングとJavaエンコーディング、およびMQ Seriesメッセージ・エンコーディングとJavaエンコーディング間のマッピングを示します。Oracle MQ Seriesアダプタでサポートされるエンコーディングのリストは、次のとおりです。

  • ibm037

  • ibm437

  • ibm500

  • ibm819

  • Unicode

  • UTF8

  • ibm273

  • ibm277

  • ibm278

  • ibm280

  • ibm284

  • ibm285

  • ibm297

  • ibm420

  • ibm424

  • ibm737

  • ibm775

  • ibm813

  • ibm838

  • ibm850

  • ibm852

  • ibm855

  • ibm856

  • ibm857

  • ibm860

  • ibm861

  • ibm862

  • ibm863

  • ibm864

  • ibm866

  • ibm868

  • ibm869

  • ibm870

  • ibm871

  • ibm874

  • ibm875

  • ibm912

  • ibm913

  • ibm914

  • ibm915

  • ibm916

  • ibm918

  • ibm920

  • ibm921

  • ibm922

  • ibm930

  • SJIS

  • ibm933

  • ibm935

  • ibm937

  • ibm939

  • ibm942

  • ibm948

  • ibm949

  • ibm950

  • EUCJIS

  • ibm964

  • ibm970

  • ibm1006

  • ibm1025

  • ibm1026

  • ibm1089

  • ibm1097

  • ibm1098

  • ibm1112

  • ibm1122

  • ibm1123

  • ibm1124

  • Cp1250

  • Cp1251

  • Cp1252

  • Cp1253

  • Cp1254

  • Cp1255

  • Cp1256

  • Cp1257

  • Cp1258

  • ibm1381

  • ibm1383

  • JIS

  • KSC5601

  • ibm33722813

  • GB18030

このリストに示されていないその他の標準Javaエンコーディングのサポートは、次の方法で追加できます。

  1. MQSeriesAdapter.rarファイルからMQSeriesAdapter.jarファイルを抽出します。

  2. MQSeriesAdapter.jarファイルからmq.propertiesファイルを抽出します。

  3. mq.propertiesファイルにエントリを追加します。新しいエンコーディングごとに、mq.propertiesファイルに2つの行(プロパティ)を追加する必要があります。1行はMQ Seriesエンコーディングとそれに対応するJavaエンコーディング、もう1行はJavaエンコーディングとそれに対応するMQ Seriesエンコーディングです。

    たとえば、次のibm037 Javaエンコーディング(ibm037(Javaエンコーディング)<->37(MQ Seriesメッセージ・エンコーディング))のサポートを追加するには、mq.propertiesファイルに次の2行を追加する必要があります。

    oracle.tip.adapter.mq.encoding.37=ibm037

    oracle.tip.adapter.mq.encoding.ibm037=37

10.5 Oracle MQ Seriesアダプタの構成

Oracle MQ Seriesアダプタを使用するための前提条件は、次のとおりです。

Oracle MQ Seriesアダプタを構成する手順は、次のとおりです。

10.5.1 Oracle MQ Seriesアダプタのクラスパスへのcom.ibm.mq.jarの追加

この項に示す手順は、Oracle MQ Seriesアダプタを使用する前に1度実行します。Oracle MQ Seriesアダプタのクラスパスにcom.ibm.mq.jarプロパティを追加するには、com.ibm.mq.jarファイルを<DOMAIN_HOME>/libフォルダにコピーします。

10.5.2 Oracle MQ Seriesアダプタのクラスパスへのjarファイルの追加: MQ Series 6および7

この項に示す手順は、Oracle MQ Seriesアダプタを使用する前に1度実行します。

Oracle MQ Series 6アダプタのクラスパスに正しいjarプロパティを追加するには、次のjarを<DOMAIN_HOME>/libフォルダにコピーします。

  • com.ibm.mq.jar

  • com.ibm.mqetclient.jar (XAによる方法の場合)

Oracle MQ Series 7アダプタのクラスパスに正しいjarプロパティを追加するには、次のjarを<DOMAIN_HOME>/libフォルダにコピーします。

  • com.ibm.mq.commonservices.jar

  • com.ibm.mq.jar

  • com.ibm.mq.pcf.jar

  • com.ibm.mq.headers.jar

  • com.ibm.mq.jmqi.jar

  • com.ibm.mqetclient.jar (XAによる方法の場合)

また、Oracle MQ Series 7アダプタを使用している場合は、サーバー接続チャネルの新しい会話の共有プロパティをゼロに設定する必要があります。

10.5.3 JNDIエントリの追加

次の手順に従って、Oracle WebLogic Server管理コンソールで新規のJNDIエントリを追加できます。

  1. ユーザー名とパスワードを使用して次のURLにログインし、Oracle WebLogic Server管理コンソールを開きます。

    http://<localhost>:port/console

    図10-31に示すように、ホーム・ページが表示されます。

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

    図10-31の説明が続きます
    「図10-31 Oracle WebLogic Server管理コンソールのホーム・ページ」の説明

  2. 左ペインの「ドメイン構造」で、「デプロイメント」をクリックします。「デプロイメントの概要」ページが表示されます。

  3. 「MQSeriesAdapter」をクリックします。図10-32に示すように、「MQSeriesAdapterの設定」ページが表示されます。

    図10-32 「MQSeriesAdapterの設定」ページ

    図10-32の説明が続きます
    「図10-32 「MQSeriesAdapterの設定」ページ」の説明

  4. 「構成」タブをクリックします。図10-33に示すように、「構成」サブメニュー・オプションが表示されます。

    図10-33 「MQSeriesAdapterの設定」ページ: 「構成」サブメニュー・オプション

    図10-33の説明が続きます
    「図10-33 「MQSeriesAdapterの設定」ページ: 「構成」サブメニュー・オプション」の説明

  5. 「アウトバウンド接続プール」をクリックします。図10-34に示すように、「アウトバウンド接続プールの構成表」が表示されます。

    図10-34 アウトバウンド接続プールの構成表

    図10-34の説明が続きます
    「図10-34 アウトバウンド接続プールの構成表」の説明

  6. 「新規作成」をクリックします。図10-35に示すように、「新しいアウトバウンド接続の作成」ページが表示されます。

    図10-35 「新しいアウトバウンド接続の作成」ページ

    図10-35の説明が続きます
    「図10-35 「新しいアウトバウンド接続の作成」ページ」の説明

  7. 「javax.resource.cci.ConnectionFactory」オプションを選択し、「次へ」をクリックします。

  8. 図10-36に示すように、「JNDI名」フィールドに値(eis/MQ/MQAdapterなど)を入力します。

    図10-36 「新しいアウトバウンド接続の作成」ページ: JNDI名

    図10-36の説明が続きます
    「図10-36 「新しいアウトバウンド接続の作成」ページ: JNDI名」の説明

  9. 「終了」をクリックします。「デプロイメント・プラン保存アシスタント」ページが表示されます。

  10. 「OK」をクリックします。JNDI名が正常に作成されました。

10.5.4 接続のバインディング・モードの有効化

Oracle WebLogic Server管理コンソールでプロパティをいくつか変更して、Oracle MQ Seriesアダプタ用の接続のバインディング・モードを有効化できます。

バインディング・モードを有効化する手順は、次のとおりです。

  1. パスワード資格証明を使用して、Oracle WebLogic Server管理コンソールにログインします。

  2. 左ペインの「ドメイン構造」で、「デプロイメント」をクリックします。「デプロイメントの概要」ページが表示されます。

  3. 「MQSeriesAdapter」をクリックします。「MQSeriesAdapterの設定」ページが表示されます。

  4. 「構成」タブをクリックします。「構成」サブメニュー・オプションが表示されます。

  5. 「アウトバウンド接続プール」をクリックします。「アウトバウンド接続プールの構成表」が表示されます。

  6. 「javax.resource.cci.ConnectionFactory」の横にある「+」アイコンをクリックします。JNDIのリストが表示されます。

  7. 「eis/MQ/MQAdapter」を選択します。これは、第10.5.3項「JNDIエントリの追加」で作成したJNDIです。図10-37に示すように、24のプロパティのリストを含んだ「アウトバウンド接続のプロパティ」ページが表示されます。

    図10-37 「アウトバウンド接続のプロパティ」ページ

    図10-37の説明が続きます
    「図10-37 「アウトバウンド接続のプロパティ」ページ」の説明

  8. 次の説明に従ってパラメータを設定します。

    • hostName: この値は常に空白にする必要があります。

    • portNumber: この値には未使用のポート番号を指定する必要があります。たとえば、44888を指定します。

    • channelName: この値は常に空白にする必要があります。

    • queueManagerName: この値は有効なキュー・マネージャ名です。

Oracle MQ Seriesアダプタの接続用のバインディング・モードが有効化されました。

10.6 Oracle MQ Seriesアダプタの使用例

この項には、次の項目が含まれます。

10.6.1 デキュー/エンキュー

この使用例では、MQアダプタでメッセージをデキューし、MQ Seriesキューからトランスフォーメーション後の同じメッセージをエンキューするエンドツーエンドの方法について説明します。この項には、次の項目が含まれます。

10.6.1.1 前提条件

デキュー/エンキューの使用例を実行するには、Adapters-101MQAdapterDequeueEnqueueサンプルに含まれているartifacts.zipファイルの次のファイルが必要です。

  • artifacts/schemas/address-csv.xsd

  • artifacts/schemas/address-fixedLength.xsd

  • artifacts/input/data.txt

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

次のキューも作成する必要があります。

  • test_in

  • test_out

10.6.1.2 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 図10-38に示すように、「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにDe-queueEn-queueと入力して「次へ」をクリックします。「プロジェクトの名前付け」画面が表示されます。

    図10-38 「アプリケーションの名前付け」ページ

    図10-38の説明が続きます
    「図10-38 「アプリケーションの名前付け」ページ」の説明

  5. 図10-39に示すように、「プロジェクト名」フィールドにDe-queueEn-queueCompositeと入力し、「選択可能」リストから「SOA」を選択して右矢印ボタンをクリックします。

    図10-39 「プロジェクトの名前付け」ページ

    図10-39の説明が続きます
    「図10-39 「プロジェクトの名前付け」ページ」の説明

  6. 「次へ」をクリックします。「SOA設定の設定」画面が表示されます。

  7. 図10-40に示すように、「コンポジット・テンプレート」リストで「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ダイアログが表示されます。

    図10-40 「SOA設定の設定」ページ

    図10-40の説明が続きます
    「図10-40 「SOA設定の設定」ページ」の説明

  8. 図10-41に示すように、「名前」フィールドにBPELdequeueenqueueと入力し、「テンプレート」ボックスから「サービスを後で定義」を選択します。

    図10-41 「BPELプロセスの作成」ダイアログ

    図10-41の説明が続きます
    「図10-41 「BPELプロセスの作成」ダイアログ」の説明

  9. 「OK」をクリックします。図10-42に示すように、De-queueEn-queueアプリケーションとDe-queueEn-queueプロジェクトが設計領域に表示されます。

    図10-42 JDeveloper: composite.xml

    図10-42の説明が続きます
    「図10-42 JDeveloper: composite.xml」の説明

  10. address-csv.xsdファイルおよびaddress-fixedLength.xsdファイルをプロジェクトのxsdフォルダにコピーします(これらのファイルの場所は、第10.6.1.1項「前提条件」を参照)。

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 図10-43に示すように、「サービス名」フィールドにInboundServiceと入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

    図10-43 「サービス名」ページ

    図10-43の説明が続きます
    「図10-43 「サービス名」ページ」の説明

  4. 図10-44に示すように、MQ Series接続のデフォルトのJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

    図10-44 「MQ Series接続」ページ

    図10-44の説明が続きます
    「図10-44 「MQ Series接続」ページ」の説明

  5. 図10-45に示すように、「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

    図10-45 「アダプタ・インタフェース」ページ

    図10-45の説明が続きます
    「図10-45 「アダプタ・インタフェース」ページ」の説明

  6. 図10-46に示すように、「MQからメッセージを取得」を選択して「次へ」をクリックします。「MQからメッセージを取得」ページが表示されます。

    図10-46 「操作タイプ」ページ

    図10-46の説明が続きます
    「図10-46 「操作タイプ」ページ」の説明

  7. 図10-47に示すように、「キュー名」フィールドにtest_inと入力して「次へ」をクリックします。「メッセージ」ページが表示されます。

    図10-47 「MQからメッセージを取得」ページ

    図10-47の説明が続きます
    「図10-47 「MQからメッセージを取得」ページ」の説明

  8. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  9. 図10-48に示すように、「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番にクリックします。

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

    図10-48の説明が続きます
    「図10-48 「タイプ・チューザ」ダイアログ」の説明

  10. 「OK」をクリックします。図10-49に示すように、「メッセージ」ページの「URL」フィールドにaddress-csv.xsdファイルが表示されます。

    図10-49 「メッセージ」ページ

    図10-49の説明が続きます
    「図10-49 「メッセージ」ページ」の説明

  11. 「次へ」をクリックします。「終了」ページが表示されます。

  12. 「終了」をクリックします。インバウンド・アダプタ・サービスの構成が完了し、図10-50に示すように、「composite.xml」ページが表示されます。

    図10-50 JDeveloperページ: 「composite.xml」ページ

    図10-50の説明が続きます
    「図10-50 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにOutboundServiceと入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. 図10-44に示すように、MQ Series接続のデフォルトのJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 図10-45に示すように、「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQにメッセージを蓄積」を選択して「次へ」をクリックします。「MQにメッセージを蓄積」ページが表示されます。

  7. 「キュー名」フィールドにtest_outと入力して「次へ」をクリックします。図10-51に示すように、「詳細オプション」ページが表示されます。

    図10-51 「詳細オプション」ページ

    図10-51の説明が続きます
    「図10-51 「詳細オプション」ページ」の説明

  8. デフォルトを受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  9. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  10. 「プロジェクトのスキーマ・ファイル」「address-fixedLength.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「URL」フィールドにaddress-fixedLength.xsdファイルが表示されます。

  11. 「次へ」をクリックします。「終了」ページが表示されます。

  12. 「終了」をクリックします。アウトバウンド・アダプタ・サービスの構成が完了し、図10-52に示すように、「composite.xml」ページが表示されます。

    図10-52 JDeveloperページ: 「composite.xml」ページ

    図10-52の説明が続きます
    「図10-52 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

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

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

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

    図10-53 JDeveloper: composite.xml

    図10-53の説明が続きます
    「図10-53 JDeveloper: composite.xml」の説明

  3. 「ファイル」「すべて保存」を順番にクリックします。

  4. 「BPELdequeueenqueue」をダブルクリックします。「BPELdequeueenqueue.bpel」ページが表示されます。

  5. 「コンポーネント・パレット」から、receivetransformおよびinvokeアクティビティを「コンポーネント」領域に順番にドラッグ・アンド・ドロップします。

    図10-54に示すように、JDeveloperの「BPELdequeueenqueue.bpel」ページが表示されます。

    図10-54 「BPELdequeueenqueue.bpel」ページ

    図10-54の説明が続きます
    「図10-54 「BPELdequeueenqueue.bpel」ページ」の説明

  6. receiveアクティビティをInboundServiceにドラッグ・アンド・ドロップします。「Receive」ダイアログが表示されます。

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

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

  9. 「インスタンスの作成」ボックスを選択して「OK」をクリックします。

  10. invokeアクティビティをOutboundServiceにドラッグ・アンド・ドロップします。「Invoke」ダイアログが表示されます。

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

  12. デフォルトを受け入れて「OK」をクリックします。「Invoke」ダイアログが表示されます。

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

  14. transformアクティビティをダブルクリックします。「Transform」ダイアログが表示されます。

  15. 「作成... (Alt + N)」アイコンをクリックします。「ソース変数」ダイアログが表示されます。

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

  17. ターゲットとしてinvoke変数を選択して「OK」をクリックします。「Transformation_xsl」ページが表示されます。

  18. 「ソース」ペインのtns:Root-Elementを「ターゲット」ペインのfix:Root-Elementにドラッグ・アンド・ドロップします。「自動マップ・プリファレンス」ダイアログが表示されます。

  19. 「OK」をクリックします。図10-55に示すように、「Transformation_xsl」ページが表示されます。

    図10-55 「Trasformation_xsl」ページ

    図10-55の説明が続きます
    「図10-55 「Trasformation_xsl」ページ」の説明

    図10-56に示す「BPELdequeueenqueue.bpel」ページが表示されます。

    図10-56 「BPELdequeueenqueue.bpel」ページ

    図10-56の説明が続きます
    「図10-56 「BPELdequeueenqueue.bpel」ページ」の説明

10.6.1.6 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイする方法の詳細は、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

10.6.1.7 Oracle Enterprise Manager Fusion Middleware Controlコンソール(Fusion Middleware Controlコンソール)を使用した監視

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

  1. ユーザー名とパスワードを使用してhttp://servername:portnumber/emにログインします。「Oracle Enterprise Manager Fusion Middleware Control」ページが表示されます。

  2. 左ペインで、「SOA」「soa-infra (soa_server1)」の順にナビゲートします。デプロイされている全コンポジットのリストが表示されます。

  3. 「De-queueEn-queueComposite[1.0]」をクリックします。「De-queueEn-queueComposite[1.0]」ページが表示されます。

  4. data.txtファイルをコピーしてtest_inキューに入れます。

  5. 少し待ってからFusion Middleware Controlコンソールをリフレッシュします。インスタンスがコンソールに表示されます。これは、発生した処理のためトリガーされたインスタンスです。

  6. 「インスタンス」タブをクリックします。

  7. このデプロイメントに関連付けられているインスタンスをクリックします。「フローのトレース」ページが表示されます。

  8. 「BPELdequeueenqueue」コンポーネント・インスタンスをクリックします。「監査証跡」ページが表示されます。

  9. 「フロー」タブをクリックしてインスタンスをデバッグします。BPELプロセス・インスタンスのフローが表示されます。

  10. アクティビティをクリックして関連するペイロードの詳細を表示します。

10.6.2 インバウンド同期リクエスト-リプライ

この使用例では、インバウンドのOracle MQ SeriesアダプタがMQ Seriesのインバウンド・キューtest_inからリクエスト・メッセージをデキューして、BPELプロセスにパブリッシュします。Oracle MQ Seriesアダプタは、BPELプロセスからのレスポンスを待機します。レスポンスを受信すると、Oracle MQ Seriesアダプタはリクエスト・メッセージのreplyToQueueNameキューで指定されたMQ Seriesキューにレスポンス・メッセージをエンキューします。この使用例は、次の項で構成されています。

10.6.2.1 前提条件

この例は、基本的なBPELコンストラクト(アクティビティやパートナ・リンクなど)と、BPELプロセスを作成およびデプロイするJDeveloper環境をよく理解していることを前提としています。

第10.5項「Oracle MQ Seriesアダプタの構成」の指定に従ってOracle MQ Seriesアダプタを構成し、キューtest_inを作成する必要があります。

インバウンド同期リクエスト-リプライの使用例を実行するには、Adapters-101MQAdapterDequeueEnqueueサンプルに含まれているartifacts.zipファイルの次のファイルが必要です。

  • artifacts/schemas/address-csv.xsd

  • artifacts/schemas/address-fixedLength.xsd

  • artifacts/input/data.txt

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

次のキューも作成する必要があります。

  • test_in

  • test_reply

10.6.2.2 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにSyncReqResと入力して「次へ」をクリックします。「プロジェクトの名前付け」画面が表示されます。

  5. 「プロジェクト名」フィールドにSync_ReqResと入力し、「選択可能」リストから「SOA」を選択して右矢印ボタンをクリックします。

  6. 「次へ」をクリックします。「SOA設定の設定」画面が表示されます。

  7. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ダイアログが表示されます。

    JDeveloperのアプリケーション・ナビゲータに新しいアプリケーションとプロジェクトが反映され、「設計」タブに空白のパレットが表示されます。

  8. 「名前」フィールドにBPELsyncreqresと入力し、「テンプレート」ボックスから「サービスを後で定義」を選択します。

  9. 「OK」をクリックします。図10-57に示すように、SyncReqResアプリケーションとSync_ReqResプロジェクトが設計領域に表示されます。

    図10-57 JDeveloper: composite.xml

    図10-57の説明が続きます
    「図10-57 JDeveloper: composite.xml」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにinbound_reqresと入力して「次へ」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続JNDI名のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 図10-18に示すように、「MQからメッセージを取得し、リプライ/レポートを送信」を選択し、「同期」を選択して「次へ」をクリックします。「MQからメッセージを取得し、リプライ/レポートを送信」ページが表示されます。

  7. 「メッセージ・タイプ」ボックスで「標準」を選択し、「キュー名」フィールドにtest_inと入力します。

  8. 「次へ」をクリックします。「レスポンス」ページが表示されます。

  9. デフォルトを受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  10. 「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「URL」フィールドにaddress-csv.xsdファイルが表示されます。

  11. 「メッセージ・スキーマの送信」グループで、「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  12. 「プロジェクトのスキーマ・ファイル」「address-fixedLength.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「URL」フィールドにaddress-fixedLength.xsdファイルが表示されます。

  13. 「次へ」をクリックします。「終了」ページが表示されます。

  14. 「終了」をクリックします。インバウンド・アダプタ・サービスの構成が完了し、図10-58に示すように、「composite.xml」ページが表示されます。

    図10-58 JDeveloperページ: 「composite.xml」ページ

    図10-58の説明が続きます
    「図10-58 JDeveloperページ: 「composite.xml」ページ」の説明

  15. 「ファイル」「すべて保存」を順番にクリックします。

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

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

  1. inbound_reqresアダプタ・サービスをBPELsyncreqres BPELプロセスにドラッグ・アンド・ドロップします。

  2. 「BPELsyncreqres」をダブルクリックします。「BPELsyncreqres.bpel」ページが表示されます。

  3. 「コンポーネント・パレット」から、receivetransformおよびreplyアクティビティを「コンポーネント」領域に順番にドラッグ・アンド・ドロップします。

  4. receiveアクティビティをinbound_reqresアダプタ・サービスにドラッグ・アンド・ドロップします。「Receive」ダイアログが表示されます。

  5. 「名前」フィールドにReadMsgと入力します。

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

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

  8. 「Receive」ダイアログで、「インスタンスの作成」ボックスを選択して「OK」をクリックします。

  9. replyアクティビティをinbound_reqresアダプタ・サービスにドラッグ・アンド・ドロップします。「Reply」ダイアログが表示されます。

  10. 「名前」フィールドにReplyMsgと入力します。

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

  12. デフォルトを受け入れて「OK」をクリックします。この変数が「Reply」ダイアログに表示されます。

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

  14. transformアクティビティをダブルクリックします。「Transform」ダイアログが表示されます。

  15. 「+」アイコンをクリックします。「ソース変数」ダイアログが表示されます。

  16. 「ソース変数」リストで、「ReadMsg_DequeueEnqueue_InputVariable」を選択して「OK」をクリックします。

  17. 「ターゲット変数」リストで「ReplyMsg_DequeueEnqueue_OutputVariable」を選択します。

  18. 「マッピングの作成」アイコンをクリックします。図10-59に示すように、「Transformation.xsl」ページが表示されます。

    図10-59 「Transformation.xsl」ページ

    図9-58の説明が続きます
    「図10-59 「Transformation.xsl」ページ」の説明

  19. 「<sources>」パネルから、「tns:Root-Element」を「<target>」パネルの「fix:Root-Element」にドラッグします。「自動マップ・プリファレンス」ダイアログが表示されます。

  20. 「OK」をクリックします。図10-60に示すように、JDeveloperの「BPELsyncreqres.bpel」ページが表示されます。

    図10-60 「BPELsyncreqres.bpel」ページ

    図10-60の説明が続きます
    「図10-60 「BPELsyncreqres.bpel」ページ」の説明

10.6.2.5 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイするには、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

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

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

  1. ユーザー名とパスワードを使用してhttp://servername:portnumber/emにログインします。「Oracle Enterprise Manager Fusion Middleware Control」ページが表示されます。

  2. 左ペインで、「SOA」「soa-infra (soa_server1)」の順にナビゲートします。デプロイされている全コンポジットのリストが表示されます。

  3. 「Sync_ReqRes[1.0]」をクリックします。「Sync_ReqRes[1.0]」ページが表示されます。

  4. data.txtファイルのコンテンツでMQメッセージを作成し、replyToQueueNametest_replyに設定します。このメッセージをtest_inキューに蓄積します。

  5. 少し待ってからFusion Middleware Controlコンソールをリフレッシュします。インスタンスがコンソールに表示されます。これは、発生した処理のためトリガーされたインスタンスです。

  6. 「インスタンス」タブをクリックします。

  7. このデプロイメントに関連付けられているインスタンスをクリックします。「フローのトレース」ページが表示されます。

  8. 「BPELsyncreqres」コンポーネント・インスタンスをクリックします。「監査証跡」ページが表示されます。

  9. 「フロー」タブをクリックしてインスタンスをデバッグします。BPELプロセス・インスタンスのフローが表示されます。

  10. アクティビティをクリックして関連するペイロードの詳細を表示します。

10.6.3 インバウンド/アウトバウンド同期リクエスト-リプライ

この使用例では、MQアダプタの同期-請求-リクエスト-リプライのエンドツーエンドのシナリオについて説明します。この使用例では、コンポジットによりインバウンド・キューからメッセージがデキューされます。次に、リプライ・メッセージがインバウンド・メッセージで指定されたreplyToQueueキューにエンキューされます。この項には、次の項目が含まれます。

10.6.3.1 前提条件

インバウンド同期リクエスト-リプライの使用例を実行するには、Adapters-101MQAdapterDequeueEnqueueサンプルに含まれているartifacts.zipファイルの次のファイルが必要です。

  • artifacts/schemas/address-csv.xsd

  • artifacts/schemas/address-fixedLength.xsd

次の名前のキューも作成する必要があります。

  • test_in

  • test1

  • ReplyQ

  • test_reply

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

10.6.3.2 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにSync-Req-Repと入力して「次へ」をクリックします。「プロジェクトの名前付け」画面が表示されます。

  5. 「プロジェクト名」フィールドにSync-Req-RepCompositeと入力し、「選択可能」リストから「SOA」を選択して右矢印ボタンをクリックします。

  6. 「次へ」をクリックします。「SOA設定の設定」画面が表示されます。

  7. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ダイアログが表示されます。

  8. 「名前」フィールドにBPELSyncreqrepと入力し、「テンプレート」ボックスから「サービスを後で定義」を選択します。

  9. 「OK」をクリックします。図10-61に示すように、Sync-Req-RepアプリケーションとSync-Req-RepCompositeプロジェクトが設計領域に表示されます。

    図10-61 JDeveloper: composite.xml

    図10-61の説明が続きます
    「図10-61 JDeveloper: composite.xml」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにInboundReqRepServiceと入力して「次へ」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 図10-18に示すように、「MQからメッセージを取得し、リプライ/レポートを送信」を選択し、「操作名」ボックスで「同期」を選択して「次へ」をクリックします。「MQからメッセージを取得し、リプライ/レポートを送信」ページが表示されます。

  7. 「メッセージ・タイプ」リストで「標準」を選択し、「キュー名」フィールドにtest_inと入力し、「スキーマ・オプション」ボックスで「他のスキーマを選択します」を選択して「次へ」をクリックします。「レスポンス」ページが表示されます。

  8. デフォルトを受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  9. 「メッセージ・スキーマの取得」ボックスで、「URL」フィールドの端に表示される「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  10. 「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「メッセージ・スキーマの取得」ボックスにaddress-csv.xsdファイルが移入されます。

  11. 「メッセージ・スキーマの送信」ボックスで、「URL」フィールドの端に表示される「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  12. 「プロジェクトのスキーマ・ファイル」「address-fixedLength.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「メッセージ・スキーマの送信」ボックスにaddress-fixedLength.xsdファイルが移入されます。

  13. 「次へ」をクリックします。「終了」ページが表示されます。

  14. 「終了」をクリックします。InboundReqRepServiceアダプタ・サービスの構成が完了し、図10-62に示すように、「composite.xml」ページが表示されます。

    図10-62 JDeveloperページ: 「composite.xml」ページ

    図10-62の説明が続きます
    「図10-62 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにOutboundReqRepServiceと入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. デフォルトを受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQにメッセージを送信し、リプライ/レポートを取得」を選択し、「操作名」ボックスで「同期」を選択して「次へ」をクリックします。「MQにメッセージを送信し、リプライ/レポートを取得」ページが表示されます。

  7. 「キュー名」フィールドにtest1と入力して「次へ」をクリックします。「レスポンス」ページが表示されます。

  8. 「返信先キュー名」フィールドにキュー名(ReplyQなど)を入力し、「レスポンス待機間隔」オプションを選択して値を入力し、「空のレスポンス・メッセージを許可」オプションを選択します。

  9. 「次へ」をクリックします。「詳細オプション」ページが表示されます。

  10. デフォルト値を受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  11. 「メッセージ・スキーマの取得」ボックスで、「URL」フィールドの端に表示される「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  12. 「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「メッセージ・スキーマの取得」ボックスにaddress-csv.xsdファイルが移入されます。

  13. 「メッセージ・スキーマの送信」ボックスで、「URL」フィールドの端に表示される「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  14. 「プロジェクトのスキーマ・ファイル」「address-fixedLength.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。「メッセージ」ページの「メッセージ・スキーマの送信」ボックスにaddress-fixedLength.xsdファイルが移入されます。

  15. 「次へ」をクリックします。「終了」ページが表示されます。

  16. 「終了」をクリックします。OutboundReqRepServiceサービスの構成が完了し、図10-63に示すように、「composite.xml」ページが表示されます。

    図10-63 JDeveloperページ: 「composite.xml」ページ

    図10-63の説明が続きます
    「図10-63 JDeveloperページ: 「composite.xml」ページ」の説明

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

作成した3つのコンポーネント(InboundReqRepService、BPELSyncreqrepおよびOutboundReqRepService)をアセンブルまたは接続する必要があります。コンポーネントを接続する手順は、次のとおりです。

  1. 「公開されたサービス」領域にあるInboundReqRepServiceサービス内の小さい三角形を、「コンポーネント」領域のBPELSyncreqrep内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

  2. 「コンポーネント」領域にあるBPELSyncreqrep内の小さい三角形を、「外部参照」領域のOutboundReqRepService内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

  3. 同様に、「コンポーネント」領域にあるBPELSyncreqrep内の小さい三角形を、「外部参照」領域のOutboundReqRepService内のドロップ・ゾーンにドラッグします。

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

    図10-64 JDeveloper: composite.xml

    図10-64の説明が続きます
    「図10-64 JDeveloper: composite.xml」の説明

  4. 「ファイル」「すべて保存」を順番にクリックします。

  5. 「BPELSyncreqrep」をダブルクリックします。「BPELSyncreqrep.bpel」ページが表示されます。

  6. 「コンポーネント・パレット」から、receivetransforminvokeassignおよびreplyアクティビティを「コンポーネント」領域に順番にドラッグ・アンド・ドロップします。図10-65に示すように、JDeveloperの「BPELSyncreqrep.bpel」ページが表示されます。

    図10-65 「BPELSyncreqrep.bpel」ページ

    図10-65の説明が続きます
    「図10-65 「BPELSyncreqrep.bpel」ページ」の説明

  7. receiveアクティビティをInboundReqRepServiceにドラッグ・アンド・ドロップします。「Receive」ダイアログが表示されます。

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

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

  10. 図10-66 に示すように、「インスタンスの作成」ボックスを選択して「OK」をクリックします。

    図10-66 「Receive」ダイアログ

    同期の使用例「Receive」ダイアログ
    「図10-66 「Receive」ダイアログ」の説明

  11. replyアクティビティをInboundReqRepServiceにドラッグ・アンド・ドロップします。「Reply」ダイアログが表示されます。

  12. 「変数の自動作成」アイコンをクリックして変数を作成し、「OK」をクリックします。図10-67に示すように、「Reply」ダイアログが表示されます。

    図10-67 「Reply」ダイアログ

    図9-58の説明が続きます
    「図10-67 「Reply」ダイアログ」の説明

  13. invokeアクティビティをOutboundReqRepServiceサービスにドラッグ・アンド・ドロップします。「Invoke」ダイアログが表示されます。

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

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

  16. 同様に、出力変数を作成します。デフォルトを受け入れて「OK」をクリックします。図10-68に示すように、「Invoke」ダイアログが表示されます。

    図10-68 「Invoke」ダイアログ

    図9-58の説明が続きます
    「図10-68 「Invoke」ダイアログ」の説明

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

  18. transformアクティビティをダブルクリックします。「Transform」ダイアログが表示されます。

  19. 「+」アイコンをクリックし、ソース変数として「Receive_1_DequeueEnqueue_InputVariable」を選択します。また、図10-69に示すように、ターゲット変数としてInvoke_1_EnqueueDequeue_InputVariableを選択します。

    図10-69 「Transform」ダイアログ

    図9-58の説明が続きます
    「図10-69 「Transform」ダイアログ」の説明

  20. 「マッピングの作成」をクリックします。「Transformation_1.xsl」ページが表示されます。

  21. 「<sources>」パネルから、「tns:Root-Element」を「<target>」パネルの「fix:Root-Element」にドラッグ・アンド・ドロップします。「自動マップ・プリファレンス」ダイアログが表示されます。

  22. 「OK」をクリックします。図10-70に示すように、「Transformation.xsl」ページにマッピングが表示されます。

    図10-70 マッピングを示す「Transformation.xsl」ページ

    図9-58の説明が続きます
    「図10-70 マッピングを示す「Transformation.xsl」」の説明

  23. 「BPELSyncreqrep.bpel」タブをクリックします。

  24. assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

  25. 「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

  26. 図10-71に示すように、変数を選択して「OK」をクリックします。

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

    図9-58の説明が続きます
    「図10-71 「コピー操作の作成」ダイアログ」の説明

  27. 「Assign」ダイアログで「OK」をクリックします。図10-72に示すように、JDeveloperの「BPELSyncreqrep.bpel」ページが表示されます。

    図10-72 「BPELSyncreqrep.bpel」ページ

    図9-58の説明が続きます
    「図10-72 「BPELSyncreqrep.bpel」ページ」の説明

10.6.3.6 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイする方法の詳細は、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

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

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

  1. ユーザー名とパスワードを使用してhttp://servername:portnumber/emにログインします。「Oracle Enterprise Manager Fusion Middleware Control」ページが表示されます。

  2. 左ペインで、「SOA」「soa-infra (soa_server1)」の順にナビゲートします。デプロイされている全コンポジットのリストが表示されます。

  3. 「Sync-Req-RepComposite[1.0]」をクリックします。「Sync-Req-RepComposite[1.0]」ページが表示されます。

  4. data.txtファイルのコンテンツでMQメッセージを作成し、replyToQueueNametest_replyに設定します。このメッセージをtest_inキューに蓄積します。

  5. 少し待ってからFusion Middleware Controlコンソールをリフレッシュします。インスタンスがコンソールに表示されます。これは、発生した処理のためトリガーされたインスタンスです。

  6. 「インスタンス」タブをクリックします。

  7. このデプロイメントに関連付けられているインスタンスをクリックします。「フローのトレース」ページが表示されます。

  8. 「BPELSyncreqrep」コンポーネント・インスタンスをクリックします。「監査証跡」ページが表示されます。

  9. 「フロー」タブをクリックしてインスタンスをデバッグします。BPELプロセス・インスタンスのフローが表示されます。

  10. アクティビティをクリックして関連するペイロードの詳細を表示します。

10.6.4 非同期リクエスト-リプライ

この使用例では、非同期リクエスト-リプライのエンドツーエンドのシナリオについて説明します。この使用例では、最初にコンポジットによりインバウンド・キューからメッセージがデキューされます。次に、リクエスト・メッセージがエンキューされ、リプライ・メッセージがデキューされます。最後に、コンポジットによりリプライ・メッセージが他のキューにエンキューされます。この項には、次の項目が含まれます。

10.6.4.1 前提条件

第10.5項「Oracle MQ Seriesアダプタの構成」の指定に従ってOracle MQ Seriesアダプタを構成し、キューtest_in、test_outおよびtest_demoを作成する必要があります。

10.6.4.2 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにAsynchronousRequestReplyと入力して「次へ」をクリックします。「プロジェクトの名前付け」画面が表示されます。

  5. 「プロジェクト名」フィールドにAsync-Req-RepCompositeと入力し、「選択可能」リストから「SOA」を選択して右矢印ボタンをクリックします。

  6. 「次へ」をクリックします。「SOA設定の設定」画面が表示されます。

  7. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ダイアログが表示されます。

  8. 「名前」フィールドにBPELAsyncreqrepと入力し、「テンプレート」ボックスから「サービスを後で定義」を選択します。

  9. 「OK」をクリックします。図10-73に示すように、AsynchronousRequestReplyアプリケーションとAsync-Req-RepCompositeプロジェクトが設計領域に表示されます。

    図10-73 JDeveloper: composite.xml

    図10-73の説明が続きます
    「図10-73 JDeveloper: composite.xml」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにInboundServiceと入力して「次へ」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQからメッセージを取得」を選択して「次へ」をクリックします。「MQからメッセージを取得」ページが表示されます。

  7. 「キュー名」フィールドにtest_inと入力して「次へ」をクリックします。「メッセージ」ページが表示されます。

  8. 「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択し、「次へ」をクリックします。「終了」ページが表示されます。

  9. 「終了」をクリックします。インバウンド・アダプタ・サービスの構成が完了し、図10-74に示すように、「composite.xml」ページが表示されます。

    図10-74 JDeveloperページ: 「composite.xml」ページ

    図10-74の説明が続きます
    「図10-74 JDeveloperページ: 「composite.xml」ページ」の説明

10.6.4.4 非同期アウトバウンド・リクエスト-リプライ・アダプタ・サービス・アウトバウンドの作成

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにasyn-Req-Resと入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQにメッセージを送信し、リプライ/レポートを取得」を選択し、「操作名」ボックスで「非同期」を選択して「次へ」をクリックします。「MQにメッセージを送信し、リプライ/レポートを取得」ページが表示されます。

  7. 「メッセージ・タイプ」ボックスで「標準」を選択し、「キュー名」フィールドにtest_outと入力し、「レポートの取得」チェック・ボックスを選択して「次へ」をクリックします。「レポート」ページが表示されます。

  8. 図10-75に示すように、「着信時の確認」を選択して「次へ」をクリックします。「レスポンス」ページが表示されます。

    図10-75 「アダプタ構成ウィザード - レポート」ページ

    図10-75の説明が続きます
    「図10-75 「アダプタ構成ウィザード - レポート」ページ」の説明

  9. 「返信先キュー名」フィールドにtest_outと入力して「次へ」をクリックします。「詳細オプション」ページが表示されます。

  10. デフォルト値を受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  11. 「メッセージ・スキーマの取得」ボックスと「メッセージ・スキーマの送信」ボックスで、「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」をそれぞれ選択して「次へ」をクリックします。「終了」ページが表示されます。

  12. 「終了」をクリックします。async-Req-Resサービスの構成が完了し、図10-76に示すように、「composite.xml」ページが表示されます。

図10-76 JDeveloperページ: 「composite.xml」ページ

図10-76の説明が続きます
「図10-76 JDeveloperページ: 「composite.xml」ページ」の説明

10.6.4.5 もう1つのアウトバウンド・アダプタ・サービスの作成

次の手順を実行し、レスポンス(レポート)メッセージをエンキューするアダプタ・サービスを作成します。

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにOutboundServiceと入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQにメッセージを蓄積」を選択して「次へ」をクリックします。「MQにメッセージを蓄積」ページが表示されます。

  7. 「キュー名」フィールドにtest_demoと入力して「次へ」をクリックします。「詳細オプション」ページが表示されます。

  8. デフォルト値を受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  9. 「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択し、「次へ」をクリックします。「終了」ページが表示されます。

  10. 「終了」をクリックします。OutboundServiceサービスの構成が完了し、図10-77に示すように、「composite.xml」ページが表示されます。

    図10-77 JDeveloperページ: 「composite.xml」ページ

    図10-77の説明が続きます
    「図10-77 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

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

  2. 「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のasync-Req-Res内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

  3. 同様に、「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のOutboundService内のドロップ・ゾーンにドラッグします。

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

    図10-78 JDeveloper: composite.xml

    図10-78の説明が続きます
    「図10-78 JDeveloper: composite.xml」の説明

  4. 「ファイル」「すべて保存」を順番にクリックします。

  5. 「BPELAsyncreqrep」をダブルクリックします。「BPELAsyncreqrep.bpel」ページが表示されます。

  6. 「コンポーネント・パレット」から、receiveassigninvokereceiveassignおよびinvokeアクティビティを「コンポーネント」領域に順番にドラッグ・アンド・ドロップします。図10-79に示すように、JDeveloperの「BPELAsyncreqrep.bpel」ページが表示されます。

    図10-79 「BPELAsyncreqrep.bpel」ページ

    図10-79の説明が続きます
    「図10-79 「BPELAsyncreqrep.bpel」ページ」の説明

  7. 1つ目のreceiveアクティビティをInboundServiceアダプタ・サービスにドラッグ・アンド・ドロップします。「Receive」ダイアログが表示されます。

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

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

  10. 「インスタンスの作成」ボックスを選択して「OK」をクリックします。

  11. 1つ目のinvokeアクティビティをasync-Req-Resサービスにドラッグ・アンド・ドロップします。「Invoke」ダイアログが表示されます。

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

  13. デフォルトを受け入れて「OK」をクリックします。「Invoke」ダイアログが表示されます。

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

  15. 2つ目のreceiveアクティビティをasync-Req-Repサービスにドラッグ・アンド・ドロップします。「Receive」ダイアログが表示されます。

  16. 「変数の自動作成」アイコンをクリックして変数を作成します。


    注意:

    「インスタンスの作成」ボックスは選択しないでください。


  17. 「Receive」ダイアログで「OK」をクリックします。

  18. 2つ目のinvokeアクティビティをOutboundServiceにドラッグ・アンド・ドロップします。「Invoke」ダイアログが表示されます。

  19. 「入力変数の自動作成」アイコンをクリックして変数を作成します。

  20. 「Invoke」ダイアログで「OK」をクリックします。

  21. 1つ目のassignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

  22. 「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

  23. 図10-80に示すように、変数を選択して「OK」をクリックします。

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

    図10-80の説明が続きます
    「図10-80 「コピー操作の作成」ダイアログ」の説明

  24. 「Assign」ダイアログで「OK」をクリックします。

  25. 2つ目のassignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

  26. 「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

  27. 図10-81に示すように、変数を選択して「OK」をクリックします。

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

    図10-81の説明が続きます
    「図10-81 「コピー操作の作成」ダイアログ」の説明

  28. 「Assign」ダイアログで「OK」をクリックします。図10-82に示すように、JDeveloperの「BPELAsyncreqrep.bpel」ページが表示されます。

    図10-82 「BPELAsyncreqrep.bpel」ページ

    図10-82の説明が続きます
    「図10-82 「BPELAsyncreqrep.bpel」ページ」の説明

10.6.4.7 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイする方法の詳細は、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

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

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

  1. ユーザー名とパスワードを使用してhttp://servername:portnumber/emにログインします。「Oracle Enterprise Manager Fusion Middleware Control」ページが表示されます。

  2. 左ペインで、「SOA」「soa-infra (soa_server1)」の順にナビゲートします。デプロイされている全コンポジットのリストが表示されます。

  3. 「Async-Req-RepComposite[1.0]」をクリックします。「Async-Req-RepComposite[1.0]」ページが表示されます。

  4. address-csv.xsdに準拠するコンテンツを含み、ヘッダーとしてReply Queueも含んでいるメッセージを、test_inキューに蓄積します。

  5. 少し待ってからFusion Middleware Controlコンソールをリフレッシュします。インスタンスがコンソールに表示されます。これは、発生した処理のためトリガーされたインスタンスです。

  6. 「インスタンス」タブをクリックします。

  7. このデプロイメントに関連付けられているインスタンスをクリックします。「フローのトレース」ページが表示されます。

  8. 「BPELAsyncreqrep」コンポーネント・インスタンスをクリックします。「監査証跡」ページが表示されます。

  9. 「フロー」タブをクリックしてインスタンスをデバッグします。BPELプロセス・インスタンスのフローが表示されます。

  10. アクティビティをクリックして関連するペイロードの詳細を表示します。

10.6.5 アウトバウンド・デキュー

この使用例では、MQアダプタでメッセージを1度に1つデキューするエンドツーエンドの方法について説明します。この項には、次の項目が含まれます。

10.6.5.1 前提条件

アウトバウンド・デキューの使用例を実行するには、Adapters-101MQAdapterDequeueEnqueueサンプルの次のファイルが必要です。

  • De-queueEn-queue/De-queueEn-queueComposite/xsd/singleString.xsd

また、Adapters-101MQAdapterDequeueEnqueueサンプルに含まれているartifacts.zipファイルの次のファイルも必要です。

  • artifacts/input/data.txt

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

test_outという名前のキューも作成する必要があります。

10.6.5.2 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにOutboundDequeueと入力して「次へ」をクリックします。「プロジェクトの名前付け」画面が表示されます。

  5. 「プロジェクト名」フィールドにOutboundDequeueCompositeと入力し、「選択可能」リストから「SOA」を選択して右矢印ボタンをクリックします。

  6. 「次へ」をクリックします。「SOA設定の設定」画面が表示されます。

  7. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ダイアログが表示されます。

  8. 「名前」フィールドにBPELOutboundDequeueと入力し、「テンプレート」ボックスで「同期BPELプロセス」を選択します。

  9. 「入力」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  10. 「プロジェクトのスキーマ・ファイル」「singleString.xsd」および「singleString」を順番に選択し、「OK」をクリックします。

  11. 「出力」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  12. 「プロジェクトのスキーマ・ファイル」「singleString.xsd」および「singleString」を順番に選択し、「OK」をクリックします。

  13. 「OK」をクリックします。図10-83に示すように、OutboundDequeueアプリケーションとOutboundDequeueCompositeプロジェクトが設計領域に表示されます。

    図10-83 JDeveloper: composite.xml

    図10-83の説明が続きます
    「図10-83 JDeveloper: composite.xml」の説明

10.6.5.3 アウトバウンド・デキュー・アダプタ・サービスの作成

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにOutboundDequeueServiceと入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQからメッセージを取得」および「同期」を選択し、「次へ」をクリックします。「MQからメッセージを取得」ページが表示されます。

  7. 「キュー名」フィールドにtest_outと入力し、「待機間隔」フィールドに10と入力して「次へ」をクリックします。「メッセージ」ページが表示されます。

  8. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  9. 「プロジェクトのスキーマ・ファイル」「singleString.xsd」および「singleString」を順番に選択し、「OK」をクリックします。「メッセージ」ページの「URL」フィールドにsingleString.xsdファイルが表示されます。

  10. 「次へ」をクリックします。「終了」ページが表示されます。

  11. 「終了」をクリックします。インバウンド・アダプタ・サービスの構成が完了し、図10-84に示すように、「composite.xml」ページが表示されます。

    図10-84 JDeveloperページ: 「composite.xml」ページ

    図10-84の説明が続きます
    「図10-84 JDeveloperページ: 「composite.xml」ページ」の説明

  12. 「ファイル」「すべて保存」を順番にクリックします。

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

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

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

  2. 「BPELOutboundDequeue」をダブルクリックします。「BPELOutboundDequeue.bpel」ページが表示されます。

  3. 「コンポーネント・パレット」から、invokeおよびassignアクティビティを「コンポーネント」領域にあるreceiveInputアクティビティとreplyOutputアクティビティの間に順番にドラッグ・アンド・ドロップします。

    図10-85に示すように、「composite.xml」ページが表示されます。

    図10-85 JDeveloper: 「composite.xml」ページ

    図10-85の説明が続きます
    「図10-85 JDeveloper: composite.xml」の説明

    図10-86に示すように、JDeveloperの「BPELOutboundDequeue.bpel」ページが表示されます。

    図10-86 「BPELOutboundDequeue.bpel」ページ

    図10-86の説明が続きます
    「図10-86」の説明

  4. invokeアクティビティをOutboundDequeueServiceアダプタ参照にドラッグ・アンド・ドロップします。「Invoke」ダイアログが表示されます。

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

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

  7. 同じ手順を出力変数について繰り返し、「OK」をクリックします。

  8. assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

  9. 「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

  10. 図10-87に示すように、変数を選択して「OK」をクリックします。

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

    図10-87の説明が続きます
    「図10-87 「コピー操作の作成」ダイアログ」の説明

  11. 「Assign」ダイアログで「OK」をクリックします。

    図10-88に示すように、「BPELOutboundDequeue.bpel」ページが表示されます。

    図10-88 「BPELOutboundDequeue.bpel」ページ

    図10-88の説明が続きます
    「図10-88 「BPELOutboundDequeue.bpel」ページ」の説明

10.6.5.5 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイする方法の詳細は、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

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

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

  1. ユーザー名とパスワードを使用してhttp://servername:portnumber/emにログインします。

  2. 左ペインで、「SOA」「soa-infra (soa_server1)」の順にナビゲートします。デプロイされている全コンポジットのリストが表示されます。

  3. 「OutboundDequeueComposite[1.0]」をクリックします。「OutboundDequeueComposite[1.0]」ページが表示されます。

  4. 「テスト」ボタンをクリックします。「Webサービスのテスト」ページが表示されます。

  5. 「リクエスト」タブをクリックし、「引数を入力」ペインにスクロールします。

  6. 「入力」フィールドにTest Outbound Dequeueと入力し、「Webサービスのテスト」ボタンをクリックします。

  7. 少し待ってから「レスポンス」タブをクリックします。指定したsingleString xsd内のメッセージが「レスポンス」タブに表示されます。

  8. 「インスタンス」タブをクリックします。

  9. このデプロイメントに関連付けられているインスタンスをクリックします。「フローのトレース」ページが表示されます。

  10. 「BPELOutboundDequeue」コンポーネント・インスタンスをクリックします。図10-89に示すように、「監査証跡」ページが表示されます。

    図10-89 「監査証跡」ページ

    図10-89の説明が続きます
    「図10-89 「監査証跡」ページ」の説明

  11. 「フロー」タブをクリックしてインスタンスをデバッグします。BPELプロセス・インスタンスのフローが表示されます。

  12. アクティビティをクリックして関連するペイロードの詳細を表示します。

10.6.6 RFH2ヘッダーの使用

この使用例では、MQ Seriesキューに追加するメッセージのRFH2ヘッダー・プロパティを設定する方法について説明します。これはアウトバウンド参照にのみ適用可能です。メッセージのフォーマットがRFH2であることを確認し、また、ヘッダー・プロパティの固定部分を設定する必要があります。この項には、次の項目が含まれます。

10.6.6.1 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにアプリケーションの名前を入力して「次へ」をクリックします。「プロジェクトの名前付け」ページが表示されます。

  5. 「プロジェクト名」フィールドにプロジェクト名を入力し、「選択可能」リストから「SOA」を選択して右矢印ボタンをクリックします。

  6. 「次へ」をクリックします。「SOA設定の設定」ページが表示されます。

  7. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ページが表示されます。

  8. 「名前」フィールドにBPELプロセスの名前を入力し、「テンプレート」ボックスから「一方向BPELプロセス」を選択します。

  9. 「OK」をクリックします。図10-42に示すように、アプリケーションとプロジェクトが設計領域に表示されます。

    図10-90 JDeveloper: composite.xml

    図10-90の説明が続きます
    「図10-90 JDeveloper: composite.xml」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにサービス名を入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQからメッセージを取得」を選択して「次へ」をクリックします。「MQからメッセージを取得」ページが表示されます。

  7. 「キュー名」フィールドにキュー名を入力して「次へ」をクリックします。「メッセージ」ページが表示されます。

  8. 「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択し、「次へ」をクリックします。「終了」ページが表示されます。

  9. 「終了」をクリックします。インバウンド・アダプタ・サービスの構成が完了し、図10-91に示すように、「composite.xml」ページが表示されます。

    図10-91 JDeveloperページ: 「composite.xml」ページ

    図10-91の説明が続きます
    「図10-91 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにサービス名を入力して「OK」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQにメッセージを蓄積」を選択して「次へ」をクリックします。「MQにメッセージを蓄積」ページが表示されます。

  7. 「キュー名」フィールドにキュー名を入力して「次へ」をクリックします。「詳細オプション」ページが表示されます。

  8. デフォルトを受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  9. 「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択し、「次へ」をクリックします。「終了」ページが表示されます。


    注意:

    ネイティブ・フォーマット変換が必要な場合は、使用する必要があるサンプル・スキーマを指定することもできます。


  10. 「終了」をクリックします。アウトバウンド・アダプタ・サービスの構成が完了し、図10-92に示すように、「composite.xml」ページが表示されます。

    図10-92 JDeveloperページ: 「composite.xml」ページ

    図10-92の説明が続きます
    「図10-92 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

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

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

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

    図10-93 JDeveloper: composite.xml

    図10-93の説明が続きます
    「図10-93 JDeveloper: composite.xml」の説明

  3. 「ファイル」「すべて保存」を順番にクリックします。

  4. BPELプロセスをダブルクリックします。「BPELprocess」ページが表示されます。

  5. 「コンポーネント・パレット」から、assignおよびinvokeアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。

    図10-54に示すように、JDeveloperの「BPELprocess.bpel」ページが表示されます。

    図10-94 「BPELprocess.bpel」ページ

    図10-94の説明が続きます
    「図10-94 「BPELprocess.bpel」ページ」の説明

  6. RFH2のヘッダー部分を格納する一次変数を作成します。さらに、messageFormat変数、JMSFolder変数およびMCDFolder変数を作成する必要があります。

    1. (x)で表された「変数」アイコンをクリックします。「変数」ダイアログが表示されます。

    2. 「作成... (Alt + N)」アイコンをクリックします。「変数の作成」ダイアログが表示されます。

    3. 「名前」フィールドに変数名を入力します。

    4. 変数タイプとして「単純型」を選択します。

    5. 「単純型」フィールドの端にある「XMLスキーマ・タイプの参照」アイコンをクリックします。「タイプ・チューザ」ダイアログが表示されます。

    6. stringタイプを選択します。

    7. 「OK」をクリックします。図10-95に示すように、タイプが「単純型」の変数が「変数」ダイアログの「変数」リストに追加されます。

      図10-95 「変数」ダイアログ

      図10-95の説明が続きます
      「図10-95 「変数」ダイアログ」の説明

    8. 必要なすべての変数が作成されるまで、ステップaからgを繰り返します。

  7. 次の手順を実行して、ステップ6で作成した変数に値を割り当てます。

    1. assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

    2. 「コピー操作」タブをクリックします。「Assign」ダイアログが表示されます。

    3. 「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

    4. 図10-96に示すように、「コピー操作の作成」ダイアログで、「タイプ」から「式」を選択し、値を指定してコピー操作の作成先の「To」ペインで変数を選択します。

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

      図10-96の説明が続きます
      「図10-96 「コピー操作の作成」ダイアログ」の説明

      次に、コピー操作が定義されたBPELProcess_JMSFolder.bpelファイルのコード・スニペットを示します。

        <sequence name="main">
          <receive name="Receive_1" createInstance="yes"
                   variable="Receive_1_Dequeue_InputVariable" partnerLink="DQ"
                   portType="ns1:Dequeue_ptt" operation="Dequeue"/>
          <assign name="Assign_1">
            <copy>
              <from variable="Receive_1_Dequeue_InputVariable" part="opaque"
                    query="/ns3:opaqueElement"/>
              <to variable="Invoke_1_Enqueue_InputVariable" part="opaque"
                  query="/ns3:opaqueElement"/>
            </copy>
            <copy>
              <from expression="'RFH '"/>
              <to variable="StructId"/>
            </copy>
            <copy>
              <from expression="'2'"/>
              <to variable="Version"/>
            </copy>
            <copy>
              <from expression="'273'"/>
              <to variable="Encoding"/>
            </copy>
            <copy>
              <from expression="'-2'"/>
              <to variable="CodedCharSetId"/>
            </copy>
            <copy>
              <from expression="'MQSTR   '"/>
              <to variable="Format"/>
            </copy>
            <copy>
              <from expression="'0'"/>
              <to variable="Flags"/>
            </copy>
            <copy>
              <from expression="'819'"/>
              <to variable="NameValueCCSID"/>
            </copy>
            <copy>
              <from expression="'RF_HDR_2'"/>
              <to variable="messageFormat"/>
            </copy>
            <copy>
              <from expression="'&lt;jms>&lt;Dst>MYTOPIC&lt;/Dst>&lt;Exp>2000&lt;/Exp>&lt;Pri>4&lt;/Pri>&lt;Cid>22344&lt;/Cid>&lt;Rto>REPLY.QUEUE&lt;/Rto>&lt;Gid>3334&lt;/Gid>&lt;Seq>2&lt;/Seq>&lt;Dlv>1&lt;/Dlv>&lt;xxx>User Space&lt;/xxx>&lt;/jms>'"/>
              <to variable="JMSFolder"/>
            </copy>
            <copy>
              <from expression="'&lt;mcd>&lt;Msd>jms_object&lt;/Msd>&lt;/mcd>'"/>
              <to variable="MCDFolder"/>
            </copy>
          </assign>
      

      注意:

      前述のコード・スニペットで指定されたように、StructIdおよびVersionの値は固定されます。その他の変数の値は、要件に従って設定できます。


    5. すべての変数にコピー操作が作成されるまで、ステップbからdを繰り返します。

    6. 「コピー操作の作成」ダイアログで「OK」をクリックします。図10-97に示すように、「割当て」ダイアログが表示されます。

      図10-97 「割当て」ダイアログ

      図10-97の説明が続きます
      「図10-97 「割当て」ダイアログ」の説明

    7. 「OK」をクリックします。「BPELProcess.bpel」ページが表示されます。

  8. 次の手順に従ってヘッダー・プロパティを設定します。

    1. invokeアクティビティをダブルクリックします。「Invoke」ダイアログが表示されます。

    2. 「パートナ・リンク」フィールドの右にある「パートナ・リンクの参照」をクリックします。「パートナ・リンク・チューザ」ページが表示されます。

    3. アウトバウンド・サービスを選択して「OK」をクリックします。

    4. 「一般」タブで、「変数」フィールドの右にある「変数の自動作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。

    5. デフォルトの変数名を選択して「OK」をクリックします。「変数」フィールドにデフォルトの変数名が移入されます。

    6. 「プロパティ」タブをクリックします。

    7. 「プロパティ」列からプロパティを選択し、それに従って「値」を設定します。

      たとえば、「プロパティ」列からjca.mq.MQMD.Formatプロパティを選択し、「値」MessageFormatに設定します。図10-98に示すように、「タイプ」列がinputに設定されていることを確認してください。


      注意:

      ユーザー・フォルダを作成する場合は、まず値をString変数に割り当て、次にInvokeアクティビティのプロパティに移動し、このString値をプロパティjca.mq.RFH2.USRFolderにマッピングします。


      図10-98 「起動」ダイアログ

      図10-98の説明が続きます
      「図10-98 「起動」ダイアログ」の説明

    8. 「OK」をクリックします。「BPELProcess.bpel」ページが表示されます。

    9. 「プロパティ」タブをクリックします。「BPELProcess.bpel」ページが表示されます。

10.6.6.5 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイする方法の詳細は、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

10.6.7 バックアウト・キューの構成

この使用例では、Oracle MQ Seriesアダプタに対してバックアウト・キューを構成する方法について説明します。Oracle MQ Seriesアダプタはメッセージをデキューし、MQ Seriesキューからのトランスフォーメーション後に同じメッセージをエンキューします。このプロセスでは、invokeアクティビティ中またはレスポンスの送信時に失敗が発生する可能性があります。拒否されたメッセージを、デフォルトの拒否されたメッセージ・フォルダではなく、バックアウト・キューに送信するようにバックアウト・キューを構成する必要があります。この項には、次の項目が含まれます。

10.6.7.1 前提条件

バックアウト・キューの構成の使用例を実行するには、アダプタJNDIがXA用に構成されている必要があります。また、singleString.xsdファイルが必要です。このファイルは、次のコードを使用して作成できます。

<schema attributeFormDefault="unqualified"
      elementFormDefault="qualified"
      targetNamespace="http://xmlns.oracle.com/singleString"
      xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="singleString">
            <complexType>
                  <sequence>
                        <element name="input" type="string"/>
                  </sequence>
            </complexType>
      </element>
</schema>

10.6.7.2 SOAコンポジットの設計

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。使用例のアプリケーションとプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperで、「ファイル」をクリックして「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「一般」ノードを開いて「アプリケーション」カテゴリを選択します。

  3. 「項目」リストから「汎用アプリケーション」を選択し、「OK」をクリックします。汎用アプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーションの名前付け」画面で、「アプリケーション名」フィールドにMQ_BackoutQ_Retryと入力して「次へ」をクリックします。「プロジェクトの名前付け」画面が表示されます。

  5. 「プロジェクト名」フィールドにSOA_BackoutQ_Retryと入力し、「選択可能」リストからSOAを選択して右矢印ボタンをクリックします。

  6. 「次へ」をクリックします。「SOA設定の設定」画面が表示されます。

  7. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して「終了」をクリックします。「BPELプロセスの作成」ダイアログが表示されます。

  8. 「名前」フィールドにBPELProcess_BackoutQ_Retryと入力し、「テンプレート」ボックスから「サービスを後で定義」を選択します。

  9. 「OK」をクリックします。MQ_BackoutQ_RetryアプリケーションとSOA_BackoutQ_Retryプロジェクトが設計領域に表示されます。

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにInboundServiceと入力して「次へ」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQからメッセージを取得し、リプライ/レポートを送信」(同期)を選択して「次へ」をクリックします。「MQからメッセージを取得し、リプライ/レポートを送信」ページが表示されます。

  7. 「キュー名」フィールドにINBOUND_QUEUEと入力して「次へ」をクリックします。「レスポンス」ページが表示されます。

  8. デフォルトを受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  9. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  10. 「プロジェクトのスキーマ・ファイル」「singleString.xsd」および「singleString」を順番に選択します。

  11. 「OK」をクリックします。「メッセージ」ページの「URL」フィールドにsingleString.xsdファイルが表示されます。

  12. 「次へ」をクリックします。「終了」ページが表示されます。

  13. 「終了」をクリックします。インバウンド・アダプタ・サービスの構成が完了し、インバウンド・アダプタが追加された「composite.xml」ページが表示されます。

  14. 次の例に示すように、バックアウト・キュー・プロパティを対応するJCAファイル(ReqReply_mq.jca)に追加します。

    <property name="BackoutQueueName" value="BACKOUT.QUEUE"/>
    <property name="MaximumBackoutCount" value="5"/>    
    <property name="BackoutRetries" value="3"/>    
    

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

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

  1. 「コンポーネント・パレット」から、「MQアダプタ」を「外部参照」スイムレーンにドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにEQと入力して「次へ」をクリックします。「MQ Series接続」ページが表示されます。

  4. MQ Series接続用のデフォルトJNDI名を受け入れて「次へ」をクリックします。「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」を選択して「次へ」をクリックします。「操作タイプ」ページが表示されます。

  6. 「MQにメッセージを蓄積」を選択して「次へ」をクリックします。「MQにメッセージを蓄積」ページが表示されます。

  7. 「キュー名」フィールドにtest_outと入力して「次へ」をクリックします。「詳細オプション」ページが表示されます。

  8. デフォルトを受け入れて「次へ」をクリックします。「メッセージ」ページが表示されます。

  9. 「URL」フィールドの端にある「参照」をクリックします。「タイプ・チューザ」ダイアログが表示されます。

  10. 「プロジェクトのスキーマ・ファイル」「singleString.xsd」および「singleString」を順番に選択し、「OK」をクリックします。「メッセージ」ページの「URL」フィールドにsingleString.xsdファイルが表示されます。

  11. 「次へ」をクリックします。「終了」ページが表示されます。

  12. 「終了」をクリックします。アウトバウンド・アダプタ・サービスの構成が完了し、図10-99に示すように、「composite.xml」ページが表示されます。

    図10-99 JDeveloperページ: 「composite.xml」ページ

    図10-99の説明が続きます
    「図10-99 JDeveloperページ: 「composite.xml」ページ」の説明

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

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

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

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

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

    図10-100 JDeveloper: composite.xml

    図10-100の説明が続きます
    「図10-100 JDeveloper: composite.xml」の説明

  3. 「ファイル」「すべて保存」を順番にクリックします。

  4. BPELProcess_BackoutQ_Retryをダブルクリックします。「BPELProcess_backoutQ_Retry.bpel」ページが表示されます。

  5. 「コンポーネント・パレット」から、receiveassigninvokeおよびreplyアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。

  6. receiveアクティビティをReqReplyにドラッグ・アンド・ドロップします。「Receive」ダイアログが表示されます。

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

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

  9. 「インスタンスの作成」ボックスを選択して「OK」をクリックします。

  10. replyアクティビティをReqReplyにドラッグ・アンド・ドロップします。「Reply」ダイアログが表示されます。

  11. 「名前」フィールドにReplyOutputと入力します。

  12. 「変数」フィールドの端に表示される「変数の参照」アイコンをクリックします。「変数チューザ」ダイアログが表示されます。

  13. replyOutput_DequeueEnqueue_OutputVariableを選択し、「OK」をクリックします。この変数が「Reply」ダイアログに表示されます。

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

  15. invokeアクティビティをEQにドラッグ・アンド・ドロップします。「Invoke」ダイアログが表示されます。

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

  17. デフォルトを受け入れて「OK」をクリックします。「Invoke」ダイアログが表示されます。

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

  19. assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

  20. 「+」アイコンをクリックして「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

  21. 「コピー操作の作成」ダイアログで、「タイプから」としてreceiveInput_DequeueEnqueue_InputVariableを選択し、コピー操作の作成先の「To」ペインで変数を選択します。

    次に、コピー操作が定義されたBPELProcess_BackoutQ_Retry.bpelファイルのコード・スニペットを示します。

    <assign name="Assign_1">
          <copy>
            <from variable="receiveInput_DequeueEnqueue_InputVariable"
                  part="singleString" query="/ns3:singleString/ns3:input"/>
            <to variable="Invoke_1_Enqueue_InputVariable" part="body"
                query="/ns3:singleString/ns3:input"/>
          </copy>
          <copy>
            <from variable="receiveInput_DequeueEnqueue_InputVariable"
                  part="singleString" query="/ns3:singleString/ns3:input"/>
            <to variable="replyOutput_DequeueEnqueue_OutputVariable"
                part="singleString" query="/ns3:singleString/ns3:input"/>
          </copy>
        </assign>
    
  22. 「OK」をクリックします。図10-101に示す「BPELdequeueenqueue.bpel」ページが表示されます。

    図10-101 「BPELProcess_BackoutQ_Retry.bpel」ページ

    図10-101の説明が続きます
    「図10-101 「BPELProcess_BackoutQ_Retry.bpel」ページ」の説明

10.6.7.6 JDeveloperを使用したデプロイ

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

JDeveloperを使用してアプリケーション・プロファイルをデプロイする方法の詳細は、第2.7項「JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」を参照してください。

アプリケーション・サーバー接続も作成する必要があります。アプリケーション・サーバー接続を作成する方法の詳細は、第2.6項「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」を参照してください。

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

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

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

  2. インバウンド・メッセージが出力されるtest_outキューまたはリプライ・キューを無効に(蓄積を抑制)し、メッセージをINBOUND_QUEUEに蓄積します。

  3. 少し待ってからFusion Middleware Controlコンソールをリフレッシュします。処理のためトリガーされるインスタンスがコンソールに表示されます。


    注意:

    トリガーされるインスタンスの数は、BackoutRetries + 1と同じである必要があります。


  4. 「インスタンス」タブをクリックします。

  5. このデプロイメントに関連付けられているインスタンスをクリックします。「フローのトレース」ページが表示されます。

  6. BPELProcess_BackoutQ_Retryコンポーネント・インスタンスをクリックします。「監査証跡」ページが表示されます。

  7. 「フロー」タブをクリックしてインスタンスをデバッグします。BPELプロセス・インスタンスのフローが表示されます。

  8. アクティビティをクリックして関連するペイロードの詳細を表示します。