Thursday, December 31, 2009

HAPPY NEW YEAR

Keep learning and stay connected to Oracle SOA.
May each day brings happiness, prosperity and continued success...


WISHING ALL BLOG READERS...
A
VERY
HAPPY
AND
PROPSPEROUS
NEW
YEAR 2010.

Logging System.out statements

Problem:
Need to log System.out statements under Oracle Application Server 10g.

Thoughts:
For this requirement, I was searching on Internet and I got a solution which worked. Just thought of publishing this on this blog for readers.

This entry which give you an insight view about how to log system.out outputs on our SOA Servers. By default, this is not logged anywhere. For example, a Java code might include the following line:-
System.out.println("Test_123");

Solution:
You can configure this in two ways, either manually updating SOA Server files or via Enterprise Manager Console.

Configure System.out logging manually on SOA Server:
1) Stop the SOA Server
2) Navigate to <SOA_HOME>\opmn\conf
3) Open and edit opmn.xml file
4) Add the following entry to the start-parameters section of the container.
For example:
<data id="oc4j-options" value="-out d:\oracle\product\SOA\j2ee\<container_name>\log\Custom_log\systemout.log"/>
5) Restart SOA Server

Configure System.out logging via EM Console:
1) Log in to the EM Console
2) Click on proper container name
3) Click on Administration tab
4) Click on Server Properties link
5) Add the following under Start-parameters:- OC4J Options;
For example:
-out d:\oracle\product\SOA\j2ee\<container_name>\log\Custom_log\systemout.log
6. Restart the SOA Server

The output should now appear in the log file you configured:
<SOA_HOME>\j2ee\<container_name>\log\Custom_log\systemout.log

Wednesday, December 30, 2009

ORABPEL-05250

Problem:
BUILD FAILED
D:\Abhi\RatingCheck\build.xml:79: A problem occured while connecting to server "localhost" using port "80": bpel_RatingCheck_v2009_12_12__74238.jar failed to deploy. Exception message is: Error deploying BPEL suitcase.
An error occurred while attempting to deploy the BPEL suitcase file "D:\oracle\product\soa\bpel\domains\default\tmp\bpel_12757142.tmp"; the exception reported is: archive cannot rename D:\oracle\product\soa\bpel\domains\default\tmp\.bpel_RatingCheck_v2009_12_12__74238_a4ef0434bf12f22a3374aab6a0a942a1

If you check the server log file - domain.log, you will see ORABPEL-05250 error.

Thoughts:
This error is encountered with SOA 10.1.3.5. You will see this error once you try to redeploy your project on the server i.e. whenever a BPEL process is already deployed on the server and you are trying to replace it with newer version or trying to deploy over it. Even in Jdeveloper you will not see the small version window poping up when you try to deploy the project.

But why this problem is there?
Possibly there is a bug with this SOA version. I think whenever we try to redeploy the project it tries to rename the existing project before replacing it with the new one. Some unknown Java process within the BPEL server locks the bpelclasses.jar file and one of your project WSDLs preventing the renaming of the parent directory.

Solution:
Possible solution (as we are doing for our projects)for this error is:
1) Undeploy the process from the console
2) Shutdown SOA Suite Server
3) Bring the Server up. (This will release the process lock).
4) Try to deploy the project.

I know this is quite painful during development. One more pain is that you cannot have multiple versions of your project on console. That means if you want to refer any instance after redeploying, forget it.

So according to me, avoid applying Patch Set 10.1.3.5 on Windows (I have not tried this on other OS). I hope Oracle will look into this matter soon.

Wednesday, December 23, 2009

ORABPEL-04077

Problem:
ORABPEL-04077
Cannot fetch a datasource connection.
The process domain was unable to establish a connection with the datasource with the connection URL "jdbc/BPELServerDataSource". The exception reported is: javax.resource.ResourceException: RollbackException: Transaction has been marked for rollback: Timed out

Thoughts:
Sometimes deploying a bpel project of bigger size using JDeveloper throws exception: javax.resource.ResourceException: RollbackException: Transaction has been marked for rollback: Timed out. This is due to the fact that JDeveloper takes too much time and fails to deploy the project.

Solution:
To solve the issue we need to change values of some configuration files of SOA Server. Follow the below mentioned steps:

1) Stop the SOA Server

