この付録では、Oracle B2BでSOAインフラストラクチャおよびJMS内部キューを使用して大きなペイロードを処理する方法について説明します。
この付録には次のトピックがあります。
Oracle B2Bでは、SOAインフラストラクチャおよびJMS内部キューを通じて大きなペイロードを処理できます。
インバウンド設定
図A-1に、インバウンドの場合に設定するプロパティを示します。「管理」→「構成」に移動します。
大きなペイロードを処理するためにコンポジットをデプロイする場合は、この構成のみが必要となります。B2Bでペイロードをコンポジットに配信しない場合は、図A-2に示すように、「JMSキューをデフォルトとして使用」を「true」に設定します。「管理」→「構成」に移動します。
「JMSキューをデフォルトとして使用」を「true」に設定すると、ペイロードはB2B_IN_QUEUE
(JMSベースのキュー)に配信されます。
アウトバウンド設定
図A-3に、アウトバウンドの場合に設定するプロパティを示します。
サービス・エンジンによって大きなペイロードが送信されることをB2Bに通知することも必要となります。変更は次の2つの手順で行います。
Oracle B2Bに大きなペイロードを送信する場合は、BPELプロセスにb2b.largePayload
プロパティを設定する必要があります。大きなペイロードを処理しないコンポジット・サンプルの場合、変更はありません。
Oracle B2Bでこのフラグを処理するためのコード変更
<variables>
セクションでアウトバウンドBPELプロセスにVariable_largePayload変数を宣言します。
<variable name="Variable_largePayload" type="xsd:string"/>
「割当て」アクティビティで、変数に'true'
をコピーします。
<copy> <from expression="'true'"/> <to variable="Variable_largePayload"/> </copy>
「起動」アクティビティで、変数をb2b.largePayload
に割り当てます。
<bpelx:inputProperty name="b2b.largePayload" variable="Variable_largePayload"/>
注意: BPELでOracle B2Bに大きなペイロードを送信しない場合は、このプロパティを設定しないでください。 コードをチェックインした後、その確認のために大きなペイロードのサンプルを更新する必要があります。 BPELおよびメディエータで、 Oracle B2Bでは、大きなペイロードを対応するエンドポイントに送信した後、そのペイロードを大きなペイロード処理ディレクトリに保持します。 |
大きなペイロードのサポートについて
大きなペイロードのテストを行う場合は、「管理」→「構成」タブの「ペイロードの表示」を「false」に設定して、レポートにペイロードが表示されないようにします。
大きなペイロードを処理するときにエンキュー・スクリプトを使用する場合は、次の指定を追加します
eventName=LARGE_PAYLOAD=true
-Xmx2048m
を使用するように最大ヒープ・サイズを増やします。
SOAデータソースが自動的に拡張されるようにデータベースの表領域サイズを増やし、表領域ファイル・サイズの上限を上げます。
alter database datafile '/scratch/$user/auto_work/db230/oradata/db230/SH_soainfra.dbf' autoextend on next 10M maxsize 4096M
Oracle WebLogic管理サーバーのトランザクション・タイムアウトを次のように設定します。
Weblogicコンソール・サービス -> JTAタイムアウト秒=720秒
Weblogicコンソール・サービス -> JDBC -> DataSources -> SOADataSource - XAタイムアウトを120秒と180秒の間に増やす
Oracle B2Bを(SOAインフラストラクチャを使用せずに)単独で使用する場合は、Oracle Enterprise Manager Fusion Middleware Controlを使用して、b2b.jtaTimeout
にJTAタイムアウトを設定できます。詳細は、Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイドを参照してください。
アウトバウンドSOAコンポジットの場合は、図A-4に示すように、ファイル・アダプタ用に「ファイル・ストリーミングを使用します」オプションを常に選択します。
32ビット版Windowsコンピュータでは、ペイロード・サイズの制限は50MBです。これは、Windows固有の制限によって、1536Mを超えるヒープ・サイズを設定できないためです。Java VMによって、メモリー不足例外がスローされます。
次の推奨設定は、約2,500の取引パートナを含むデータセット(サイズが約253MBのエクスポートZIPファイル)があり、6GBのコンピュータを使用することを想定しています。このような設定を使用すると、アップグレード・アシスタントを使用した場合に、データ・アップロード時間を大幅に短縮できます。
Oracle WebLogic Server管理コンソールを使用して、次の値を増やします
JTAトランザクション・タイムアウトを30から350に増やします
最大メッセージ・サイズをデフォルト・サイズから200000000に増やします
パフォーマンス向上のために索引を追加します。Oracle Database 11g Enterprise Editionリリース11.1.0.7.0 - 製品版を「パーティショニング」、「OLAP」、「データ・マイニング」、「Real Application Testing」の各オプションとともに使用して、次の処理を実行します。
SQL> create index idx_mds_attr on rc1_mds.MDS_ATTRIBUTES("ATT_VALUE","ATT_LOCALNAME"); Index created. SQL> create index idx_mds_path on rc1_mds.MDS_PATHS("PATH_CONTENTID","PATH_PARTITION_ID"); Index created. SQL> commit;
次の更新後のメモリー設定を使用して管理対象サーバーを起動します。
DEFAULT_MEM_ARGS="-Xms1024m -Xmx2048m"
ORACLE_HOME
/bin/UA
デフォルト・メモリーをデフォルトの256から2048に変更します。デフォルトは次のとおりです
$JAVA_HOME/bin/java ${JAVAMODE} -Xmx256m -classpath ${CLASSPATH} -Dua.home=$base_dir -Dice.pilots.html4.ignoreNonGenericFonts=true -Dsun.lang.ClassLoader.allowArraySyntax=true -Doracle.installer.oui_loc=$OUI_HOME oracle.ias.upgrade.UpgradeDriver $ARGUMENTS
このデフォルトを次のように変更します
$JAVA_HOME/bin/java ${JAVAMODE} -Xmx2048m -classpath ${CLASSPATH} -Dua.home=$base_dir -Dice.pilots.html4.ignoreNonGenericFonts=true -Dsun.lang.ClassLoader.allowArraySyntax=true -Doracle.installer.oui_loc=$OUI_HOME oracle.ias.upgrade.UpgradeDriver $ARGUMENTS
「スタック・スレッド最大時間」の値を600から2000に変更します。