../E10229-13.mobi />
This appendix describes how to use Oracle B2Bto handle large payloads by using the SOA Infrastructure and JMS internal queues.
The appendix contains the following topics:
Oracle B2B can handle large payloads through the SOA Infrastructure and JMS internal queues.
Figure A-1 shows the properties to set for inbound cases. Go to Administration > Configuration.
If a composite is deployed to handle the large payload, this is the only configuration needed. If B2B is not delivering the payload to a composite, set Use JMS Queue as default to true, as shown in Figure A-2. Go to Administration > Configuration.
With Use JMS Queue as default set to true, the payload is delivered to B2B_IN_QUEUE
, a JMS-based queue.
Figure A-3 shows the properties to set for the outbound case.
You must also notify B2B that a service engine is sending a large payload. The change involves two steps:
The b2b.largePayload
property must be set in the BPEL process when sending a large payload to Oracle B2B. For composite samples, which do not handle large payload, there is no change.
Code change in Oracle B2B to handle this flag
Declare the Variable_largePayload variable in an outbound BPEL process in the <variables>
section.
<variable name="Variable_largePayload" type="xsd:string"/>
In the Assign activity, copy 'true
' into the variable.
<copy> <from expression="'true'"/> <to variable="Variable_largePayload"/> </copy>
Assign the variable to b2b.largePayload
in the Invoke activity.
<bpelx:inputProperty name="b2b.largePayload" variable="Variable_largePayload"/>
Notes:
If BPEL is not sending a large payload to Oracle B2B, this property should not be set.
after the code is checked in, any Large Payload Sample must be updated to confirm to this.
In BPEL and Mediator, if b2b.largePayload
is set to true
, then largePayloadDir
must be present (set it in Oracle B2B). If b2b.largePayload
is not set, then this directory should not matter.
Oracle B2B retains the large payloads in the large payload processing directory, after sending the payload to corresponding endpoints.
If you are doing large payload testing, set Log Payload on the Administration > Configuration tab to false.
If you are doing large payload testing, set Show Payload on the Administration > Configuration tab to false to avoid listing the payload in reports.
If an enqueue script is used when working with large payloads, add
eventName=LARGE_PAYLOAD=true
Increase the maximum heap size to use -Xmx2048m
.
Increase the database tablespace size for soadatasource to have autoextend on and increase the tablespace file size maximum limit.
alter database datafile '/scratch/$user/auto_work/db230/oradata/db230/SH_soainfra.dbf' autoextend on next 10M maxsize 4096M
Set the transaction timeout in Oracle WebLogic Administration Server:
Weblogic Console Services -> JTA Timeout Seconds=720 seconds
Weblogic Console Services -> JDBC->DataSources->SOADataSource - increase XA timeout to 120-180 seconds
If Oracle B2B is used alone (without the SOA Infrastructure), the JTA timeout can be set in b2b.jtaTimeout
by using Oracle Enterprise Manager Fusion Middleware Control. See Oracle Fusion Middleware Administrator's Guide for Oracle SOA Suite and Oracle Business Process Management Suite for more information.
For an outbound SOA composite, always select the Use file streaming option for the File Adapter, as shown in Figure A-4.
Figure A-4 The File Adapter Use File Streaming Option
On a 32 bit Windows computer, the payload size limit is 50 MB. This is because the heap size cannot be set to more than 1536m due to Windows-specific limits. Java VM throws an out-of-memory exception.
The following suggested settings are based on a dataset with approximately 2,500 trading partners, an export ZIP file that is approximately 253 MB in size, and assumes a 6 GB computer. Using these settings can considerably reduce data upload time when using the Upgrade Assistant.
Use Oracle WebLogic Server Administration Console to increase the
JTA transaction timeout from 30 to 350
Maximum message size from the default size to 200000000
Add indices for better performance. Using Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production, with the Partitioning, OLAP, Data Mining and Real Application Testing options, do the following:
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;
Start the managed server with the following updated memory setting:
DEFAULT_MEM_ARGS="-Xms1024m -Xmx2048m"
Change ORACLE_HOME
/bin/UA
default memory from the default 256 to 2048. The default is
$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
Change the default to
$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
Change the value of Stuck Thread Max Time from 600 to 2000.