ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1(11.1.1)
B56238-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

53 大規模ドキュメントの処理

この章では、Oracle SOA Suiteで大規模ドキュメントを処理する場合のベスト・プラクティスおよび制限について説明します。

項目は次のとおりです。

53.1 大規模ドキュメントの処理の概要

ここでは、Oracle SOA Suiteサービス・エンジンで大規模なXML文書のペイロードを処理する場合のベスト・プラクティスについて説明します。 大規模なペイロードの使用に関する制限についても説明します。

大規模なペイロードを開発および実行する前に、これらのベスト・プラクティスに従うことをお薦めします。

53.2 大規模ドキュメントを処理する場合のベスト・プラクティス

この項では、大規模ドキュメントを処理する次のシナリオについて説明し、各シナリオに対するベスト・プラクティスなアプローチを示します。

53.2.1 大規模ペイロード処理に対するOracle Enterprise Managerからの監査レベルの設定

大規模なペイロードを処理する際は、特定のコンポジットに対する監査レベルのロギングをオフにしてください。 Oracle Enterprise Manager Fusion Middleware Controlコンソールで、設定/コンポジットの監査レベルのオプションを「オフ」または「本番」に設定できます。 設定/コンポジットの監査レベルのオプションを「開発」に設定した場合は、大規模なペイロード全体がメモリー内文字列にシリアライズされ、メモリー不足のエラーが発生する可能性があります。

監査レベルの設定に関する詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。

53.2.2 BPEL/メディエータでのassignアクティビティの使用

BPELまたはメディエータで、大規模なペイロードを操作するためにassignアクティビティを使用する場合は、メッセージ全体を割り当てないでください。 かわりに、ペイロードの必要な部分のみを割り当ててください。

また、BPELでassignアクティビティを使用する場合は、可能なかぎりプロセス変数ではなくローカル変数を使用することをお薦めします。 ローカル変数は、BPELプロセスのスコープ内に制限されます。 これらの変数は、スコープを閉じた後はメモリーおよびデータベースから削除されます。 一方、グローバル変数のライフ・サイクルは、インスタンスのライフ・サイクルと関連付けられています。 これらの変数は、インスタンスが完了するまで、メモリー内またはディスク内にとどまります。 したがって、プロセス変数またはグローバル変数より、ローカル変数をお薦めします。

53.2.3 繰返し構造に対するXSLTトランスフォーメーションの使用

ペイロード全体と比較して繰返し構造の方がペイロードが小さい場合は、XSLTトランスフォーメーションの使用をお薦めします。これは、現在のXSLT実装ではDOM全体がメモリーにマテリアライズされるためです。 たとえば、PurchaseOrder.LineItem.Supplier(大規模ペイロードの一部分)となります。

また、assignアクティビティではシャドウ・コピーが実行されるため、assignアクティビティを使用して置換することもできます。 シャドウ・コピーではDOMはマテリアライズされませんが、ソース文書を指し示すシャドウ・ノードが作成されます。

また、大規模なペイロードの変換/トランスレーション実行時に、次に示す最適化されたトランスレーション機能を使用することもできます。

  • ora:doTranslateFromNative

  • ora:doTranslateToNative

  • ora:doStreamingTranslate

これらの関数の使用方法については、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

53.2.4 大規模ペイロードをストリーミングするためのアダプタ・サポートの使用

ファイル/FTPアダプタで公開されるストリーミング機能が、大規模なペイロードの処理に使用されます。 インバウンド処理とアウトバウンド処理の両方について大規模ペイロード処理をサポートしているのは、ファイル/FTPアダプタのみです。 他のアダプタは、両方について明示的にはサポートしていません。


注意:

ストリーミングをサポートしているのは、ファイル/FTPアダプタおよびWebサービス・バインディングのみです。 他のバインディングで大規模ドキュメントを処理する場合は、代替の方法を考慮する必要があります。

大規模なペイロードに対するストリーミング機能の使用方法の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』のOracleファイル・アダプタのスケーラブルなDOMに関する項を参照してください。

53.2.5 大規模ペイロード・シナリオに対する適切な設定の使用