2) Open the transaction-manager.xml file present under location:-
<SOA_HOME>\j2ee\oc4j_soa\config\transaction-manager.xml

3) Change the transaction-timeout attribute value to some higher value, viz. transaction-timeout="7200"

4) Now open the orion-ejb-jar.xml file present under location:-
<SOA_HOME>\j2ee\oc4j_soa\application-deployments\orabpel\ejb_ob_engine\orion-ejb-jar.xml

5) Change the transaction-timeout attribute to some higher value, viz. transaction-timeout="3600"

6)There will be 6 entries of transaction-timeout attributes in the file. You have to change all the 6 attributes.

7) Save the files.

8) Restart the SOA Server.

9) Now try to deploy the BPEL project using JDeveloper. It should work.

Tuesday, December 22, 2009

Application Server HTTP 404 problem - Part 2

Follow this post if the solution published on my blog dated 16th April 2009 is not working.

If making changes to default-web-site.xml file does not work, then try to change an entry in the server.xml file. The file is located under:
<SOA_HOME>\j2ee\home\config\server.xml

Note: Stop the server before making any changes to the server files.

In the file, change the below property to true:
application name="ascontrol" path="../../home/applications/ascontrol.ear" parent="system" start="true" /

Now start the SOA Server and try launching the enterprise manager. You should be able to see the AS control page now.

Monday, November 9, 2009

com.oracle.bpel.client.delivery.ReceiveTimeOutException

Problem:
nested exception is:
com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is bpel://localhost/default/HelloWorld~1.0. Please check the process instance for detail.

Thoughts:
Above mentioned error come if the "syncMaxWaitTime" setting is set too low. So the processes which exceeds this limit get this error.

"syncMaxWaitTime" is the delivery result receiver maximum wait time. It is the maximum time the process result receiver will wait for a result before returning. The default is 45 seconds.

Solution:
"syncMaxWaitTime" can be updated via BPEL Control:
1) Log on to the BPEL console.
2) Click on Manage BPEL Domain.
3) Click on Configuration.
4) Edit the syncMaxWaitTime setting. For long running processes, this can be increased to 1800.

You can also modify this by navigating on SOA Server for this location:
<SOA_HOME>/bpel/domains/default/config/domain.xml.

First stop the SOA Server. Now goto the above mentioned location and search for . Edit the attribute by increasing the time. Now restart the SOA Server.

Cheers...

File Adapter: File Age parameter usage

Problem:
What is the function of using File Age parameter in File Adapter?

Solution:
When user sets ‘File Age’ parameter in File Adapter wizard, then the BPEL will wait for ‘File Age’ time, before it first polls for a file.
This option is especially useful, when the source file is large and takes some time for an external application to completely write finishing the source file. If this is not done then there is a chance that incomplete source file may be picked up for processing by BPEL.
The actual value to be set for ‘File Age’ is decided upon the file size and the time it roughly takes to completely copy in to source folder for BPEL to pick up.

APPS Adapter fails to open Object Module Browser

Problem:
In JDeveloper 10.1.3.3, if APPS Adapter fails to open Object Module Browser to show all available APIs/ XML Gatewys/ PL/SQLs etc.?

Solution:
To make this work, please follow the below mentioned steps:
1) Close your Jdeveloper if its open.
2) Navigate to <JDEV_HOME>/jdev/bin
3) Open jdev.conf and go till end
4) Add this line to the file:
AddVMOption -Duser.language=en
AddVMOption -Duser.region=us
5) Save and start your Jdeveloper

Now when the Apps Wizard prompt you to create the irep file, choose Yes, and let it finish to create the irep file. This going to take some time. At the end a successful message will be shown along with the directory in which the irep file was created. After this window, choose Next and try to open the Apps Module Browser. This will show all the available APIs/ XML Gatewys/ PL/SQLs etc.

Cheers....

Thursday, July 23, 2009

ORABPEL-10903

Problem:
ORABPEL-10903: "failed to read wsdl" when deploying BPEL process

Solution:
Check your schema file which you are using. There might be a possibility that the schema file name contains spaces. Rename the schema file(with no spaces).

Note that if you are importing that schema in your wsdl file then dont forget to change the name there too.

Redeploy the project and the error will be gone.

ORABPEL-05244

