Wednesday, June 16, 2010

Timeout for Partnerlink

Problem:
How to set timeout for Partnerlink or web service in BPEL?

Solution:
Timeout property is set in bpel.xml file under PartnerLinkBinding tag. Just you need to add a property as timeout.

It is shown below as follows:(Suppose name of the web service you are using is abc)

<PartnerLinkBinding name="abc">
<property name="timeout">30</property>
<!-- other PartnerLink properties -->
</PartnerLinkBinding>

Wait wait...is it that evrything you need to do for having Timeout for Partnerlink? The answer to this is NO. This property cannot work alone. You need something more to be added to it. In order to achieve this you have to add another property called "optSoapShortcut to false" in the bpel.xml for that partner link.

Now it will look like:

<PartnerLinkBinding name="abc">
<property name="timeout">30</property>
<property name="optSoapShortcut">false</property>
<!-- other PartnerLink properties -->
</PartnerLinkBinding>

optSoapShortcut : This property instructs bpel to make the webservice calls via saop stack or not. When BPEL invokes any partner links if the services its calling is running on the same server/domain then it avoid soap overhead and calls natively. There may be situations that you want to invoke the services via Soap Stack, then this property helps you do just that.
Timeout property works on soap stack. Suppose a BPEL proces is calling another BPEL process then the call will change from Soap stack to local binding call.

Deployment with Verbose

Problem:
What is the importance of using verbose in your project?

Solution:
Verbose entry appears inside your BPEL project under build.properties file. When you add verbose=true to build.properties file then it gives us much more information regarding the compile/deploy process of SOA projects.

Just add "verbose=true" to your build.properties and deploy your process. While Deploying goto "Apache Ant" Log Window and see more information being written to the log. To accomplish this, follow below mentioned steps:

1) Goto any BPEL Project
2) Open build.properties available under Resources in your application navigator
3) Goto the bottom and add verbose=true
4) Save and Re-deploy
5) Check the Apache-Ant Log Window in your Jdeveloper.

Resetting Console login Password

Problem:
How do you change the password for BPEL Console user 'oc4jadmin'?

Solution:
Follow the below mentioned steps to accomplish this:

1) Connect to SOA Suite EM Console (Application Server Control)
2) Click on appropriate container name. (Home or oc4j_soa, depending upon where your BPEL is available)
3) Click on Administration tab
4) Then click and Goto Task icon for Security Providers task
5) Click Instance Level Security
6) Click Realms
7) Click number under Users
8) Now search for 'oc4jadmin' in list
9) Now click it to change the password for BPEL Console and you are done

ORABPEL-02182

Problem:
ORABPEL-02182

JTA transaction is not present or the transaction is not in active state.
The current JTA transaction is not present or it is not in active state when processing activity or instance "4260005-BpInv5-BpTry7.13-1". Please consult your administrator regarding this error.

Some Thoughts:
You can encounter this error if response time of adapter is greater than the predefined waiting time for a BPEL instance.As a result process does not get dehydrated on time and fails by throwing this error.

Solution:
A better solution for above problem should be to increase the transaction-timeout values in order to make the BPEL instance to wait more time until a response returns from the adapter.

Following are the steps you should follow to acheive the result:

1) Stop SOA Server

1) Goto SOA_Home\j2ee\config\transaction-manager.xml, serach for transaction-timeout and set transaction-timeout for e.g. to 7200 or more (default value is 30).

2) Goto SOA_Home\j2ee\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xml and set all transaction-timeout to 3600 or more. The value passed here should be always less than the value which is mentioned in step 2.

3) Goto SOA_Home\bpel\domains\config\domain.xml and set syncMaxWaitTime to 240 or more. The value passed here should be always less than the value which is mentioned in step 3. (Default value is 45)

4) Start SOA server and run the process again. Process should work fine.

Importing libraries for using Java Exec

Problem:
Want to use Java Exec, is it resulting in error?

Solution:
Add following libraries to your .bpel code:
<bpelx:exec import="java.util.*"/>
<bpelx:exec import="java.lang.*"/>
<bpelx:exec import="java.math.*"/>
<bpelx:exec import="java.io.*"/>
<bpelx:exec import="com.collaxa.common.util.Base64Decoder"/>
<bpelx:exec import="com.collaxa.common.util.Base64Encoder"/>