Implement callback for an asynchronous BPEL process through Java

Hi ,
I am trying to implement a callback functionality for an asynchronous BPEL process through java.
I found the code in the samples folder of SOA suite installation folder .
<SOA_HOME>\bpel\samples\tutorials\102.InvokingProcesses\rmi\com\otn\samples\async.
There is an AsyncInstanceWatchdog object which registers a callback object(in this case an object of AsyncCallbackImpl class) for a specific CONVERSATION_ID.
String convId = GUIDGenerator.generateGUID();
nm.setProperty(NormalizedMessage.CONVERSATION_ID, convId);
deliveryService.post(proc_name, "initiate", nm);
// register the callback
watchdog.registerAsyncCallback(convId, testAsyncHandler,
locator.getDomainAuth());
// start it
watchdog.start();
There is no problem till the last line. But once the BPEL process returns the control( does a callback), it throws the following error.
May 25, 2010 3:36:06 PM oracle.j2ee.rmi.RMIMessages EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER
WARNING: Exception returned by remote server: {0}
ORABPEL-02118
Variant not found.
The variant "output" has not been declared in the current scope. All variants must be declared in the scope before being accessed.
Please check that the variant "output" is properly declared; otherwise there may be a misspelling in the name of the variant.
     at com.collaxa.cube.engine.core.Scope.getVariantRV(Scope.java:535)
     at com.collaxa.cube.engine.CubeEngine.getFieldValue(CubeEngine.java:2668)