Problem:
ORABPEL-05244 error sometimes occurs in the opmn log shortly after deploying the BPEL process. Furthermore, it may cause the BPEL domain to hang.
The error looks like:
<2009-06-27 11:14:27,752> <ERROR> <default.collaxa.cube> <BaseCubeSessionBean::logError>
Error while invoking bean "process manager": Timed out waiting for process load lock.
Failed to obtain load lock for process "HelloWorld-1.0"; timed out after 120,000 seconds.

Timed out waiting for process load lock.
Failed to obtain load lock for process "HelloWorld-1.0"; timed out after 120,000 seconds.

Solution:
There is no direct solution to solve this problem.
To overcome this there are some suggestion by which you can get rid of such errors. The following suggestions are:
1) Undeploy the existing project.
2) Bounce the SOA Server.

ESB:rejectedMessageHandlers

Problem:
Files which do not adhere to input file schemas should be rejected or moved to specified folder other than archive folder in ESB.

Solution:
For this, first create an ESB project. Add a Read file Adapter to it. Now to set the rejectedMessageHandlers property, we need to open the <Read adapter name>.esbsvc file. This file should be present under ESB project folder.

Add the following code just after the closing tag of invocation i.e. </invocation> and just before the </service> tag.

<endpointProperties>
<property name="rejectedMessageHandlers" value="file://C:\SOADir\reject"/>
</endpointProperties>

Here,
C:\SOADir\reject is my directory where I want my rejected files to come.

Note: If at anytime you try to refresh anything in the project, this property gets omitted automatically. So be sure to add it again in .esbsvc file if you are refreshing anything in the project.

BPEL:rejectedMessageHandlers

Problem:
Files which do not adhere to the input file schemas should be rejected or moved to specified folder other than archive folder.

Solution:
For this we need to make an empty project which will be initiated by a file. We need to use a Read File Adapter. After the Adapter is configured and connected to a Receive activity, a bpel.xml file will be generated.
A property called ‘rejectedMessageHandlers’ is used and set in the bpel.xml file under <activationAgent> element.

Sample code for this should look like:
<activationAgents>
<activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="Read_File">
<property name="portType">Read_ptt
<property name="rejectedMessageHandlers">file://C:\SOADir\reject
</activationAgent>
</activationAgents>

Here,
C:\SOADir\reject is my directory where I want my rejected files to come.

Note: If at anytime you try to refresh anything in the BPEL project, this property gets omitted automatically. So be sure to add it again in bpel.xml file if you are refreshing any compomnent in the project.

OWSM: File-based authentication

Problem:
Incorporate File based authentication in OWSM

Thoughts:
A good article is already there from Oracle on this topic. I just want to highlight that there is a change in syntax for encoding the file in SOA 10.1.3.1 and SOA 10.1.3.3. We will be using a md5encode utility for doing text file based authentication in OWSM.

Solution:
After creating Gateway and its related service in OWSM, we need to add a policy i.e. file based authentication.
Create a text file and add a user name and password in the following format:- User_name:Password

Now save the file with extension as .htpassword. Now we have to use the md5encode operation to encode the password associated with a user_name.

Syntax: SOA 10.1.3.1
>wsmadmin md5encode username password htpasswdfile

Here,
username – User name in the text file;
password – Password assigned to the user;
htpasswdfile – Name of the file containing the user name and password

Syntax: SOA 10.1.3.3
>wsmadmin md5encode htpasswdfile username

Here,
htpasswdfile – Name of the file containing the user name and password;
username – User name in the text file

Thursday, July 2, 2009

Header Information in ESB

Problem:
To retrieve Header Information in ESB

Solution:

For FTP Adapter:
1) Create a variable in XSL mapper
2) Use the code in XPath:
ehdr:getRequestHeader("/fhdr:InboundFTPHeaderType/fhdr:fileName","fhdr=http://xmlns.oracle.com/pcbpel/adapter/ftp/;")

For File Adapter:
1) Create a variable in XSL mapper
2) Use the code in XPath:
ehdr:getRequestHeader("/fhdr:InboundFileHeaderType/fhdr:fileName","fhdr=http://xmlns.oracle.com/pcbpel/adapter/file/;")

Passing Dynamic value to IN clause

I came across a wonderful solution for passing values dynamically to IN clause in SQL query and would like to share with all.

