Tuesday, May 27, 2008

JVM Tuning for improving BPEL Performance

All application servers will be having a JVM in which they will be executing the processes. When it comes to performance tuning you need to start from the base that is the JVM. For basic JVM tuning, I am listing some important parameters that you need to set which will help your JVM to perform at its best.

  • Max. heap size: Set to maximum addressable OS memory size

For 32 bit Linux the maximum heap size you can set is 4G and for a 32 bit windows the value is 2G

E.g. –Xmx 2048m

  • Min. heap size: Set to the same as max heap size

E.g. –Xms 2048m

  • Eden space: Set to 60% of max heap

Eden space dictates JVM garbage collection behaviors

E.g.: -Xmn1228m

For setting these values open the file opmn.xml. In Developer edition & Mid-tier installation: location of the file is $IAS_HOME/opmn/conf/opmn.xml

Add java arguments in start parameters of the server.

For eg

java … -Xms2048m -Xmx2048m -Xmn1228m -XX:+AggressiveHeap …

Thursday, May 22, 2008

BPEL & ESB server settings

In case of BPEL the domain level settings are located in the Oracle_Home\bpel\domains\domain_name\config\domain.xml file. For configuring the BPEL server few options are only listed in the BPEL Console. There are many other properties also which you can set by editing the domain.xml.Once you edit the domain.xml , the new settings will take effect only after you restart the Oracle BPEL Server .Given below are some of the important domain level settings

optCacheOn - This property sets the in-memory cache for in-flight instances.

instCachePolicy - This property sets the eviction policy to use when removing in-flight instances from the cache.

instCacheHighWatermark - This property sets the maximum number of in-flight instances that can be placed in the cache before pruning occurs

instCacheLowWatermark - This property sets the number of in-flight instances to which the cache is pruned when pruning occurs.

dspMaxThreads - This property sets the maximum number of active dispatcher threads that process messages during peak load times

deliveryPersistPolicy - This property enables and disables database persistence of messages entering Oracle BPEL Server

auditLevel - This property sets the audit trail logging level. This process is applicable to both durable and transient processes.

auditDetailThreshold - This property sets the maximum size (in kilobytes) of an audit trail details string before it is stored separately from the audit trail.

workerQueueConnectionPoolMinSize - This property sets the worker queue connection pool minimum size. This value must match the number of worker threads

invokerQueueConnectionPoolMinSize - This property sets the invoker queue connection pool minimum size. This value must match the number of invoker threads

bpelcClasspath- This property sets the BPEL process compiler classpath.(very useful in WSIF)

For BPEL related errors domain.log @ Oracle_Home\bpel\domains\default\logs will come in handy

In case of ESB the main configuration file is esb_config.ini @ Oracle_Home\ integration\esb\config\ esb_config.ini

cluster_name - The default name of cluster for all the processes.

primary_oc4j- In case of cluster configuration this property is commented out .By default value is true

xa_timeout – the default value for JTA timeout

jms_receive_timeout – the timeout configured for JMS receive timeout (in seconds)

esbSystemForBPEL – the system name for BPEL processes

InboundRetryCount - This property sets the inbound retry count

InboundRetryInterval - This property sets the inbound retry interval

InboundRetryEnabled - This property sets the inbound retry is enabled

OutboundRetryCount - This property sets the outbound retry count

OutboundRetryInterval - This property sets the outbound retry interval

OutboundRetryEnabled - This property sets whether outbound retry is enabled

For ESB related errors log.xml @ Oracle_Home\ j2ee\home\log\home_default_group_1\oc4j will come in handy

Monday, May 5, 2008

some challenging Tasks in BPEL

When I joined Oracle Fusion middleware competency from Java/j2ee background everything looked new to me except for the java invocation part. But after swimming in fusion for some time I would like to share some tasks which I felt challenging in BPEL and I believe everyone who likes to take up fusion middleware should practice.

  • Invoke BPEL using Web service proxy
  • Invoke BPEL using RMI
  • Calling WSIF from BPEL
  • Calling BPEL using WSIF from java
  • Calling a OWSM secured webservices from BPEL
  • Using Java Embedding within BPEL
  • How to use human workflow
  • How to Create a custom exception
  • Use fault management framework provided with BPEL
  • Use Dynamic Partner link
  • Use Correlation sets
  • Create a unit TestCase
  • Create a project with a webservice, bpel and esb process and try to automate the deployment of it using ant scripts

Maybe I liked them because they involved some research from your side instead of blindly following oracle tutorials.