この章では、Oracle Application Serverテクノロジ・アダプタとOracle Adapter for Oracle Applicationsに関連する問題および新機能について説明します。内容は次のとおりです。
11.1項「インバウンドOracle AQアダプタで相関とデキュー条件の両方を指定するとAQORACLESQLEXCEPTIONが発生する」
11.2項「Oracle MQ SeriesアダプタではconnectionFactoryLocationプロパティに一意の値が必要」
11.4項「Oracle MQ SeriesアダプタではxATransactionプロパティをtrueに設定する必要がある」
11.5項「MQ Seriesアダプタのアウトバウンド同期リクエスト/返信シナリオではリクエストと返信に異なるキューを使用する必要がある」
11.6項「RFH2ヘッダーに対応するにはMQAdapterOutboundHeader.wsdlファイルを手動で編集する必要がある」
11.7項「リモート返信キューのメッセージにインバウンド同期リクエスト/返信シナリオのキュー・マネージャ名を含める必要がある」
AQアダプタ・ウィザードを使用してデキュー操作をモデル化する場合、アダプタ構成ウィザードによりデキュー条件と相関IDの両方を指定できますが、これは正しくありません。デキュー操作にはデキュー条件か相関IDのどちらか1つのみを指定する必要があり、両方を指定してはいけません。
デキュー条件と相関IDの両方を指定すると、次の例に示すように、デキュー操作がORA-25240エラーで失敗します。
oracle.AQ.AQOracleSQLException: ORA-25240: message ID and dequeue condition/correlation ID specified in dequeue options
MQ SeriesアダプタでJNDI接続をリクエストする場合は、connectionFactoryLocation
プロパティに一意の値を指定する必要があります。
Oracle MQ SeriesアダプタはXAモードか非XAモードのどちらか一方で動作します。XAモード用の構成を設定すると、アダプタは今後のデプロイはすべてXA関連のみであると予測します。XAモードで作業している場合に、JNDI接続設定でxATransaction
プロパティをfalseに設定すると、アダプタによりアウトバウンド操作で例外がスローされます。
XAトランザクションでは、次の例に示すように、アウトバウンドJNDIはoc4j.xmlファイルのxATransaction
プロパティをtrueに設定する必要があります。
<config-property name="xATransaction" value="true"/>
xATransaction
プロパティ値をfalseに設定すると、プロセスによりjava.lang.NullPointerException
例外がスローされます。
アウトバウンド同期リクエスト/返信シナリオでは、リクエストおよび返信パラメータであるQueueName
とReplyToQueueName
が必ず異なるようにします。リクエストと返信の両方の操作に同じキューを使用すると、処理がタイムアウトします。
10.1.3.5では、MQAdapterOutboundHeader.wsdl
ファイルでRFH2ヘッダーに対応するためのUIサポートがありません。
次の手順に従ってMQAdapterOutboundHeader.wsdl
ファイルを手動で編集する必要があります。
MQOutboundHeader
要素で、次の要素を追加します。
<element name="MQHeaderExtended" type="mq:MQHeaderExtended" minOccurs="0" />
次に、MQAdapterOutboundHeader.wsdl
ファイルに次のコードを追加します。
<complexType name="MQHeaderExtended"> <sequence> <element name="StrucId" type="mq:asd" minOccurs="1"/> <element name="Version" type="mq:asd" minOccurs="1"/> <element name="Encoding" type="mq:asd" minOccurs="1"/> <element name="CodedCharSetId" type="mq:asd" minOccurs="1"/> <element name="Format" type="mq:asd" minOccurs="1"/> <element name="Flags" type="mq:asd" minOccurs="1"/> <element name="NameValueCCSID" type="mq:asd" minOccurs="1"/> <element name="JMSFolder" type="mq:asd" minOccurs="0"/> <element name="USRFolder" type="mq:asd" minOccurs="0"/> </sequence> </complexType> <complexType name="asd"> <simpleContent> <extension base="string"> <attribute name="dataType" use="required" type="mq:PropTypeEnum"/> <attribute name="value" use="required" type="string"/> </extension> </simpleContent> </complexType>
メッセージをリモート・キュー定義であるreplyToQueueName
と一緒に挿入し、replyToQueueManager
を指定しない場合、キュー・マネージャはリモート・キュー定義から宛先キュー名と宛先キュー・マネージャ名を割り出して、replyToQueueName
とreplyToQueueManagerName
に適切に移入します。
たとえば、宛先キュー・マネージャがQM2、宛先キュー名がQB、Rはキュー・マネージャQM1上のこのキューのリモート定義とします。
メッセージMをM.replyToQueueName="R"
と一緒に挿入してキュー・マネージャ名を指定しない場合、MQSeriesは適切な値をM.replyToQueueName="B"
およびM.replyToQueueManagerName="QM2"
として内部的に解決します。ただし、M.replyToQueueManagerName="QM1"
とM.replyToQueueName="R"
を一緒に指定すると、この自動解決は阻止され、操作は予想どおりの動作になります。
これはキュー・マネージャによって解決される宛先キュー・マネージャと宛先キュー名にキュー・マネージャ接続からアクセスできない場合があるためで、その場合は理由コードMQ 2087 MQRC_UNKNOWN_REMOTE_Q_MGR
が発生します。
bpel\samples\tutorials\122.DBAdapter
に置かれたFile2StoredProcedureサンプルを実行するには、次の手順を実行する必要があります。
XSDファイルに次の句を追加します。
elementFormDefault="qualified"
「db:」を削除してインスタンスXMLを変更し、次のネームスペースを追加します。
<InputParameters xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/SCOTT/ADDEMPLOYEES/"> ... </InputParameters>
サンプルを新規XSDファイルと一緒に再デプロイし、更新されたインスタンスXMLと一緒に起動します。
oc4j-ra.xml
ファイルを修正した場合、変更を有効にするために必ずサーバーを再起動する必要があります。
この項では、次のアダプタに対するOracle Application Server 10gリリース10.1.3.5の新機能について説明します。
Oracle Application Server 10gリリース10.1.3.5には、Oracle Adapter for Oracle Applicationsの次の新機能が含まれています。
ヘッダー変数は、アプリケーションのコンテキスト情報を提供するために使用します。この情報は、SOAスイートでコンカレント・プログラムおよびPL/SQL APIを処理するために必要になります。ヘッダーを追加サポートするために、Oracle Adapter for Oracle Applicationsは、アプリケーション・コンテキストを設定するための既存のパラメータUsername
、Responsibility
およびOrg_ID
に加えて、次の3つの新規ヘッダー・パラメータを受け入れるようになりました。
RespApplication
: コンテキストの設定に使用する必要のある職責アプリケーション・キーです。
SecurityGroup
: セキュリティ・グループ・キーで、渡されないとデフォルトのStandardに設定されます。
NLSLanguage
: リクエスト用の言語コードです。NLSコンテキストは渡された言語コードに設定されます(有効であれば)。渡されないと、デフォルトの「US」に設定されます。
注意: 以前のリリースで使用していた既存のヘッダー・パラメータResponsibility は、職責名のほかに職責キーも入力として使用できるようになりました。ヘッダー・パラメータNLSLanguage が設定されていて、職責名が渡される場合、渡されるResponsibility の値は同じ言語であることが期待されます。ただし、職責キーおよびその他すべてのヘッダー・パラメータは言語に依存しません。 |
これらのヘッダー・パラメータすべてを一緒に使用して、アプリケーション・コンテキストを設定します。あるいは、UsernameとResponsibilityのみを渡すと、以前のリリースと同じように動作します。
値がnullまたは空の場合は、次に示すパラメータのデフォルト値に設定されます。
Username: SYSADMIN
Responsibility: System Administrator
SecurityGroup: Standard
NLSLanguage: US
ヘッダー変数を割り当てるための設計時のタスク
新規BPELプロジェクトを作成します。
パートナ・リンクを追加します。
Invokeアクティビティを構成します。
Invokeアクティビティの入力および出力変数の作成など、「一般」タブで基本情報を設定します。
図11-1に示すように、「アダプタ」タブでヘッダー変数を作成し、それをAppsContextHeader.wsdl
ファイルのHeader_msg message
タイプで構成します。
次の手順でAssignアクティビティをInvokeアクティビティの前に追加してヘッダー変数を割り当てます。
「割当て」ダイアログ・ボックスで「コピー操作」タブを選択し、「作成」ドロップダウン・リストから「コピー操作」を選択します。
Assignアクティビティにヘッダー変数値を入力するには、Fromグループでタイプとして「式」を選択し、'operations'
などのusername変数値を入力します。
Toグループで、「変数」→「プロセス」→「変数」→「Variable_1」→「ヘッダー」→「ns2:ProcedureHeaderType」に移動し、「ns2:Username」を選択します。図11-2に示すように、XPathフィールドに選択したエントリが表示されるはずです。
「OK」をクリックします。
同じ方法を使用してその他のヘッダー変数値を割り当てます。たとえば、図11-3に示すように、次のパラメータ値を入力します。
Responsibilityに'Order Management'
ORG_IDに'207'
RespApplicationに'ONT'
SecurityGroupに'Standard'
NLSLanguageに'US'
次の項では、MQ Seriesアダプタの新機能について説明します。
同期/リクエスト/レスポンス(インバウンド)シナリオでは、MQアダプタは、インバウンド・リクエスト・メッセージから返信メッセージに永続性と有効期限間隔を渡す必要があります。CopyPersistenceFromInbound
およびPropagateExpiryInterval
プロパティをtrueに設定して、2つのインバウンド・ヘッダーが返信メッセージ・ヘッダーにコピーされるようにする必要があります。
次の項では、FileおよびFTPアダプタの新機能について説明します。
FTPアダプタがタイムスタンプでファイルをソートできるように、LIST
コマンドのサポートが追加されました。
インバウンドWSDLでUseNlst
プロパティをfalse
に設定することにより(UseNlst="false"
)、リストにLIST
コマンドを使用するようにFTPアダプタを構成できます。このプロパティを設定すると、アダプタはNLST
の反対であるLIST
を使用します。
ファイルを特定の順序でソートするようにインバウンドOracle FileまたはFTPアダプタを構成できます。たとえば、Oracle FileおよびFTPアダプタのソート・パラメータを設定して、タイムスタンプの昇順または降順にファイルを処理することができます。
Oracle FileおよびFTPアダプタのソート・シナリオでは、次の前提条件を満たす必要があります。
同期操作を使用します。
FTPアダプタを使用している場合は、インバウンドWSDL
でUseNlst="false"
プロパティを設定します。
次のプロパティをインバウンドWSDL
に追加します。
ファイル名を変更されたタイムスタンプで昇順にソートするには、次を使用する必要があります。
Sorter="oracle.tip.adapter.file.sorter.TimestampSorterAscending
ファイル名を変更されたタイムスタンプで降順にソートするには、次を使用する必要があります。
Sorter="oracle.tip.adapter.file.sorter.TimestampSorterDescending
10.1.3.5インストールでは、$ORACLE_HOME/bpel/system/services/config/pc.properties
に、次のパラメータを設定する必要があります。
oracle.tip.adapter.file.numProcessorThreads=1
サーバーを再起動します。