Problem:
To pass the list of values in IN clause in SQL Query dynamically. We need to just keep in mind that giving ? after IN clause will not work.

Solution:
1) Use DB Adapter, select Execute Custom SQL as Operation Type and click on Next
2)You need to write a SQL query like the one given below if you want to use IN clause in SQL query and pass the value list dynamically:

SELECT ID,FNAME,MNAME,LNAME,LOC,DEPT
FROM EMP
WHERE LOC

IN (WITH VALUE_LIST AS
(SELECT ? val FROM dual)
SELECT SUBSTR(val, (decode(LEVEL, 1, 0, instr(val, ':', 1, LEVEL -1)) + 1), (decode(instr(val, ':', 1, LEVEL) -1, -1, LENGTH(val), instr(val, ':', 1, LEVEL) -1)) -(decode(LEVEL, 1, 0, instr(val, ':', 1, LEVEL -1)) + 1) + 1) a
FROM VALUE_LIST CONNECT BY LEVEL <=
(SELECT(LENGTH(val) -LENGTH(REPLACE(val, ':', NULL)))
FROM VALUE_LIST) + 1)


NOTE1:
a) Here you need to change the portion showed in Bold as per your query requirement.
b) In this SQL, value list for IN clause should be delimited with a : symbol, If you want to use any other symbol as a delimiter you need to replace : with the symbol you want to use.


3) You need to create IN value list dynamically. Use XSL transformation to generate the dynamic value list and pass it to the DB adapter.

4) To query all the employees from US,INDIA,UK locations you need to create an IN clause value list as US:INDIA:UK

NOTE2:
While generating value list you don’t need to wrap character data with apostrophe.


Limitations:
1) If you create a very big value list for IN query (greater than 4000 characters) than you need to break value list and invoke this query multiple times, otherwise you will get ORA-01704: string literal too long error.

2) If you use SELECT * rather than giving the field list with SELECT, DB adapter won't be able to generate a correct XSD for request.

Tuesday, May 19, 2009

BPEL: Insert huge data in DB

Problem:
To store large objects in database tables. If data is more than 32766 bytes, the DB Adapter doesnot insert the data. The Oracle BPEL PM throws following exception:
"
java.sql.SQLException: setString can only process strings of less than 32766 chararacters
Internal Exception: java.sql.SQLException: setString can only process strings of less than 32766 chararacters
Error Code: 17157 when trying to insert record in clob type of size more then 32766 characters
"
Note:- To store large data, the column in the oracle database should be of CLOB datatype which can store data.

Solution:
1) Goto location <SOA_Home>\j2ee\<ContainerName>\connectors\DbAdapter\META-INF
2) Open file ra.xml file
3) Copy and paste the below mentioned content:

<config-property>
<config-property-name>usesStreamsForBinding</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property>
<config-property>
<config-property-name>usesStringBinding</config-property-name>
<config-property-type>java.lang.Boolean</config-property-type>
<config-property-value>true</config-property-value>
</config-property>

4) Now Goto <SOA_Home>\j2ee\<ContainerName>\application-deployments\default\DbAdapter\oc4j-ra.xml
5) Open oc4j-ra.xml file
6) Copy and paste the above mentioned properties in the connector-factory of the DB Adapter.

<connector-factory location="eis/DB/TestDB" name="TestDatabase Adapter">
<config-property value="jdbc/DBConnection" name="xADataSourceName">
<config-property value="" name="dataSourceName">
<config-property value="oracle.toplink.platform.database.Oracle9Platform" name="platformClassName">
<config-property value="true" name="usesNativeSequencing">
<config-property value="50" name="sequencePreallocationSize">
<config-property value="false" name="defaultNChar">
<config-property value="true" name="usesBatchWriting">
<config-property value="true" name="usesStreamsForBinding">
<config-property value="true" name="usesStringBinding">

<connection-pooling use="none"></connection-pooling>
<security-config use="none"></security-config>
</connector-factory>

7) Restart Oracle SOA Suite and you are done.

Monday, May 11, 2009

Jdeveloper log window disappears

Problem:
Log window from Jdeveloper disappears. If we goto view->log, it does not reappear.

Solution:
For JDeveloper 10.1.3.4:-
Search for the windowinglayout.xml file.
Its present in the directory: <Jdev_Home>/jdev/system/oracle.ide.10.1.3.42.70

