この章では、Oracle Application Server Adapterに関する問題について説明します。内容は次のとおりです。
第6.1項「Oracle Application Server Adapter for Files/FTPに関する問題と対処方法」
第6.2項「Oracle Application Server Adapter for Java Message Serviceに関する問題と対処方法」
第6.3項「Oracle Application Server Adapter for Advanced Queuingに関する問題と対処方法」
第6.4項「Oracle Application Server Adapter for Databaseに関する問題と対処方法」
第6.5項「Oracle Application Server Adapter for MQSeriesに関する問題と対処方法」
第6.6項「Oracle Application Server Adapter for Oracle Applicationsに関する問題と対処方法」
この項では、Oracle Application Server Adapter for Files(ファイル・アダプタ)およびOracle Application Server Adapter for FTP(FTPアダプタ)に関する次の問題とその対処方法について説明します。
空のBPELプロジェクト・テンプレートを使用して、ファイル・アダプタで相関セットを使用した場合、パートナ・リンクのwsdlファイルにプロパティの別名が作成されます。ただし、アダプタのパートナ・リンクを編集すると、プロパティの別名がwsdlファイルから削除されます。これにより、BPELプロジェクトのコンパイルで問題が発生する可能性があります。
この問題に対処するには、「ソース」ビューを使用して、パートナ・リンクのwsdlファイルを手動で編集する必要があります。
FTPアダプタにMaverickを設定するには、次の手順を実行します。
次のURLから、ライセンス許可を受けたmaverick-all.jar
をダウンロードします。
http://www.3sp.com/requestEvaluation.do?productCode=MAVERIC
FTPアダプタがインストールされているディレクトリにmaverick-all.jar
をコピーします。
Oracle Application Server中間層にインストールされたOracle Enterprise Service BusまたはOracle BPEL Process Managerに対し、ORACLE_HOME
¥j2ee¥homemid¥connectors¥FtpAdapter¥FtpAdapter
ディレクトリにmaverick-all.jar
をコピーします。
スタンドアロン・インストールの場合は、ORACLE_HOME
¥j2ee\home¥connectors¥FtpAdapter¥FtpAdapter
ディレクトリにmaverick-all.jar
をコピーする必要があります。
ライセンス・ファイル名をSshImplLicense.lic
に変更し、maverick-all.jar
ファイルのコピー先のディレクトリにこのファイルをコピーします。
コマンド・プロンプトで、FTPアダプタ・ディレクトリに移動します。
Oracle Application Server中間層にインストールされたOracle Enterprise Service BusまたはOracle BPEL Process Managerについては、次のように入力します。
ORACLE _HOME\j2ee\homemid\connectors\FtpAdapter\FtpAdapter
スタンドアロン・インストールについては、次のように入力します。
ORACLE_HOME\j2ee\home\connectors\FtpAdapter\FtpAdapter
次のコマンドを実行します。
jar uvf ftpAdapter.jar SshImplLicense.lic
サーバーを再起動します。
この項では、次の問題とその対処方法について説明します。
インバウンドおよびアウトバウンドのAQJMSアダプタには、それぞれ個別のリソース・プロバイダを使用する必要があります。
「cacheConnections」
という新規のパートナ・リンク・プロパティ(BPEL)またはエンドポイント・プロパティ(ESB)をfalse
に設定します。この指定がなされていない場合、デフォルト値はtrue
になります(10.1.2および10.1.3の両方でデフォルトです)。
同一のグローバル・トランザクションに関与しているインバウンドおよびアウトバウンドのJMS宛先(キューまたはトピック)には、それぞれ個別のOJMSリソース・プロバイダ(J2EE_HOME/config/application.xml
に定義)を使用してください。
JMSアダプタが、WSDLからの接続情報を使用して非管理モードで実行できません。コネクション・ファクトリの欠落が報告されます。
非管理モードであっても、アダプタによっては前提条件があります。非管理ということはサーバー構成が不要ということではありません。たとえば、JMSアダプタでは、リソース・プロバイダがapplication.xml
と、場合によってはdata-sources.xml
(そのリソース・プロバイダがデータソースを参照している場合)にも構成されていることが必要です。こうした前提条件があらかじめ存在していれば、ESBに対しても非管理モードでの実行が可能です。同じことはBPELにも当てはまります。これはOEMS JMSプロバイダにのみ適用されることに注意してください。
システムに重い負荷がかかった場合、つまりAQ JMSアダプタに対するインバウンドおよびアウトバウンドのロードが多量である場合に、デキューがAQjmsException
により失敗します。
この問題に対応するには、次の対処方法を使用します。
個別の物理接続プールを2つ作成します(つまり、2つの(AQ)JMSリソース・プロバイダを使用します)。各JMS
WSDL
(エンキューとデキュー)が別々のJCA
JNDI
コネクション・ファクトリを指し、それらのコネクション・ファクトリが2つの別々のJMSコネクション・ファクトリを指すようにします。JMSコネクション・ファクトリはそれぞれ、2つあるリソース・プロバイダのうちの1つを使用します。次に例を示します。
エンキューWSDL
<jca:address location="eis/aqjms1" />
デキューWSDL
<jca:address location="eis/aqjms2" />
JmsAdapter/oc4j-ra.xml
<connector-factory location="eis/aqjms1" ... <config-property name="connectionFactoryLocation" value="java:comp/resource/aqjms1/QueueConnectionFactories/qcf"/> ... <connector-factory location="eis/aqjms2" ... <config-property name="connectionFactoryLocation" value="java:comp/resource/aqjms2/QueueConnectionFactories/qcf"/> ...
j2ee/home/config/application.xml
<resource-provider class="oracle.jms.OjmsContext" name="aqjms1"> <description>OJMS Context using thin JDBC</description> <property name="url"value="jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL" /> <resource-provider class="oracle.jms.OjmsContext" name="aqjms2"> <description>OJMS Context using thin JDBC</description> <property name="url" value="jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL" />
注意: 回帰ストレス下で正常に動作した場合でも、ログには AQJMSException が表示されます。この対処方法を使用することで、この例外を回避できます。 |
OJMS(AQベースJMS)でトピックを使用した場合に、AQ JMSトピックがハングし、トピックにメッセージがあってもデキューが実行されません。
JMSアダプタ・サブスクライバ(インバウンド)WSDLは、JCAコネクション・ファクトリを使用し(例: eis/OJms/myConnectionFactory1
)、このJCAコネクション・ファクトリはOJMSリソース・プロバイダ(例: resprov1
)を使用し、このOJMSリソース・プロバイダはURL(例: jdbc:oracle:thin:@host:1521:orcl
)に基づいている必要があります。
次のリストに、前述の説明にある対処方法を例示します。
MyJmsSubsriber.wsdl
...
<service name="JmsSubscribe">
<port name="jmsSubscribe_pt" binding="tns:jmsSubscribe_binding">
<jca:address location="eis/OJms/myConnectionFactory1"/>
...
J2EE_HOME/application-deployments/default/JmsAdapter/oc4j-ra.xml
<connector-factory location="eis/OJms/myConnectionFactory1" connector-name="Jms Adapter"> <config-property name="connectionFactoryLocation" value="java:comp/resource/resprov1/QueueConnectionFactories/myQCF"/>
J2EE_HOME/config/application.xml
<orion-application ... ... <resource-provider class="oracle.jms.OjmsContext" name="resprov1"> <property name="url" value="jdbc:oracle:thin:@host:1521:orcl" /> <property name="username" value="scott" /> <property name="password" value="tiger" /> </resource-provider>
Oracle BPEL Process Manager内では、JMSアダプタのメッセージ相関に次のタイプの相関スキーマを使用できます。
これは、BPELプロセス内でJMSアダプタのメッセージ相関に使用できる選択肢の1つです。すなわち、BPEL invokeの後にBPEL receiveが続く場合のネイティブ・アダプタ相関です。
注意: ネイティブ・アダプタ相関は、AQ、JMSおよびMQ Seriesアダプタにのみ適用できます。 |
JMSなどのメッセージ・アダプタではネイティブ相関をサポートしており、リクエスト/レスポンスのシナリオを模倣して、アウトバウンド(BPEL invoke)メッセージとインバウンド(BPEL receive)メッセージの間の自動相関を実行します。受信メッセージの「相関ID」は、送信JMSメッセージの「メッセージID」に設定する必要があります。これは送信先でリプライを送信しているJMSアプリケーションに実装する必要があります。基礎となるアダプタ・フレームワーク(AF)にはハッシュマップ表が格納されています。ハッシュマップ表のエントリは、送信JMSメッセージの「メッセージID」をネイティブBPEL相関IDの「メッセージID」にマップしています。ただし、アダプタのネイティブ相関は、invokeの後に同じPartnerLink
アクティビティを指すreceiveが続く特殊な場合にのみ使用できます。その他のすべてのケースではBPEL相関セットを使用する必要があります。
次の相関セットを使用できます。
JMSおよびAQヘッダーに基づく相関セット(JMSおよびAQアダプタにのみ使用可能)
ペイロードに基づく相関セット(すべてのアダプタに使用可能)
相関セットは、メッセージ本体の内容に基づく非同期メッセージの相関を提供するBPELメカニズムです。相互作用が単純なinvoke-receiveアクティビティではない場合、相関セットを定義する必要があります。
この項では、次の問題とその対処方法について説明します。
100Kを超える大量のメッセージがAQキューに存在する場合、AQアダプタでのデキューは非常に遅くなることがあります。この問題は、10.x.xバージョンのデータベースのパフォーマンスによるものです。ただし、以前のバージョンのデータベースでは正常に動作します。
この問題が発生した場合、次のコマンドのいずれか1つを実行して、キューまたはトピック表の統計を生成します。
dbms_stats.gather_table_stats('JMSUSER', 'QTAB')
または
dbms_stats.gather_schema_stats('JMSUSER')
QTAB
はキューまたはトピック表、JMSUSER
はユーザーまたはスキーマです。大量の行を更新、挿入または削除した場合、そのたびに統計をリフレッシュするようにしてください。
この項では、次の問題とその対処方法について説明します。
リリース10.1.2.0.2の122.DBAdapter/InsertWithCatch
の移行後(JDeveloper 10.1.3.1で開いている場合)、プロジェクトを開いてDBアダプタのパートナ・リンクをダブルクリックすると、UI接続が存在しないというメッセージが表示されます。UI接続の作成後、「次へ」ボタンをクリックすると、空白ページが表示されます。
ここでの問題は、使用不可のはずの「次へ」ボタンが使用不可になっていないということです。対処方法は、接続が存在し選択されているのを確認し、「次へ」ボタンはクリックしないようにします。
失敗したDBアダプタ・インスタンスがBPELコンソールに表示されないのは、BPEL監査がJTAトランザクションに連結されているためです。つまり、監査はJTAトランザクションがコミットされた場合にのみ実行されます。
XA/JTA DBアダプタの起動が失敗してJTAトランザクションがコミットされない(コミットされるべきではない)場合は、失敗したインスタンスは表示されません。この問題は、JTAトランザクションがrollback only
とマークされている場合のサーバー・タイムアウトによっても発生します。ただし、10.1.3.1ではDBアダプタは当初からJTA用に構成されており、この問題は常に明確にわかるようになっています。
成功または失敗のレポートはJTAと連動する必要がありますが、トランザクションの失敗のレポートとロールバックは同時には行えません。インスタンスが正常に動作した場合はJTAを介して監査が必要ですが、正常に動作しなかった場合の監査は論理的に不可能です(コミットされることのないトランザクションの一部として記述することになるため)。
この項では、次の問題とその対処方法について説明します。
Oracle Application Server Adapter for MQSeriesを使用する前に、パッチ5594751を適用する必要があります。このパッチは、次のURLで入手できます。
https://www.metalink.oracle.com/
この項では、次の問題とその対処方法について説明します。
問題: Oracle Application Server Adapter for Oracle Applicationsを構成してビジネス・イベントのアウトバウンド・メッセージを作成する場合、ユーザーは、Oracle JDeveloperのアダプタ構成ウィザードを使用して、スキーマ・ファイルの場所を指定し、イベント・ペイロード用のメッセージを定義するスキーマ要素を選択する必要があります。ただし、イベント・ペイロードのデータ型またはスキーマ詳細が不明な場合、ユーザーは、選択したビジネス・イベントに対応して生成される正しいWDSLファイルを取得できない場合があります。
解決策: この問題を解決するために、Oracle Application Server Adapter for Oracle Applicationsでは更新済のスキーマ選択用ページを提供しています。このページで、ウィザードにより、次のオプションのいずれかによりビジネス・イベントのペイロード・スキーマを選択できます。
スキーマなし
任意のスキーマ
スキーマの指定
「スキーマなし」または「任意のスキーマ」オプションを選択した場合、ビジネス・イベント・サービスに対してさらにスキーマ情報を指定する必要はありません。指定したビジネス・イベント・サービスに対応する関連のWSDLファイルが生成されます。「スキーマの指定」オプションを選択した場合、スキーマ・ファイルの場所を指定して、アウトバウンド・ビジネス・イベントのペイロードを定義するスキーマ要素を選択する必要があります。
詳細は、『Oracle Application Server Adapter for Oracle Applicationsユーザーズ・ガイド』(B28351-03)を参照してください。
この項では、ドキュメントの記載内容の誤りについて説明します。内容は次のとおりです。
『Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド』の第6.4.2項「oc4j-ra.xmlファイルの変更」には、hostOSType
およびIndextype
パラメータの誤った値が記載されています。
hostOSType
の値はz/os
またはZ/OS
に指定し、MQSeriesキューのIndextypeはMQIT_GROUP_ID
に設定する必要があります。
『Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド』の第6.3.8項「メッセージ・セグメンテーション」には、誤ったプロパティ名が記載されています。この項のプロパティ名はSegmentIfReqd
となる必要があります。次に例を示します。
SegmentIfReqd="true"
『Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド』の第3.2.1.3項「パートナ・リンクの追加」には、データソースの使用に関する情報が欠落しています。AQアダプタ・サービスの定義時にサーバー接続を作成する場合は、oc4j-ra.xmlでコネクタ・ファクトリのJNDIロケーションが正しく構成されていなくても、データソースを使用できます。アダプタ・サービスwsdlから、次のコード部分を想定します。
<jca:address location="eis/AQ/aqSample" UIConnectionName="aqSample" />
アダプタ・サービスが上の例のように構成されており、oc4j-ra.xmlにeis/AQ/aqSampleのエントリがない場合は、データソースによって指定されたデータソース値が使用されます。また、data-sources.xmlファイルでもデータソースを定義する必要があります。
『Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド』の第3.1.1.2項「デキュー機能とエンキュー機能」には、デキュー条件の意味に関する情報が欠落しています。
デキュー条件は、AQアダプタによって使用されるアドバンスト・キューイング製品の機能です。デキュー条件は、Dequeue AQ APIによって内部で使用されるAQDequeueOption
オブジェクトの一部として指定されます。デキュー条件が指定され、指定された条件を満たすメッセージがない場合は、デキューが実行されません。
デキュー条件の要素は、SQL問合せのWHERE句と同様の構文を使用するブール式です。このブール式には、メッセージ・プロパティ、ユーザー・オブジェクトのペイロード・データ・プロパティおよびPL/SQLまたはSQL関数を含めることができます。メッセージ・プロパティには、priority
、corrid
およびキュー表にあるその他の列が含まれます。
『Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド』の第3.1.1項「AQアダプタの機能」には、AQアダプタでXMLタイプがサポートされないという誤った情報が記載されています。リリース10.1.3以降では、AQアダプタでXMLタイプがサポートされます。