この章では、Oracleテクノロジ・アダプタに関連する問題について説明します。内容は次のとおりです。
この項では、一般的な問題および回避方法について説明します。内容は次のとおりです。
この項では、すべてのアダプタ(Oracle AQ Adapter、Oracle JMS Adapter、Oracle Files/FTP Adapter、Oracle MQ Series Adapter、Oracle Database AdapterおよびOracle Socket Adapter)に当てはまる問題と回避方法について説明します。
この項で説明する問題は次のとおりです。
ECID(Execution Context Identifier)伝播はOracleテクノロジ・アダプタでサポートされていません。ECIDはOracle Enterprise Managerでのメッセージ・フローの追跡に使用されます。このため、この機能はOracleテクノロジ・アダプタで使用できません。
再試行がバインディング・レベルで指定されるアダプタ参照で、コンポジットのアンデプロイ後も累積再試行期間(再試行数 x 再試行間隔)の間再試行が続けられます。
次の例に示すように再試行を構成したとします。
<property name="jca.retry.count" type="xs:integer" many="false" override="may">20</property> <property name="jca.retry.interval" type="xs:integer" many="false" override="may">10</property>
この構成に基づくと期間は200秒となり、再試行時コンポジットが30秒後にアンデプロイされた場合でも、累積再試行期間(再試行 x 再試行間隔)に達するまで再試行が続けられます。
アウトバウンド・アダプタがGLOBAL_RETRY
で例外をスローした場合、アウトバウンド・アダプタ・レベルで構成されている再試行が行われません。再試行はコール元にフォールバックします。コール元はBPELプロセスの場合もあります。Oracle BPELプロセスの次のトランザクション・セマンティクスでインバウンドからBPELプロセス(コール元BPELプロセス)へ再試行が行われることが認識されています。
シナリオ1:
<property name="bpel.config.transaction">requiresNew</property> <property name="bpel.config.oneWayDeliveryPolicy">sync</property>
シナリオ2:
<property name="bpel.config.transaction">required</property> <property name="bpel.config.oneWayDeliveryPolicy">sync</property>
アダプタがLOCAL_RETRY
をスローした場合、アウトバウンド・アダプタ・レベルで構成されている再試行が行われます。
インバウンド再試行が機能するには、Oracle BPELプロセスにデハイドレーション・ポイントがない必要があることに注意してください。
この項では、Oracle File AdapterとOracle FTP Adapterに関連する次の問題および回避方法について説明します。
内容は次のとおりです。
Oracle File Adapterは、インバウンド・ディレクトリからファイルを取得してファイルを処理し、処理したファイルを出力ディレクトリに送信します。ただし、この処理時にSOA管理対象サーバーでフェイルオーバーが起こると、Oracle File Adapterの非トランザクション型特性から、ファイルが失われることがあります。この結果、インバウンド・アダプタで読み取られたファイルの一部が出力ディレクトリに送信されない場合があります。Oracle File Adapterを高可用性向けに構成し、フェイルオーバー時にファイルが失われないようにする必要があります。
Oracle File AdapterおよびOracle FTP Adapterでバイト・オーダー・マーク(BOM)付きのUnicode XMLファイルを読み取る際、実行時にDOM解析例外がスローされます。Unicode XMLファイルにBOMが使用されていない場合、例外はスローされません。
余分なタグや不正データなどのエラーのXMLペイロードを使用するシナリオをデバッチする場合、拒否されたメッセージとともに出力ファイルが作成されます。
Oracle File AdapterおよびOracle FTP Adapterでインバウンドおよびアウトバウンド操作に論理ディレクトリが使用される場合、Oracle Enterprise ManagerコンソールからのJCAプロパティの更新が適用されません。
Oracle FTP Adapterの大きなペイロードに対するFTP over SSL(FTPS)でのデバッチ・シナリオでは、同期プロセスを使用する必要があります。同期プロセスが使用されない場合、FTPサーバーからエラー・コード421がスローされます。
Oracle FTP Adapterのチャンク読取り機能では、SSHトランスポートを使用したSFTP(Secure FTP)はサポートされていません。
出力ファイルに動的ファイル名が指定されている場合、Append
プロパティは編集しません。しかし、Oracle Enterprise Manager Fusion Middleware Controlコンソールでは、出力ファイルに動的ファイル名が指定されている場合でもAppend
プロパティを編集できます。出力ファイルに動的ファイル名を指定する場合、Append
プロパティを編集しないようにしてください。
動的ファイル名を使用する場合、Append
プロパティの値はfalse
である必要があります。デフォルトでは、Append
プロパティはfalse
で、動的ファイル名を使用する際、これは編集しません。
この項では、Oracle AQ Adapterに関連する次の問題および回避方法について説明します。
内容は次のとおりです。
21.1.3.1項「オブジェクト・タイプからフィールドを読み取るOracle AQ Adapterはサーバー・ロケール・エンコーディングに依存する」
21.1.3.2項「Oracle AQ AdapterはOracle E-Business Suiteアプリケーションでキューからメッセージをデキューしない」
アウトバウンドAQアダプタ、MediatorまたはBPELと、インバウンドAQアダプタを含むSOAプロジェクトで、ビジネス・ペイロード・オプションに「オブジェクト内のフィールド」を選択すると、各国語文字が化けます。この問題はサーバー・ロケール・エンコーディングに依存し、ネイティブ・ロケールでのみ起こります。ただし、サーバーがUTF-8エンコーディングで稼働している場合、この問題は起こりません。
E-Business Suiteアプリケーションでのキューからのデキューには、Oracle AQ AdapterではなくAdapter for Oracle Applicationsを使用することをお薦めします。
この項では、Oracle JMS Adapterに関連する次の問題および回避方法について説明します。
例外「weblogic.messaging.kernel.QuotaException: 割当て制限ブロック時間を超えました。割当て制限は使用できません。」が発生した場合、WLS JMSプロバイダで調整可能なフロー制御設定を使用し、生成および消費されるメッセージの数を制御します。
制御設定の調整の詳細は、次を参照してください。
次に、使用フロー制御設定の使用とペイロード・サイズが5Kのメッセージの様々なしきい値の例を示します。
Config JMSServer: Message Buffer Size:5000 Config JMSConnectionFactory: Flow Control: Flow Maximum: 30 Flow Minimum: 1 Flow Interval: 10 Flow Step: 10 check Flow Control Enabled Default Delivery: Send Timeout: 3000000 Config JMS Destinations: Bytes Threshold High: 50000 Bytes Threshold Low: 50 Messages Threshold High: 100 Messages Threshold Low: 1 Set Quota
ある環境から別の環境へプロジェクトを移行する際、Oracle JMS Adapterのウィザードで次のページの「接続先」および「JNDI名」フィールドに編集モードで移入されます。
「消費操作のパラメータ」ページ
「発行操作のパラメータ」ページ
「リクエスト操作パラメータ」ページ
「リプライ操作パラメータ」ページ
「リクエスト/リプライ操作パラメータ」ページ
ただし、「次へ」をクリックすると、アダプタ構成ウィザードでこれが有効な接続先かどうかが検証され、無効な場合はその旨の警告メッセージが表示されます。続行するか有効な接続先を入力するかを選択できます。
Oracle JMS Adapterをクラスタ内にデプロイされている分散トピックに使用する場合、トピックに実際に渡されたメッセージの数より多いメッセージがシナリオで処理されます。
トピックの各サブスクライバに、WLS JMSで処理されるメッセージのコピーが渡されます。したがって、処理されるメッセージの数は、分散トピックでアクティブなサブスクライバの数と同じです。これは、Oracle WebLogic Application Server 10.3のOracle WebLogic JMSの既知の動作です。
この項では、Oracle Database Adapterに関連する次の問題および回避方法について説明します。
SELECT操作を行うようアウトバウンドOracle Database Adapterを構成する際、アダプタ構成ウィザードの「詳細オプション」ページで「アクティブな作業ユニットの取得」を選択した場合、GetActiveUnitofWork
プロパティの値が.jca
ファイルに保存されません。
この問題の回避方法は、次の例に示すようにこのプロパティをOracle Database Adapterの.jca
ファイルに手動で追加することです。
<property name="GetActiveUnitOfWork" value="true"/>
composite.xmlでバインディング・フォルト再試行が指定されていてフォルト・ポリシーが定義されていない状況で、Oracle Database Adapterがリモート・フォルト(データベースの停止)でトランザクションを再試行するシナリオについて考えます。このようなシナリオでは、Oracle Database Adapterで行われるバインディング・フォルト再試行はOracle Enterprise Managerコンソールの監査証跡で取得されません。
この項では、Oracle MQ Series Adapterに関連する次の問題および回避方法について説明します。
21.1.6.1項「Oracle MQ Series AdapterはMediatorに対する非同期リクエスト/レスポンス・パターンをサポートしない」
21.1.6.2項「アウトバウンド・リソースがXAの場合、Oracle MQ Series Adapterでアウトバウンド再試行が行われない」
Oracle MQ Series Adapterでは、非同期リクエスト/レスポンス・パターンはサポートされません(Mediatorがサーバーの場合)。
アウトバウンド・リソースにXAを選択した場合、アウトバウンド・リソースがXAの場合のアウトバウンド再試行がOracle MQ Series Adapterでサポートされないため、例外がスローされ、再試行されません。反対に、アウトバウンド・リソースがXA以外の場合、再試行は正常に行われます。
複数の管理対象サーバーを使用する場合、チャネルを停止しようとすると、Oracle MQ Seriesがハングします。これは、WindowsとUNIXの両オペレーティング・システムで起こります。
標準JavaエンコーディングとそのマッピングがMQ Series Adapterに用意されていますが、必要なその他のJavaエンコーディングの追加がアダプタ構成ウィザードでサポートされません。
リストにない標準Javaエンコーディングのサポートを追加するには、次の手順を実行します。
MQSeriesAdapter.rar
ファイルからMQSeriesAdapter.jar
ファイルを抽出します。
MQSeriesAdapter.jarファイルからmq.properties
ファイルを抽出します。
mq.properties
ファイルにエントリを追加します。このファイルには、MQ SeriesエンコーディングとJavaエンコーディングとの間のマッピング用のエントリが2つあります。必要な新規エンコーディングごとに、mq.properties
に2つのエントリを作成する必要があります。MQ Seriesエンコーディングから対応するJavaエンコーディングへのエントリと、Javaエンコーディングから対応するMQ Seriesエンコーディングへのエントリを作成します。
この項では、Oracle Socket Adapterに関連する次の問題および回避方法について説明します。
Oracle Socket Adapterはクラスタ・ベースの環境でサポートされていません。インバウンドOracle Socket Adapterをクラスタ環境にデプロイしようとすると、管理対象サーバーの1つで、サーバーのポートがすでに使用されているというエラー・メッセージがスローされます。
この項では、ネイティブ・フォーマット・ビルダーに関連する次の問題および回避方法について説明します。
ネイティブ・フォーマット・ビルダー・ウィザードの「デリミタの指定」ページで「デリミタ」リストの「空白(任意の数のタブ、スペース)」
がサポートされていません。
この項では、Oracle Adapter for Oracle Applicationsに関連する次の一般的な問題および回避方法について説明します。
21.1.9.2項「既存のPL/SQL SOAコンポジットを異なるリリースのインスタンスに使用する際のラッパー・パッケージの再作成」
21.1.9.3項「別のインスタンスにデプロイする場合、XSDフォルダでSQLスクリプトを見つけ、コンカレント・プログラムSOAコンポジットのラッパー・パッケージを再作成する」
21.1.9.5項「Adapter for Oracle Applicationsの再試行インスタンスは一意でないECIDを持つ」
21.1.9.8項「11.5.9インスタンスに接続する場合、イベント・サブスクリプションにルール関数とアウト・エージェントの値を手動で追加」
Oracle E-Business Suiteから公開される特定のPL/SQL APIでは、入力としてレコード・タイプを受け取ります。そのようなAPIでは、正常に実行されるようレコード・タイプ内のパラメータにデフォルト値が移入されることが想定されています。
デフォルト値は、文字の場合はFND_API.G_MISS_CHAR
、日付の場合はFND_API.G_MISS_DATE
、数値の場合はFND_API.G_MISS_NUM
です。レコード・タイプ内のパラメータが、次の例に示すようにnil値として渡された場合、Adapter for Oracle Applicationsでデフォルトのこれらの値が設定されます。
<PRICE_LIST_REC> <ATTRIBUTE1 xsi:nil="true"/> <ATTRIBUTE2 xsi:nil="true"/> <ATTRIBUTE3 xsi:nil="true"/> ... </PRICE_LIST_REC>
これは、変換アクティビティを使用して、あるいはXML入力を直接渡して割当てアクティビティ内のレコード・タイプに割り当てることで実現できます。
Oracle E-Business Suiteリリース11iに対して作成されたPL/SQL APIのSOAコンポジットがあり、リリース12のインスタンスに対して使用する場合、またはその逆の場合、ターゲット・インスタンスで互換性をとるためにSOAコンポジットのラッパー・パッケージを再作成する必要があります。この方法では、ターゲット・インスタンスに対して生成されたラッパーSQLファイルでシグネチャが更新され、シグネチャが同じか変更されたかについてターゲット・インスタンスで混乱されないようにします。
Adapter for Oracle Applicationsでコンカレント・プログラムを選択してパートナ・リンクをユーザーが作成すると、コンカレント・リクエストを発行するラッパー・パッケージを作成するSQLスクリプトが、ルート・コンポジットフォルダの直下ではなくコンポジット・アーティファクト内のXSDフォルダに生成されます。このため、ユーザーがOracle E-Business Suiteインスタンスに対してコンポジットを作成し、別のOracle E-Business Suiteインスタンスにデプロイする場合、XSDフォルダでスクリプトを見つけ、ターゲット・インスタンスに対して実行する必要があります。
ビジネス・イベント・インバウンド再試行がこのリリースのAdapter for Oracle Applicationsで適切に機能するには、新しいjca再試行プロパティjca.retry.count
およびjca.retry.interval
のかわりに古い再試行プロパティ名retryMaxCount
およびretryInterval
を使用する必要があります。
Adapter for Oracle Applicationsのすべての再試行インスタンスは同じECIDを共有します。元のインスタンスのECIDは、対応する再試行インスタンスのECIDと一致しません。
Oracle JDeveloperで複数のアプリケーション・データベース接続が作成されている場合、アダプタ構成ウィザードでデータベース接続を選択して「次へ」ボタンをクリックしてから別のデータベース接続を選択するはずだったことに気付いたとき、「戻る」ボタンをクリックしてデータベース接続を新たに選択しなおすのではなく、ウィザードを取り消してプロセスを再起動します。「戻る」ボタンをクリックして別のデータベース接続を再選択することは、このリリースでは機能しません。
コンポジットでメッセージの処理に失敗するフォルトが発生した場合、拒否されたメッセージはこのリリースのAdapter for Oracle Applicationsで適切に処理されません。
Oracle E-Business Suiteリリース11.5.9に新規ビジネス・イベント・パートナ・リンクを作成すると、ルール関数とアウト・エージェントの値が空で関連付けられているイベント・サブスクリプションも作成されます。この結果、ビジネス・イベントの発生時サブスクリプションが実行されません。
回避方法は、サブスクリプションを手動で編集し、ルール関数としてWF_RULE.DEFAULT_RULE
を、アウト・エージェントとしてWF_BPEL_QAGENT<system_name>
を追加することです。
この時点で既知の構成の問題はありません。
この項では、ドキュメントの訂正箇所を示します。内容は次のとおりです。
「アダプタ・ライフサイクルの管理」のアウトバウンド相互作用に対する再試行可能な例外に関する項に次の情報が記載されていますが、これはアウトバウンド相互作用には当てはまりません。
リプライ・アクティビティ失敗の再試行は、指定したjca.retry.count値より1少ないことに注意してください。たとえば、jca.retry.countが5の場合、アダプタで6回試行されるはずです(1試行 + 5再試行)。しかし、4回のみ再試行され、Oracle Enterprise Managerコンソールにインスタンスが5つのみ表示されます。
「データベース用Oracle JCAアダプタ」のUndyingに関する項に、新しいプロパティUndyingがサポートされると記載されています。しかし、Undyingは現在常にtrueです。このため、この構成プロパティは削除されています。