Rename or delete windowinglayout.xml file. After renaming/deleting it, we get our log window back on Jdeveloper again.

For JDeveloper 10.1.3.3:-
Search for the windowinglayout.xml file.
Its present in the directory: <Jdev_Home>/jdev/system/oracle.ide.10.1.3.41.57

Rename or delete windowinglayout.xml file. After renaming/deleting it, we get our log window back on Jdeveloper again.

Note:
JDeveloper saves the file after closure. So first close JDeveloper and then rename or delete the file.

Friday, May 1, 2009

Playing with ESB Schema-2

Problem:
Need to have all ESB Services and their respective parent System

Solution:
I have already mentioned in my previous blog with subject - Playing with ESB Schema-1, about what all details are required and the details on how to connect to ESB schema.

Query:
SELECT systems.name SYSTEMNAME, event.name ESBSERVICENAME, event.guid GUID,
DECODE(event.type, 'GROUP', 'Service', 'SERVICEGROUP', 'Service Group') TYPE, event.status STATUS
FROM wf_events event, wf_systems systems
WHERE event.type != 'EVENT'
AND event.system_guid = systems.guid
AND event.type IN ('GROUP')
AND systems.name != 'BPELSystem'
ORDER BY systems.name

Description:
1) event.type != 'EVENT' :- Condition to exclude esb activities
2) systems.name != 'BPELSystem' :- Condition to exclude BPEL processes
3) 'GROUP' :- Here GROUP means ESB service
4) 'SERVICEGROUP' :- Here SERVICEGROUP is the actual Service Group

Playing with ESB Schema-1

Problem:
Need to get the list of Systems and its respective GUID's.

Solution:
The ESB schema name to connect is ORAESB. You need to have the following information to connect to this schema:
1) Password
2) Hostname
3) Port

You can get the Hostname and Port details from the datasources.xml file.

Query:
SELECT name,guid,status FROM wf_systems WHERE name != 'BPELSystem'

Thursday, April 30, 2009

Error: XPATH returns zero node

Problem:
Sometimes you get following runtime error message in your BPEL Console for the transform activity;

XPath query string returns zero node.
According to BPEL4WS spec 1.1 section 14.3, The assign activity part query should not return zero node.
Please check the BPEL source at line number "211" and verify the part xpath query.
Possible reasons behind this problems are: some xml elements/attributes are optional or the xml data is invalid according to XML Schema.
To verify whether XML data received by a process is valid, user can turn on validateXML switch at the domain
administration page.

Solution:
The probable reason for getting this error is due to assigning value to an element using Assign activity just after the Transform activity, for which the same element is not mapped in transformation. Assign activity attempts to update an element not being transformed in Transform (the element without any value).

Following steps should be done to overcome this problem:

1) Goto the transfomation mapper file
2) Right-click on the element that the Assign activity in going to use for assigning value in the next step
3) Select Set Text
4) Set any temporary value there. This will be overwritten by the Assign activity in the next step anyways.

Wednesday, April 29, 2009

Error in getting File from FTP

Problem:
Sometimes when you try to GET(Read) a pdf file from the FTP folder(using FTP adapter) in the bpel process, you get following error:

FTP Command: RETR, reply:
550 RETR Error: IFS-32615: "/TestFolder/Read/demo.pdf": Path is invalid.
Unable to get Binary file '/TestFolder/Read/demo.pdf' ; FTP command RETR returned unexpected reply code : 550

Solution:
1) Goto the following SOA Server location:
<SOA_HOME>\j2ee\oc4j_soa\application-deployments\default\FtpAdapter
2) Open oc4j-ra.xml file in Notepad.
3) Navigate to
4) Change value="" to value="UTF-8"
5) Save the file
6) Bounce the SOA Server.

Pure SQL Exception

Problem:
Pure SQL Exception encountered.

Reason:
This problem is related to the database connections used in the BPEL/ESB projects. Usually sometimes we encounter this problem when the database on which we are doing some operations or the database(dehydration store) on which BPEL and ESB schemas are created is refreshed/restarted, and SOA Server doesn't come to know about the refresh/restart.

** This problem is seen when we use direct database connection instead of JNDI. It is always recommended to use JNDI instead of direct database connections.