setDomainEnv.shJAVA_OPTIONS-Dweblogic.resourcepool.max_test_wait_secs=30を追加して、サーバーを再起動してください。 この設定を行わないと、大規模ペイロード・シナリオは、デハイドレーション・データ・ソースに対してResourceDisabledExceptionで失敗します。

53.2.6 Oracle B2Bでの大規模ドキュメントの処理

Oracle B2Bで大規模ドキュメントを処理する場合は、MDSインスタンス・キャッシュ・サイズプロトコル・メッセージ・サイズスレッド数スタック・スレッド最大時間および表領域など、様々なパラメータを調整する必要があります。 次の各項では、Oracle B2Bで大規模ドキュメントを処理する場合に設定する必要があるパラメータについて説明します。

53.2.6.1 MDSインスタンス・キャッシュ・サイズ

MDSインスタンス・キャッシュ・サイズを設定するには、$DOMAIN_HOME/config/soa-infra/configuration/b2b-config.xmlファイルにプロパティと値を追加する必要があります。次に例を示します。

<property>
 <name>b2b.mdsCache</name>
 <value>200000</value>
 <comment>MDS Instance cache size </comment>
</property>

53.2.6.2 プロトコル・メッセージ・サイズ

Oracle B2Bで10MBを超えるメッセージを送受信する場合、またはインポート/エクスポート構成が10MBを超える場合は、Oracle WebLogic Server管理コンソールで次の設定を適切に変更する必要があります。

「環境」→「サーバー」→「soa_server」→「プロトコル」→「一般」→「最大メッセージ・サイズ」

この設定は、$DOMAIN_HOME/config/config.xmlファイルで追加または変更できます。サーバー名構成の次で追加または変更します。次に例を示します。

<name>soa_server1</name>
<max-message-size>150000000</max-message-size>

注意:

デフォルトで、max-message-sizeはこのconfig.xmlファイルで使用可能ではありません。

53.2.6.3 スレッド数

このパラメータは、Oracle B2Bのメッセージ処理機能の向上に役立ちます。$DOMAIN_HOME/config/soa-infra/configuration/b2b-config.xmlファイルで設定する必要があります。

<property>
  <name>b2b.inboundProcess.threadCount</name>
  <value>5</value>
  <comment></comment>
</property>
<property>
  <name>b2b.inboundProcess.sleepTime</name>
  <value>10</value>
  <comment></comment>
</property>
<property>
  <name>b2b.outboundProcess.threadCount</name>
  <value>5</value>
  <comment></comment>
</property>
<property>
  <name>b2b.outboundProcess.sleepTime</name>
  <value>10</value>
  <comment></comment>
</property>
<property>
  <name>b2b.defaultProcess.threadCount</name>
  <value>5</value>
  <comment></comment>
</property>
<property>
  <name>b2b.defaultProcess.sleepTime</name>
  <value>10</value>
  <comment></comment>
</property>

53.2.6.4 スタック・スレッド最大時間

StuckThread Max Time(スタック・スレッド最大時間)パラメータは、このサーバーがスレッドをスタック状態であると判断するまでに、スレッドが継続的に動作している必要のある秒数をチェックします。 Oracle WebLogic Server管理コンソールで次の設定を変更する必要があります。

「環境」→「サーバー」→「soa_server」→「構成」→「チューニング」→「スタック・スレッド最大時間」

53.2.6.5 表領域

150MBを超える構成をデータ・ファイルに格納する必要がある場合は、データ・ファイルを拡張または追加して、表領域のサイズを増やす必要があります。次に例を示します。

ALTER TABLESPACE sh_mds add DATAFILE 'sh_mds01.DBF' SIZE 100M autoextend on next
 10M maxsize unlimited;
ALTER TABLESPACE sh_ias_temp add TEMPFILE 'sh_ias_temp01.DBF' SIZE 100M autoextend
 on next 10M maxsize unlimited;

53.2.7 大規模ドキュメントに対するデフォルトのJTAタイムアウトの設定

デフォルトのJTAタイムアウト・パラメータを、現在の「30」から大規模ドキュメント処理に適した値に増やすことをお薦めします。

53.2.8 BPELプロセスでの多数のアクティビティの使用(flowNを使用しない場合)

多数のアクティビティ(例: 50000)があるBPELプロセスをデプロイするには、次の設定が必要です。