For your reference the variable output is declared in the definition of AsyncCallbackImpl (which implements the IAsyncInstanceCallback interface).
There are 2 methods defined in the AsyncCallbackImpl class.
public void onResult(Map pResultMessage) {
System.out.println("called back! ");
Iterator iTest = pResultMessage.keySet().iterator();
while (iTest.hasNext()) {
String key = (String)iTest.next();
System.out.println(XMLHelper.elementToString((Element)pResultMessage.get(key)));
public String getVariableName() {
return "output";
The variable name is same given in the sample code. And the BPEL process returns variable named output. So the name should not be a problem.
Is it because of the scope of the variable.. If so, how do I change it.
Any help would be appreciated.
Edited by: saptarishi on May 25, 2010 4:24 PM
Edited by: saptarishi on May 26, 2010 4:45 PM

Solved it by some googling .... :)
Here is the link:-
[http://abhishek-soablog.blogspot.com/2008/09/orabpel-02118.html]
or
[http://beautifulwaste.blogspot.com/2008/04/calling-asynchronous-bpel-process.html]
Both gives the same solution..
In pre 10.1.3.3 release the default behaviour were to keep global variable information along with the instance information for completed BPEL processes.
In 10.1.3.3 or later, this behaviour changed for performance reasons so that the default behaviour is now, not to keep any global variables for a BPEL process once the BPEL process has completed.
You can configure this behaviour on a process level basis by using the parameter keepGlobalVariables in the bpel.xml file for the specific process:
<BPELSuitcase>
<BPELProcess src=".........." id="...........">
<configurations>
<property name="keepGlobalVariables">true</property>
</configurations>
</BPELProcess>
</BPELSuitcase>
Thanks
saptarishi

Similar Messages

  • Invoking asynchronous BPEL process from java ui

    Hi,
    I am invoking an asynchronous BPEL process from java ui.
    I read somewhere that i can obtain an instance handler uing the lookupInstance() method of class Locator using the conversation id provided by the class NormalizedMessage.
    My code looks like this
    // Connect to Oracle BPEL server
    Locator locator = new Locator("default","bpel");
    IDeliveryService deliveryService = (IDeliveryService)locator.lookupService(IDeliveryService.SERVICE_NAME );
    // Construct a normalized message and send to Oracle BPEL Process Manager
    NormalizedMessage nm = new NormalizedMessage();
    nm.addPart("payload", xml);
    // Initiate the BPEL process
    deliveryService.post("MyLoanFlow", "initiate", nm);
    //Obtain the instance handler
    IInstanceHandle handle = locator.lookupInstance(NormalizedMessage.CONVERSATION_ID);
    But this is giving the error - can not find any instance with conversation id 'conversationId'.
    Also, if i try to obtain a list of instance handles associated with a process , it does not contain the most recently created instance
    IBPELProcessHandle ph = locator.lookupProcess("MyLoanFlow");
    IInstanceHandle[] iHandler = ph.listInstances();
    out.println(iHandler.length + "<br>");
    if i invoke the process for the first time the output is 0.
    can you please help me. it is urgent.

    Hi Sudipto,
    Regarding your second question,
    deliveryService.post("MyLoanFlow", "initiate", nm);
    IBPELProcessHandle ph = locator.lookupProcess("MyLoanFlow");
    IInstanceHandle[] iHandler = ph.listInstances();
    out.println(iHandler.length + "<br>");
    ---- returns 0 ---
    This is because MyLoanFlow is an asynchronous process in your case. So the control is returned to your java block immediately after the request for a new instance is posted. And your second line of code(querying for the list of instances) is executed even before the instance is created on the server side. You can verify this in two ways:
    1. try creating an instance of a synchronous process using IDeliveryService.request - this will always result in the increment since the current thread is blocked till the new instance is created.
    2. for your case, you can try
    Thread.currentThread().sleep(500); - just allow the server some time for completing the instance before you query it for the list of instances..
    and wrt question 1,
    //Obtain the instance handler
    IInstanceHandle handle = locator.lookupInstance(NormalizedMessage.CONVERSATION_ID);
    But this is giving the error - can not find any instance with conversation id 'conversationId'.
    For setting the conversationId, you could do so by including the following inside your .bpel file
    <bpelx:exec name="test-setConversationId" language="java" version="1.4">
    <![CDATA[
    setConversationId("conversationId");
    ]]>
    </bpelx:exec>
    The code:
    IInstanceHandle ins = locator.lookupInstanceByConversationId(NormalizedMessage.CONVERSATION_ID);
    should fetch you the required instance in this case.
    HTH,
    Anuj

  • HowTo get the callback from an asynchronous BPEL process to an ESB?

    Hi,
    I have deployed an asynchronous BPEL-process which is called from an ESB. So far no problems. But I want to receive the callboack fromt this BPEL process on the ESB, too.
    How is this possible?
    Note: I have created the BPEL-Process before I created the ESB. So I cannot add the ESB as a partner link in the BPEL Process. Or is this the only way?
    Message was edited by:
    user636134

    Hi,
    I have deployed an asynchronous BPEL-process which is called from an ESB. So far no problems. But I want to receive the callboack fromt this BPEL process on the ESB, too.
    How is this possible?
    Note: I have created the BPEL-Process before I created the ESB. So I cannot add the ESB as a partner link in the BPEL Process. Or is this the only way?
    Message was edited by:
    user636134

  • How to get response from an asynchronous BPEL process in Java

    I'm experimenting with BPEL and doesn't seem to be able to get response from an asynchronous BPEL process. Here's the deal:
    I have a BPEL process that takes a string as input, and gives another string as output. This is a asyncronous process.
    I want to initiate this BPEL process as a web service so I generate a Webservice Proxy in JDeveloper 10g (10.1.3.0.4). The function to call the process is now called "initiate" and takes three arguments: the input string, a "org.xmlsoap.schemas.ws._2003._03.addressing.EndpointReferenceType replyTo" and a
    "org.xmlsoap.schemas.ws._2003._03.addressing.AttributedURI messageID".
    HTTP-Analyzer shows that invoking the BPEL process with initiate("somestring", null, null) results in sending a SOAP message to the BPEL process, which returns a "202 Accepted". How do I get the response from the process? My intuition tells me that I have to use that second argument, that EnpointReferenceType thing. How do I use that?
    Another question: If a asynchronous BPEL process does not exists (so the endpoint does not exist) the Java proxy does not throw an error when runned. It does not even sends a message. It exits with status 0! (This happens for example when deploying a new version of a process and when the "old" version is undeployed). Calling a non-existing synchronous BPEL process, the Java proxy DOES throw an error.

    Clemens,
    That all sounds logical. But somehow it is still a mystery for me ... Somehow I don't see what should be done.
    To call the async BPEL process I have the following procedure:
    initiate(String input, org.xmlsoap.schemas.ws._2003._03.addressing.EndpointReferenceType replyTo, org.xmlsoap.schemas.ws._2003._03.addressing.AttributedURI messageID)
    The first argument is the input for my BPEL process. The second is the address to a webservice that should handle the callback, right? The third is a messageID (makes sense, but why of the type AttributedURI?).
    Here lies my problem. It is not clear to me how these EndpointReferenceType & AttributedURI work. I can't find anything on the net about it. The AXIS examples as where mentioned earlier use other types (namely the "org.xmlsoap.schemas.ws.addressing.MessageID" and "org.xmlsoap.schemas.ws.addressing.ReplyTo") which are completely different.
    What I did so far:
    - I created an webservice proxy that listens on the onResult endpoint of the BPEL process.
    - I created an webservice proxy that calls the BPEL process through the initiate procedure, but it is not completely clear to me how to construct the EndPointreferenceType replyTo, and the MessageID. I did something like this:
    EndpointReferenceType replyTo = new EndpointReferenceType();
    // callback service running on local machine
    // This URI class is the java.net's version
    URI replyToURI = new URI("http://vaccinatie:8988/syncro-callback-context-root/stringconcatCallbackBindingPort");
    // This AttributedURI is the org.xmlsoap.schemas.ws._2003._03.addressing's version
    AttributedURI address = new AttributedURI();
    // the only public methos that made sense to me:
    address.set_value(replyToURI);
    replyTo.setAddress(address);
    // call the BPEL process
    myPort.initiate("test123", replyTo, address);
    But the above doesn't work (largely because I don't know what I'm doing here prob.:-) ) It does send the "test123" message, and the BPEL process does process it, but I don't seem to get the callback right.
    I hope this makes my problems somewhat clearer. I hope someone can help me, because I'm just a beginner in this whole "web service area" and seems to do something terribly wrong here, because it should be very simple. Thx.

  • Getting the final result of BPEL Process through Java

    I am trying to invoke BPEL Process from Java code as follows:
    NormalizedMessage res=deliveryService.request("BPELProcess1", "process", nm);
    Map payload = res.getPayload();
    System.out.println("size=="+payload.size());
    Element e = (Element)payload.get("payload");
    Node node = e.getFirstChild();
    NodeList list = e.getChildNodes();
    for(int k=0;k<list.getLength();k++){
    Node n= list.item(k);
    System.out.println("Node-->"+n.getNodeName());
    The node names getting printed are :
    Node-->#text
    Node-->result
    Node-->#text
    When i retrieve value from these nodes using getNodeValue(), it is showing null for result. However through the BPEL Console, when i see the instance, it shows the result as 5 :
    <outputVariable>
    <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
    <BPELProcess1ProcessResponse xmlns="http://xmlns.oracle.com/BPELProcess1">
    <result>5</result>
    </BPELProcess1ProcessResponse>
    </part>
    </outputVariable>
    Any comments on this will help a lot. Thanks

    Does this example helps you:
    http://orasoa.blogspot.com/2007/06/calling-bpelesb-webservice-from.html

  • DBAdapter polling for new or changed records not issuing callback within an asynchronous BPEL process?

    Hi,
    I have a requirement to poll a database table withing an asynchronous process. The reason I want to use a receive within an asynchronous BPEL is because the process needs to be notified many times thru polling. So might need many receive activities.
    I have developed a process as described below :-
    1. Created an asynchronous process.
    2. Created a Database adapter for polling a table. Logical delete strategy is being used.
    3. Have put a receive activity from the DB Adapter created.
    4. Created a correlation set consisting of a single property(String)
    5. Created a property alias to refer to
    a. the input string of the asynchronous process. (unique for this process)
    b. the input from the database adapter (unique for this process)
    I initiate this process from the console. Then I inserted a record the table with proper inputs.
    But the BPEL waits indefinitely at the receive activity.
    When I try to poll the table from an empty BPEL process, it works perfectly fine.
    Regards
    Kabir

    Hi Kabir,
    Please refer the following sample for your usecase.
    Though Please be aware that one instance of BPEL process will correlate with only one message if you have one receive activity. Not all the messages tht DBAdapter polls.
    bpel-305-InboundCorrelationShows how to perform message correlation within BPEL
    Also Refer the following in Developer guide.
    http://docs.oracle.com/cd/E28280_01/dev.1111/e10224/bp_correlate.htm#CHDFHAAE
    If you want to keep polling and receiving the messages in the same BPEL process you might have to put the receive activity in a while loop construct. But as a design this is not a good design.
    Can you elaborate your requirement to understand better and suggest better solution.

  • Error while trying to access BPEL process through java on localhost

    I have a service (CreditRatingService that comes along with install) running on the BPEL engine. Trying to invoke it through java. However, I get an exception. Below is more information. Appreciate any help.
    My method
        public String invokeBpel()
          Map payload;
          Hashtable jndi = null;
          try
           String ssn ="1234";
           String xml = "<ssn xmlns=\"http://services.otn.com\">" + ssn + "</ssn>";
            Locator locator;
            locator = new Locator("default","welcome1",jndi);
             IDeliveryService deliveryService =
              (IDeliveryService)locator.lookupService(IDeliveryService.SERVICE_NAME );
              NormalizedMessage nm = new NormalizedMessage( );
              nm.addPart("payload", xml );
                NormalizedMessage res =null;
                try
                 res = deliveryService.request("CreditRatingService","process", nm);
                catch(RemoteException oNameEx)
                    System.out.println(oNameEx.getMessage());
                payload = res.getPayload();
                System.out.println( "BPELProcess CreditRatingService executed!<br>" );
                System.out.println( "Credit Rating is " + payload.get("payload") );
          catch (Exception e)
            System.out.println("This is the exception" + e);
            System.out.println(e.getStackTrace());
          finally
              return "toPage3"; 
        }//end method
    Exception  text
    Failed to create "ejb/collaxa/system/DeliveryBean" bean; exception reported "javax.naming.NameNotFoundException: ejb/collaxa/system/DeliveryBean not found
    Env
    ADF Business Components:10.1.3.39.84
    BPEL Designer      10.1.3.1.0 (Build 061009.0802)
    CVS Version     Internal to Oracle JDeveloper (client-only)
    Java™ Platform     1.5.0_06
    Oracle IDE     10.1.3.39.84
    Struts Modeler Version     10.1.3.39.84
    UML Modelers Version     10.1.3.39.84
    Versioning Support     10.1.3.39.84

    Hashtable jndi = null;
    try
    String ssn ="1234";
    String xml = "<ssn xmlns=\"http://services.otn.com\">" + ssn + "</ssn>";
    Locator locator;
    locator = new Locator("default","welcome1",jndi);
    this implies to be in the same initial context then the bpel engine, whicuh you cannot be as long as you are not either part of the ejb code of orabpel or a child of it. and if you are you can use the Locator API without the jndi properties.
    hth clemens

  • Error while invoking an asynchronous BPEL process

    Hi ,
    I am trying to call an asynchronous BPEL process through java client.
    Following is the code which I got from SOA bpel samples present in the following location
    <SOA_HOME>\bpel\samples\tutorials\102.InvokingProcesses\rmi\com\otn\samples\async
    The code fails while registering the callback
    String convId = GUIDGenerator.generateGUID();
    nm.setProperty(NormalizedMessage.CONVERSATION_ID, convId);
    deliveryService.post("HelloWorld", "initiate", nm);
    // register the callback
    watchdog.registerAsyncCallback(convId, testAsyncHandler,
    locator.getDomainAuth());
    The error says java.lang.NoClassDefFoundError: org/collaxa/thirdparty/json/JSONString
    I tried to search for this in google. But it seems noone has got this error or maybe noone has used this at all.
    Maybe I am missing some jar file, but I am unable locate that.
    Can someone help me in this please.

    Hi,
    These sort of class not found errors come when you are running from a client which does not have all the jar files requried to invoke BPEL using the client API.
    org/collaxa/thirdparty/json/JSONString is orabpel-thirdparty.jar.
    The complete list of Jar files you would need in the classpath are:
    ejb.jar ($ORACLE_HOME/home/lib)
    oc4j-internal.jar ($ORACLE_HOME/home/lib)
    optic.jar ($ORACLE_HOME/opmn/lib)
    orabpel-common.jar ($ORACLE_HOME/bpel/lib)
    orabpel-thirdparty.jar ($ORACLE_HOME/bpel/lib)
    orabpel.jar ($ORACLE_HOME/bpel/lib)
    Hope this helps,
    Regards,
    Shanmu.
    http://www.prshanmu.com/articles/

  • Retrieving Status/Results from Asynchronous BPEL Processes

    Hi,
    I'm trying to poll the results of an asynchronous BPEL process with Java RMI. I managed to get the state of my instance, but i could not get the results of the process.
    When I use the method getResult I only get an empty Object[]. (see my attached code)
    I'm working with the tutorial 101.HelloWorld process.
    How can I acess the results of this process by using RMI?
    Thank youf for replies.
    Marc
    Properties props = new java.util.Properties();
    java.net.URL url = ClassLoader.getSystemResource("context.properties");
    props.load(url.openStream());
    Locator locator = new Locator("default", "bpel", props);
    IInstanceHandle handle = locator.lookupInstance("myInstance");
    if (handle.getState() == IInstanceConstants.STATE_CLOSED_COMPLETED)
    System.err.println(handle.getResult());
    }

    Hi,
    I am having exactly the same problem.
    Was this bug ever solved ?
    Thanks,
    Claudio.

  • Unable to get callback from Asynchronous BPEL process to work (AXIS Client)

    Hello,
    I am calling an Asynchronous BPEL process from an AXIS client, and I am unable to get the callback functionality to work. The AXIS client code has been generated from WSDL2Java using the BPEL process' WSDL file.
    I CAN insert an invoke node in the BPEL process and invoke my Callback web service using that, but obviously that means the BPEL process is limited to only responding to one pre-determined client, which won't work.
    My questions:
    - How does the BPEL process know what endpoint to use to make the callback?
    - Do I need to modify the generated code to create a SOAP Envelope and invoke the process with the envelope, intead of the invokeOneWay call?
    - If I do need to create a SOAP Envelope with a replyto element, what is the structure of a typical BPEL envelope? Is there an example somewhere?
    I have looked at the examples in the interop directory, specifically the AXIS calling Async BPEL, but I would like to try to keep the client code as independent as possible (I don't really want to have a dependency on the OTN library).
    Any help would be greatly appreciated!!
    Thank you.
    -Ryan

    Please have a look at the Binding in the WSDL. Axis must provide the ReplyTo and
    MessageId information there. As far as I see, this must be done by an Axis-Handler,
    because the Binding-Part in not generated by WSDL2Java.
    I was able to generate the JavaClasses by using the "WSDL2Java -a" option, but
    I still do not see how to use them in a handler and how to register the handler.
    Maybe someone can give me a hint.

  • Class Not found Exception for invoking BPEL process through the Java code

    Hi.
    The JDeveloper IDE raise the Exception From the invoking the BPEL process through the java code .Class Not Found Exception (Locator,ID.......).What is process of importing these classes from API.

    In your code (.bpel file) import the library using the bpelx:exec tag. For example the adding the following entry in your .bpel file imports the com.oracle.bpel.client.util library.
    <bpelx:exec import="com.oracle.bpel.client.util.*"/>

  • Correlation in Asynchronous BPEL process

    I have thoroughly read docs & various blogs for this correlation concept and I am developed the bpel process without any compilation error. But when I execute, all the instances are waiting in receive activity with message *"Waiting for "processResponse" from "AsynchBPELProcess3.AsynchBPELProcess1.PartnerLink1". Asynchronous callback."*
    My scenario goes like this, I have three simple Asynchronous BPEL process with flow A --> B --> C i.e;
    step 1) client invokes process A with initial inputs
    step 2) process A does some assignment and invokes process B and then followed by a receive activity to receive response back directly from process C
    step 3) process B simply invokes process C after some assign activity
    step 4) process C do actual task for computation -- this is from where i am expecting output result at process A
    Done correlation at process A's recieveInput activity & in additionally added a receive activity to get response.
    Flows works as expected....everything if fine. But only at the time of returning the output result back to process A ..this waits for long time and after some time it becomes stale.
    Thanks.

    Yes you can achieve this. There are many ways to get this, it depends on your design. I didn't try the correlation sets.
    If i were you I would like to use the message header properties of the JMS queue. Set an MsgID for the request message and use the same MsgId to listen the response. You have to ask the partner to listen to your request message and store the KsgID and set the same MsgID to the header properties in response message.
    Let me know if you have any questions.
    Thanks
    Ramana.

  • Throwing a fault from an asynchronous bpel process

    Hi,
    can anyone please let me know how i can throw a fault to the calling client from an asynchronous bpel process?
    (synchronous bpel uses the fault of the reply activity to do the same - i want a similar thing in a callback-invoke of an asynchronous process or any other way to do it if at all)
    please let me know if it is possible becoz it was a requirement put forward by a customer and i just want to develop a proof of concept to the same.
    regards,
    pavan.

    Hi,
    I'm using BPEL process manager for calling a asynchronous web service,I can invoke the service from BPEL and the service is invoked correctly,but when I view the business process flow in BPEL Console my process is stopped at receive state and doesn't pass it.
    Could anybody tell me if any thing should be set to receive a callback from an asynchronous web service to BPEL process?
    Is it true that BPEL process receives a callback automatically (using a callback operation which I defined in my web service WSDL) on the same port type that normally receives the requested information, with an invoke activity?
    So what could be wrong with my process or invoked web service that the BPEL process doesn't get any reply from my web service and remains in receive activity?
    Thnx in advance,
    Nasim

  • Error while invoking BPEL Process through HTML Page

    Hi ,
    I have created a HTML Page to invoke BPEL synchronous process .
    HTML Page contains :
    <html>
    <head>
    <title>Untitled Document</title>
    <h1>Add Macro Task Input Form </h1>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="cyan" text="#000000">
    <form name="form1" method="get" action="/httpbinding/default/AddMacroSync/process">
    EmployeeId :
    <input type="text" name="EmployeeId" ><br>
    <br>
    TaskName :
    <input type="text" name="MacroTaskName" >
    <button
    id="identifier"
    class="dialog"
    label="OK"
    accesskey="t"/>
    <br>
    </form>
    </body>
    </html>
    I am able to invoke my BPEL Process named as " AddMacroSync" .
    It also creating instance for this BPEL Process .
    But when I go BPEL Console and check my instance , it is always faulted .
    I am providing two inputs : Employee Id and Taskname through HTML Page .
    These inputs got assigned to their respective output variables .
    But when I click on audit link ..it shows error while invoking the Process .
    It Show error :
    when invoking endpointAddress 'http://152.69.248.232:8990/AddMacroTask-AddMacroTask-context-root/AddMacroTaskWebService', [java.lang.NumberFormatException]
    But this end point address is working when I put this address in URL .
    Please someone help me how to solve this problem .
    Thanks
    Prashant Dwivedi
    Message was edited by:
    Prashant Dwivedi

    Hi Clemens ,
    I changed My HTML ...Now it looks like as :
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="application/x-www-form-urlencoded; charset=iso-8859-1">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">
    <form name="form1" method="post" action="/httpbinding/default/AddMacroSync">
    <input type="hidden" name="msg_part" value="payload">
    <input type="hidden" name="namespace" value="http://xmlns.oracle.com/AddMacroSync">
    EmployeeId:
    <input type="text" name="EmployeeId">
    TaskName :
    <input type="text" name="TaskName">
    <input type="submit" name="Submit" value="Submit">
    </form>
    </body>
    </html>
    After this when I try to incoke my BPEL Process through this HTML :
    I am gettign following error :
    500 Internal Server Error
    java.lang.IllegalStateException: IOException: Premature end of POST data
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.EvermindHttpServletRequest.getParameter(EvermindHttpServletRequest.java:2452)
         at com.collaxa.cube.ws.http.HttpBindingServlet.checkSecurity(HttpBindingServlet.java:281)
         at com.collaxa.cube.ws.http.HttpBindingServlet.doPost(HttpBindingServlet.java:85)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:824)
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:830)
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:285)
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:126)
         at com.evermind[Oracle Application Server Containers for J2EE 10g (10.1.2.0.2)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
         at java.lang.Thread.run(Thread.java:534)

  • Time Out for a syncronus BPEL process

    Hi All,
    Need your help with regards to the following:
    From a parent BPEL process we need to invoke a synchronous BPEL Process .This(child) could take anything between 20-30 seconds for processing a request.
    Now the requirement is to time out the parent BPEL process if the BPEL process it is calling takes more than 25 seconds for processing a request.
    If( time taken to get from partner process >25 sec)
    time out
    Else
    Move along with the rest of the process.
    Approaches considered:
    1)     Pick activity :
    Fallout: the pick activity would work only when you are calling a asynchronous BPEL process.
    2)     Having the invoke activity in a scope and adding an on Alarm branch for the scope.
    Fallout: The BPEL process manager executes all the other activities even after exceeding the maximum time the process is set for timing out.
    That is if we consider the below scenario
    If( time taken to get from partner process >25 sec)
    time out
    Else
    move along with the rest of the process.
    Instead of executing the if block( onAlarm) it is executing the else block.
    Request you to suggests approaches to suffice this requirement.

    Hi Sai Madalli,
    An approach to it, would be use the syncMaxWaitTime with time that you need, its a configuration per domain.
    http://download-west.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/events.htm#BABGGADB
    http://download-east.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/app_trblshoot.htm
    Regards

Maybe you are looking for