Solution:
Bounce the SOA server so that the SOA Server updates itself.

Creating Database JNDI w/o EM

Problem:
Create JNDI without using Oracle Application Enterprise Manager

Solution:
While you create Database JNDI using Oracle Application Enterprise Manager, it modifies two files in the SOA installed location.

1) data-sources.xml
2) oc4j-ra.xml

We can manually create JNDIs by adding contents to these files. This try was made just to make sure that JNDIs can be created without the help of Enterprise manager.
So here you go,

1) First you need to modify the data-sources.xml file located at <SOA_Home>\j2ee\<Active container name>\config. Open the file in notepad. Add your new pool information as:

<connection-pool name="TestPOOL">
<connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="database username" password="database password" url="jdbc:oracle:thin:@//host name:port/service name" commit-record-table-name=""/>
</connection-pool>

Give a pool name. You need to provide the database connection details such as username, password, host name, port, service name. Save the changes.

2) As the second step, you need to modify the oc4j-ra.xml file located at <SOA_Home>\j2ee\<Active container name>\application-deployments\default\DbAdapter. Open the file in notepad. Add your new JNDI information as:

<connector-factory location="eis/DB/Test" connector-name="Test DB Adapter JNDI">
<config-property name="xADataSourceName" value="jdbc/Test"/>
<config-property name="dataSourceName" value=""/>
<config-property name="platformClassName" value="oracle.toplink.platform.database.Oracle9Platform"/>
<config-property name="usesNativeSequencing" value="true"/>
<config-property name="sequencePreallocationSize" value="50"/>
<config-property name="defaultNChar" value="false"/>
<config-property name="usesBatchWriting" value="true"/>
<connection-pooling use="none">
</connection-pooling>
<security-config use="none">
</security-config>
</connector-factory>

Provide the JNDI location and also the datasource name. Save the changes.

After the changes bounce the SOA Server. Now your database JNDI is ready to use.

BPEL: Default Input to initiate

Problem:
Need to pass same value everytime to initiate BPEL process(Synchronous or Asynchronous).

Solution:
If you want to pass a default input in your BPEL process while initiating process then you need to modify/add some code in your projects bpel.xml file.

Add the following code after the <partnerLinkBindings> tag in bpel.xml file:

<configurations>
<property name="defaultInput">Hi to SOA World</property>
</configurations>

Oracle Aquired Sun

Oracle announced the acquisition of Sun a week back. I think this is the hottest news in the tech-market now. This aquisition came after IBM cancelled the acquisition talks with Sun just 3 weeks back.

On the acquisition, just a small thought:

1) MySQL becomes the latest addition to Oracle's database family, MySQL was acquired by Sun last year.
2) With the aquisition it looks like Oracle wants to broaden its services into hardware as well.

Thursday, April 16, 2009

Application Server HTTP 404 problem

Hi SOA lovers

Writing blog after a long gap, this time with new flavors.

INTRODUCTION:
Sometimes when you navigate to the Enterprise Manager’s Application Server Control you will hit a 404 "Page not found exception".

REASON:
The most probable reason is that Application Server Control has no routing relationship defined with the Oracle HTTP Server by default.

SOLUTION:
To establish this relationship you have to set the ohs-routing attribute to true (default value in the file will be false) in the default-web-site.xml file at SOA server location: <SOA home>/j2ee/home/config. Make sure to make the changes always in the home container.

Make the changes as follws in the file:
<web-app application="ascontrol" name="ascontrol" load-on-startup="true" root="/em" ohs-routing="true" />

Now restart the SOA Server and try it. It should work.

If this solution doesn't work, follow my latest finding, posted on 22nd December 2009.

Wednesday, January 28, 2009

oc4j_soa in 10.1.3.4

Problem:
The OC4J_SOA container never stops gracefully and the stop log from the default_group~<oc4j_container_name>~default_group~1.log file shows that it always stops on deactivation of the endpoint for ESB adapters.

Solution:
This is due to the fact that the default stop timeout for OC4J, as specified in the
opmn.xml file, is 120, out of which most of the time is consumed by the initial process, that is, BPEL shutdown.
So, ESB does not have much time for the shutdown, so the Oracle Process Management Notification (OPMN) shuts it down forcibly. You can solve this problem by increasing the stop timeout for OC4J in the opmn.xml file.