MEM_ARGS: -Xms512m -Xmx1024m -XX:PermSize = 128m -XX:MaxPermSize = 256mの設定

Number of Concurrent Threads = 20

Number of Loops = 5 Delay = 100 ms

この設定によって、flowNアクティビティを使用せずにwhileループのみを使用するBPELプロセスを、正常にデプロイおよび実行できるようになります。

53.2.9 BPELプロセスでの多数のアクティビティの使用(flowNを使用する場合)

多数のアクティビティ(例: 50000)を使用するBPELプロセスをデプロイするには、次の設定が必要です。

USER_MEM_ARGS: -Xms2048m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256mの設定

Number of Concurrent Threads = 10

Number of Loops = 5 Delay = 100 ms

bpel-config.xmlファイルに<statsLastN>-1</statsLastN>を設定します。

この設定によって、flowNアクティビティを使用するBPELプロセスを、正常にデプロイおよび実行できるようになります。

詳細は、第10章「BPELプロセスでのパラレル・フローの使用」を参照してください。

53.2.10 複数シーケンスを含むフローの使用

7000までの多数のアクティビティがあるBPELプロセスを、次の設定で正常にデプロイおよび実行できます。

USER_MEM_ARGS: -Xms2048m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=256mの設定


注意:

8000を超えるアクティビティがあるBPELプロセスをデプロイすると、BPELのコンパイルでエラーがスローされます。

53.2.11 単一シーケンスを含むフローの使用

7000までの多数のアクティビティがあるBPELプロセスを、次の設定で正常にデプロイおよび実行できます。

USER_MEM_ARGS: -Xms2048m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=512mの設定


注意:

10,000を超えるアクティビティがあるBPELプロセスをデプロイすると、BPELのコンパイルに失敗します。

53.2.12 シーケンスを含まないフローの使用

多数のアクティビティ(例: 5000まで)があるBPELプロセスを、正常にデプロイおよび実行できます。

BPELのコンパイルは、6000アクティビティの場合は失敗する可能性があります。

53.2.13 コンポジットの多数のメディエータ

単一のコンポジットに50を超えるメディエータを含めないことをお薦めします。 環境にあわせて、JTAトランザクション・タイムアウトを適切な高い値に増やす必要があります。

53.2.14 大規模ペイロードに対するXSLTトランスフォーメーションの使用(BPELおよびメディエータ用)

大規模なペイロードにXSLTトランスフォーメーションを適用しないことをお薦めします。XSLTでドキュメント全体を横断する必要がある場合は、メモリー不足のエラーが発生する可能性があるためです。

53.3 大規模ドキュメントの同時処理に関する制限

この項では、大規模ドキュメントの同時処理に関する制限について説明します。この項のトピックは、次のとおりです。

53.3.1 大規模ペイロードを処理するための不透明(Opaque)スキーマ

大規模なペイロードを処理するために不透明(Opaque)スキーマを使用する場合は、制限があります。 不透明(Opaque)トランスレータのデータ全体が、単一のBase64エンコード文字列に変換されます。 不透明(Opaque)スキーマは通常、比較的小さいデータに使用されます。 大規模なデータの場合は、不透明(Opaque)トランスレータのかわりにアタッチメント機能を使用してください。

これらの機能の使用方法については、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。

53.3.2 ストリーミングMTOMアタッチメント

サービス・インフラストラクチャを介して渡されるストリーミングMTOMアタッチメントに対する受信リクエストは正規化されます。このようなメッセージの処理は、サービス・インフラストラクチャ・レイヤー内では最適化されません。

53.3.3 Oracle B2Bへの大規模データ・セットのインポート

大規模なデータ・セットのインポートには、ブラウザは使用せずにコマンドライン・ユーティリティを使用することをお薦めします。 大規模なデータの構成には、次のユーティリティ・コマンドを使用してください。

  • purge: リポジトリ全体をパージする場合に使用します。

  • import: 指定したZIPファイルをインポートする場合に使用します。

  • deploy: 名前を指定してアグリーメントをデプロイする場合に使用します。 名前を指定しない場合は、すべてのアグリーメントがデプロイされます。

ただし、purgeimportdeployオプションは、Oracle B2B構成の転送またはデプロイには使用しないことをお薦めします。