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.

Similar Messages

  • Unable to invoke EJB from a BPEL process.

    Hello all
    I am running BPEL process manager over weblogic 8.1 App server. I am trying to invoke a simple stateless session bean from a synchronous BPEL process. I have created a WSDL for this EJB with appropriate binding and service elements.
    I am able to build my BPEL sync process and deploy it. But, when I run the process and invoke the EJB, I am getting the following exception-
    BPEL Fault: {http://schemas.oracle.com/bpel/extension}bindingFaultCould not create instance for home 'ClusterableRemoteRef(-3059145150938040994S:172.26.210.17:[9700,9700,-1,-1,9700,-1,-1,0,0]:myorabpel:orabpelServer [-3059145150938040994S:172.26.210.17:[9700,9700,-1,-1,9700,-1,-1,0,0]:myorabpel:orabpelServer/288])/288'; nested exception is:
    java.lang.NoSuchMethodException: com.carlson.sample.HelloWorldSessionBean_n4vx3i_HomeImpl_812_WLStub.create()
    I have a home interface for the EJB which has a 'create' method and my session bean has a ejbCreate method. I am using weblogic.appc to create the stubs and skeletons for the EJB.
    Has anyone tried this ?? The tutorial in the download 702.bindings/EJBBinding does something similar to this. But, I am having problems with that too.
    Any comments, advice, sample code will be helpful.
    Thanks a bunch
    - Mahesh :)

    I have deployed my Bean Managed Persistance Entity Bean in Weblogic 8.1 App Server. Trying to access the ejb from Synchronous BPEL process. I tried in two ways
    1. By accessing the ejb directly from BPEL process, writing the following code in BPEL process
    <bpelx:exec xmlns:bpelx="http://schemas.oracle.com/bpel/extension" language="java" version="1.4" name="InventoryEJB">
                   <![CDATA[
         // Java code snippet
         try{   
         Hashtable properties = new Hashtable();
              properties.put(InitialContext.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory");
              properties.put(InitialContext.PROVIDER_URL, "t3://PCIIB07447:7001");
              InitialContext context = new InitialContext(properties);
              InventoryHome home = (InventoryHome) context.lookup("Inventory");
              InventoryRemote remote = home.create();
              int status = remote.getInventory("Chevrolet","2-Door Coupes","Chevy Cobalt",5);
              addAuditTrailEntry("Status is: " + status);
    setVariableData("output", "payload",
    "/status", new Integer(status));
    catch(Exception e){}
         ]]>
              </bpelx:exec>
    Also copied the interface files in system\classes directory. I got the expected output but i am not able to view the "Visual Flow". Getting the following error in my BPEL server console
    <Sep 9, 2004 12:46:51 PM IST> <Warning> <RMI> <BEA-080003> <RuntimeException thr
    own by rmi server: weblogic.management.internal.RemoteMBeanServerImpl.invoke(Lja
    vax.management.ObjectName;Ljava.lang.String;[Ljava.lang.Object;[Ljava.lang.Strin
    g;)
    weblogic.management.NoAccessRuntimeException: Access not allowed for subject: p
    rincipals=[], on ResourceType: ServerConfig Action: execute, Target: lookupServe
    rRuntime.
    weblogic.management.NoAccessRuntimeException: Access not allowed for subject: pr
    incipals=[], on ResourceType: ServerConfig Action: execute, Target: lookupServer
    Runtime
    at weblogic.management.internal.SecurityHelper$IsAccessAllowedPrivilegeA
    ction.wlsRun(SecurityHelper.java:564)
    at weblogic.management.internal.SecurityHelper$IsAccessAllowedPrivilegeA
    ction.run(SecurityHelper.java:456)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:317)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    118)
    at weblogic.management.internal.SecurityHelper.isAccessAllowed(SecurityH
    elper.java:350)
    at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(Rem
    oteMBeanServerImpl.java:946)
    at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBean
    ServerImpl.java:908)
    at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unkn
    own Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:353)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    144)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
    a:415)
    at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
    .java:30)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
    2. The other way i used WSIF frame work, but i could not resolved.
    Thanks for your help in advance.

  • 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.

  • Problem calling BPEL process using apache axis client

    We have a BPEL process which we are trying to call from apache axis client. The problem is when we execute "call.invoke(new Object[] { xmlStr }) ", it adds an "argo" element to the message, and the xpath is unable to evaluate the message.
    We are able to call the process fron .Net and VB 6 using soap toolkit without any problem, so it seems odd we are not able to do so from apache axis.
    Here is how it should be received by the BPEL process:
    <inputVariable>
         <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
              <Request xmlns="http://e1.oracle.com/IAM">
                   <MessageHeader>
                        <Operation>update</Operation>
                   </MessageHeader>
                   <MessageDetail xmlns="">
                        <szSecondaryUoM_UOM2/>
                   </MessageDetail>
              </Request>
         </part>
    </inputVariable>
    But this is the way it is received having been sent from apache axis (notice the arg0 element) :
    <inputVariable>
         <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
              <arg0 xsi:type="xsd:string" xmlns="http://xmlns.oracle.com/InventoryAdjustment" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                   <Request xmlns="http://e1.oracle.com/IAM">
                        <MessageHeader>
                             <Operation>update</Operation>
                        </MessageHeader>
                        <MessageDetail xmlns="">
                             <szSecondaryUoM_UOM2/>
                        </MessageDetail>
                   </Request>
              </arg0>
         </part>
    </inputVariable>
    Any insight as to how to approach this would be appreciated. The WSDL and java code follow.
    WSDL:
    <?xml version="1.0" encoding="UTF8" ?>
    <definitions name="InventoryAdjustment" targetNamespace="http://xmlns.oracle.com/InventoryAdjustment" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/InventoryAdjustment" xmlns:ns1="http://e1.oracle.com/IAM" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partnerlink/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://schemas.oracle.com/bpel/extension" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:client="http://xmlns.oracle.com/InventoryAdjustment">
    <types>
    <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/InventoryAdjustment" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://e1.oracle.com/IAM" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partnerlink/" xmlns:client="http://xmlns.oracle.com/InventoryAdjustment" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://schemas.oracle.com/bpel/extension">
    <element name="InventoryAdjustmentProcessRequest">
    <complexType>
    <sequence>
    <element name="input" type="string" />
    </sequence>
    </complexType>
    </element>
    <element name="InventoryAdjustmentProcessResponse">
    <complexType>
    <sequence>
    <element name="result" type="string" />
    </sequence>
    </complexType>
    </element>
    </schema>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://e1.oracle.com/IAM" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partnerlink/" xmlns:client="http://xmlns.oracle.com/InventoryAdjustment" xmlns:ns2="http://schemas.oracle.com/bpel/extension">
    <xsd:import namespace="http://e1.oracle.com/IAM" schemaLocation="http://tigger:7777/orabpel/xmllib/InventoryAdjustmentRequest.xsd" />
    </xsd:schema>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://e1.oracle.com/IAM" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partnerlink/" xmlns:client="http://xmlns.oracle.com/InventoryAdjustment" xmlns:ns2="http://schemas.oracle.com/bpel/extension">
    <xsd:import namespace="http://e1.oracle.com/IAM" schemaLocation="http://tigger:7777/orabpel/xmllib/InventoryAdjustmentResponse.xsd" />
    </xsd:schema>
    </types>
    <message name="InventoryAdjustmentRequestMessage">
    <part name="payload" element="ns1:Request" />
    </message>
    <message name="InventoryAdjustmentResponseMessage">
    <part name="payload" element="ns1:Response" />
    </message>
    <portType name="InventoryAdjustment">
    <operation name="process">
    <input message="tns:InventoryAdjustmentRequestMessage" />
    <output message="tns:InventoryAdjustmentResponseMessage" />
    </operation>
    </portType>
    <binding name="InventoryAdjustmentBinding" type="tns:InventoryAdjustment">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="process">
    <soap:operation style="document" soapAction="process" />
    <input>
    <soap:body use="literal" />
    </input>
    <output>
    <soap:body use="literal" />
    </output>
    </operation>
    </binding>
    <service name="InventoryAdjustment">
    <port name="InventoryAdjustmentPort" binding="tns:InventoryAdjustmentBinding">
    <soap:address location="http://tigger:7777/orabpel/default/InventoryAdjustment/1.0" />
    </port>
    </service>
    <plnk:partnerLinkType name="InventoryAdjustment">
    <plnk:role name="InventoryAdjustmentProvider">
    <plnk:portType name="tns:InventoryAdjustment" />
    </plnk:role>
    </plnk:partnerLinkType>
    </definitions>
    java code:
    import javax.xml.namespace.QName;
    import javax.xml.rpc.JAXRPCException;
    import javax.xml.rpc.ParameterMode;
    import javax.xml.rpc.Service;
    import javax.xml.rpc.ServiceException;
    import javax.xml.rpc.ServiceFactory;
    import javax.xml.rpc.encoding.XMLType;
    import javax.xml.rpc.soap.SOAPFaultException;
    import org.apache.axis.client.Call;
    public class PostMessageClient {
         private static QName SERVICE_NAME;
         private static QName PORT_TYPE;
         private static QName OPERATION_NAME;
         private static String SOAP_ACTION;
         private static String STYLE;
         private static String THIS_NAMESPACE = "http://xmlns.oracle.com/InventoryAdjustment";
         static {
              SERVICE_NAME = new QName(THIS_NAMESPACE, "InventoryAdjustment");
              PORT_TYPE = new QName(THIS_NAMESPACE, "InventoryAdjustmentPort");
              OPERATION_NAME = new QName(THIS_NAMESPACE, "process");
              SOAP_ACTION = "process";
              STYLE = "message";
         public static void main(String[] args) {
                   try {
                        ServiceFactory serviceFactory = ServiceFactory.newInstance();
                        Service service = serviceFactory.createService(SERVICE_NAME);
                        Call call = (Call) service.createCall(PORT_TYPE);
                        call
                                  .setTargetEndpointAddress("http://tigger:7777/orabpel/default/InventoryAdjustment/1.0");
                        call.setProperty(Call.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
                        call.setProperty(Call.SOAPACTION_URI_PROPERTY, SOAP_ACTION);
                        call.setProperty(Call.OPERATION_STYLE_PROPERTY, STYLE);
                        call.setOperationName(OPERATION_NAME);
                        String xmlStr = "<Request xmlns=\"http://e1.oracle.com/IAM\"><MessageHeader><Operation>update</Operation></MessageHeader><MessageDetail xmlns=\"\"><szSecondaryUoM_UOM2/></MessageDetail></Request>";
                        System.out.println("PostMessageClient - calling");
                        String ret = (String) call.invoke(new Object[] { xmlStr });
                        System.out.println("ret = " + ret);
                   } catch (SOAPFaultException e) {
                        System.err.println("Generated fault: ");
                        System.out.println(" Fault Code = " + e.getFaultCode());
                        System.out.println(" Fault String = " + e.getFaultString());
                   } catch (JAXRPCException e) {
                        System.err.println("JAXRPC Exception: " + e.getMessage());
                   } catch (ServiceException e) {
                        System.err.println("Service Exception: " + e.getMessage());
                   } catch (Exception e) {
                        System.err.println("Service Exception: " + e.getMessage());
    }

    Just a tip: Use a tool as SoapUI to findout the correct SOAP request and related attributes for the SOAP request.
    Marc
    http://orasoa.blogspot.com

  • How to obtain response from asyn bpel process invoked through java

    I need to get the response from Asynchronous bpel process which im invoking through java using DeliveryPost method whose return type is void.

    I was able to write java code for the above process
    the code is here
    NormalizedMessage nm = new NormalizedMessage( );
    String uniqueBpelId = com.collaxa.cube.util.GUIDGenerator.generateGUID();
    java.util.Map msgProps = new HashMap();
    // NormalizedMessage res = deliveryService.request("OraFormsService", "initiate", nm);
    //deliveryService.post(null,null,null,null);
    msgProps.put("conversationId",uniqueBpelId);
    nm.setProperty("conversationId",uniqueBpelId);//to set the property for this message
    nm.addPart("payload",xml1);//to add to the payload of this message
    deliveryService.post("OraFormsService", "initiate", nm);
    // System.out.println("con1 "+IDeliveryConstants.STATE_HANDLED);
    StringBuffer buf = new StringBuffer();
    WhereCondition cond;
    cond = new WhereCondition(buf.append(SQLDefs.IM_state).append( " = " ).append(IDeliveryConstants.STATE_UNRESOLVED ).toString() );
    //cond = WhereConditionHelper.whereInstancesOpen();
    IInvokeMetaData imd[] = locator.listInvokeMessages(cond);
    String ids[] = new String[imd.length];
    // print out the partial process information
    // for processes in manual recovery status on invoke
    for (int i = 0; i < imd.length; i++)
    System.out.println("ConversationId=" +
    imd.getConversationId());
    System.out.println("ProcessId=" +
    imd[i].getProcessId());
    System.out.println("State=" + imd[i].getState());
    ids[i] = imd[i].getConversationId();
    Thanks for the Help

  • 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.

  • Unable to get Fault in reply from Synchronous BPEL Process

    Hi All,
    I am using a synchronous BPEL process which always throws a fault. The structure of this fault message is added to <bpel_process_name>.xsd.
    For WSDL faults I have added the following in .wsdl file:
    </wsdl:message>
    <wsdl:message name="BusinessFault">
    <wsdl:part name="payload" element="client:faultarea"/>
    </wsdl:message>
    <wsdl:portType name="FaultBPELProcess">
    <wsdl:operation name="process">
    <wsdl:input message="client:FaultBPELProcessRequestMessage"/>
    <wsdl:output message="client:FaultBPELProcessResponseMessage"/>
    <wsdl:fault message="client:BusinessFault" name="BusinessFault" />
    </wsdl:operation>
    </wsdl:portType>
    Now when I invoke this BPEL process, the fault is thrown and caught by the catch block at main scope. this catch assigns some values to the fault message and returns it back to the calling party.
    Fault QName is defined in the reply activity of catch block.
    On testing it, the reply never comes back and I can see the following error message in the logs:
    [2011-08-09T09:47:01.001+05:30] [soa_server1] [NOTIFICATION] [] [oracle.wsm.agent.WSMAgent] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [WEBSERVICE_PORT.name: FaultBPELProcess_pt] [APP: soa-infra] [J2EE_MODULE.name: fabric] [WEBSERVICE.name: faultbpelprocess_client_ep] [J2EE_APP.name: soa-infra] Message Type is normalized, exiting agent.processFault()
    [2011-08-09T09:47:01.001+05:30] [soa_server1] [NOTIFICATION] [] [oracle.wsm.agent.WSMAgent] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [WEBSERVICE_PORT.name: FaultBPELProcess_pt] [APP: soa-infra] [J2EE_MODULE.name: fabric] [WEBSERVICE.name: faultbpelprocess_client_ep] [J2EE_APP.name: soa-infra] Message Type is normalized, exiting agent.processFault()
    [2011-08-09T09:47:01.060+05:30] [soa_server1] [ERROR] [OWS-04086] [oracle.webservices.service] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [APP: soa-infra] javax.xml.rpc.soap.SOAPFaultException[[
    at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.generateSoapFaultException(WebServiceEntryBindingComponent.java:1094)
    at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.processIncomingMessage(WebServiceEntryBindingComponent.java:887)
    at oracle.integration.platform.blocks.soap.FabricProvider.processMessage(FabricProvider.java:113)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:1187)
    at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:1081)
    at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:581)
    at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:232)
    at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:192)
    at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:459)
    at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPost(FabricProviderServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    [2011-08-09T09:47:01.061+05:30] [soa_server1] [ERROR] [OWS-04115] [oracle.webservices.service] [tid: [ACTIVE].ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 11d1def534ea1be0:53ccedc:131a8598fc1:-8000-0000000000000ed1,0:3] [APP: soa-infra] An error occurred for port: FabricProvider: javax.xml.rpc.soap.SOAPFaultException.
    If I try to invoke the endpoint uri, it gets invoked and returns the response.
    Any pointers will be appreciated!!

    I tried the same scenario which you told and it's working for me...I'll paste the contents for your reference...
    BPELProcess.bpel
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
    -->
    <process name="BPELProcess1"
    targetNamespace="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:client="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
    <!--
    PARTNERLINKS
    List of services participating in this BPEL process
    -->
    <partnerLinks>
    <!--
    The 'client' role represents the requester of this service. It is
    used for callback. The location and correlation information associated
    with the client role are automatically set using WS-Addressing.
    -->
    <partnerLink name="bpelprocess1_client" partnerLinkType="client:BPELProcess1" myRole="BPELProcess1Provider"/>
    </partnerLinks>
    <!--
    VARIABLES
    List of messages and XML documents used within this BPEL process
    -->
    <variables>
    <!-- Reference to the message passed as input during initiation -->
    <variable name="inputVariable" messageType="client:BPELProcess1RequestMessage"/>
    <!-- Reference to the message that will be returned to the requester-->
    <variable name="outputVariable" messageType="client:BPELProcess1ResponseMessage"/>
    <variable name="FaultVar_2" messageType="client:BusinessFault"/>
    <variable name="FaultVar" messageType="client:BusinessFault"/>
    </variables>
    <faultHandlers>
    <catch faultName="client:BusinessFault" faultVariable="FaultVar">
    <reply name="Reply_1" variable="FaultVar"
    partnerLink="bpelprocess1_client" portType="client:BPELProcess1"
    operation="process" faultName="client:BusinessFault"/>
    </catch>
    </faultHandlers>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess1.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocess1_client" portType="client:BPELProcess1" operation="process" variable="inputVariable" createInstance="yes"/>
    <!-- Generate reply to synchronous request -->
    <assign name="Assign_1">
    <copy>
    <from expression="'A business fault occured'"/>
    <to variable="FaultVar_2" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    <throw name="Throw_1" faultName="client:BusinessFault"
    faultVariable="FaultVar_2"/>
    <reply name="replyOutput" partnerLink="bpelprocess1_client" portType="client:BPELProcess1" operation="process" variable="outputVariable"/>
    </sequence>
    </process>
    BPELProcess1.wsdl
    <?xml version= '1.0' encoding= 'UTF-8' ?>
    <wsdl:definitions
    name="BPELProcess1"
    targetNamespace="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns:ns1="http://schemas.oracle.com/bpel/extension"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:client="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    >
    <plnk:partnerLinkType name="BPELProcess1">
    <plnk:role name="BPELProcess1Provider">
    <plnk:portType name="client:BPELProcess1"/>
    </plnk:role>
    </plnk:partnerLinkType>
    <wsdl:import namespace="http://schemas.oracle.com/bpel/extension" location="RuntimeFault.wsdl"/>
    <wsdl:types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://xmlns.oracle.com/Test_jws/TestSync/BPELProcess1" schemaLocation="xsd/BPELProcess1.xsd"/>
    </schema>
    </wsdl:types>
    <wsdl:message name="BPELProcess1RequestMessage">
    <wsdl:part name="payload" element="client:process"/>
    </wsdl:message>
    <wsdl:message name="BPELProcess1ResponseMessage">
    <wsdl:part name="payload" element="client:processResponse"/>
    </wsdl:message>
    <wsdl:message name="BusinessFault">
    <wsdl:part name="payload" element="client:processResponse"/>
    </wsdl:message>
    <wsdl:portType name="BPELProcess1">
    <wsdl:operation name="process">
    <wsdl:input message="client:BPELProcess1RequestMessage"/>
    <wsdl:output message="client:BPELProcess1ResponseMessage"/>
    <wsdl:fault message="client:BusinessFault" name="BusinessFault" />
    </wsdl:operation>
    </wsdl:portType>
    </wsdl:definitions>
    Hope that helps you...
    Thanks,
    N

  • Asynchronous BPEL Process called from an empty BPEL process getting lost.

    Hi
    I have an empty BPEL process calling an asynchronous BPEL process. The empty process is triggered by a read file activity. It finishes successfully and even calls the asynchronous process. There is no error thrown but the called asynchronous process does not show up in the dashboard.
    When this asynchronous process is manually run from the console I get the page stating 'Cannot find the specified instance'.
    I am using Jdev 10.1.3.2 and SOA Suit 10.1.3.1.
    Any suggestion as to why this is happening and what is the remedy?
    Buddhadev.

    Check your log as soon as you find that the parent process has found its way into the console. More information on logging can be found here - http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28982/logging.htm
    Not quite sure why its so, but since 10.1.3, I've observed that the console simply doesn't show errored processes at times. So, checking the log can be a starting point in diagnosing the real issue.
    HTH
    Antony

  • 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

  • Unable to invoke a EJB from a BPEL process

    I am unable to invoke a EJB from a BPEL process. Whenever I try to test it from the oracle EM, I get the below exception. I am using WebLogic 10.3.3, SOA suite 11.1.1.3 and JDev 11.1.1.3 .
    This is what I see from the EM....
    Non Recoverable System Fault :
    javaInterface attribute for the binding is missing or the inteface class is not available.
    Below is a part of the stack trace from the soa server log…
    Caused By: oracle.classloader.util.AnnotatedClassNotFoundException:
    Missing class: com.abc.GreetingEJBBean
    Dependent class: oracle.integration.platform.blocks.ejb.SDOEjbReferenceD
    elegateImpl
    Loader: sun.misc.Launcher$AppClassLoader@20929799
    Code-Source: /C:/Oracle_latest/Middleware/home_11gR1/Oracle_SOA1/soa
    /modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar
    Configuration: /C:/Oracle_latest/Middleware/home_11gR1/Oracle_SOA1/soa
    /modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar
    Piece of xml from the composite.xml
    <reference name="GreetingService"
    ui:wsdlLocation="http://123.45.218.140:7001/GreetingEJBBean/GreetingEJBBeanService?wsdl">
    <interface.wsdl interface="http://abc.com/#wsdl.interface(GreetingEJBBean)" />
    <binding.ejb uri="GreetingEJB-GreetingEJB-GreetingEJB"
    javaInterface="com.abc.GreetingEJB"/>
    </reference>
    Looks like its not able to find the javaInterface mentioned above.
    I have a simple EJB with one business method and a very simple BPEL process.
    @Stateless(name = "GreetingEJB", mappedName = "GreetingEJB-GreetingEJB-GreetingEJB")
    @WebService
    public class GreetingEJBBean implements GreetingEJB {
    public GreetingEJBBean() {
    public String greetUser(String name){
    return ("Hello " + name);
    Any help would be greatly appreciated.

    I haven't tried from a BPEL process, but I have had success (as in Lucas's blogs) of using services and references as EJB Java Interface. This is with EJB java interfaces solely of base types (i.e. String foo(String s)).
    At high level here's what I have noted so far:
    1. Per Lucas's blog, @javaInterface is not being added to the ejb.binding automatically but it's not clear to me when this is and is not required given that interface.java is specified for the reference or service. Would interface.java and @javaInterface ever be different? I've been adding @javaInterface manually anyways since Lucas is a smart guy and I'd rather avoid errors. :-)
    2. Dropping an EJB interface jar in SCA-INF/lib works, but I've had the problem that the JDeveloper SOA Plugin doesn't see those classes until I stop and restart JDeveloper. Until then, I'm confronted with the java->wsdl mapping error. I was sort of primed to figure this one out since I ran into similar issues with SOA SpringBean components.
    3. Dropping EJB interface source in SCA-INF/src is more reliable, because then I can build the project (i.e. create SCA-INF/classes) and the JDeveloper SOA Plugin seems to resolve these brand new classes immediately.
    4. I've tried to invoke an EJB java-interface reference with a slightly complicated java interface (a class parameter with some fields, one of which is an array of another class). The auto-generated WSDL doesn't look exactly right to me (but I'm new to JAXB). Mediator maps to it just fine and the project compiles and deploys normally but fails at runtime. I have not researched in depth. It's not clear to me from the documentation and release notes whether I should expect for it to work, or whether I should expect to have to create my own JAXB mapping. If the latter, I really need a good example!

  • 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

  • How to call a Asynchronous bpel process from a PLSQL procedure?

    How to call a Asynchronous bpel process from a PLSQL procedure?

    Hi,
    You could do something smart and technical very spiffy with soap-stacks in the database and/or dbms_ws/dbms_http. But I allways find AQ with AQ-adapter the simplest. Let Pl/sql enqueue a message on an aq-queue and subscribe an aq-adapter process on it. That can call your async-bpel process. If you want to get answer back in pl/sql, let the aq-adapter process enqueue a response message on another queue or on the same queue with another consumer name. Give it a correlation-id that you provided in the payload of your request message. Your pl/sql process can then do a dequeue on that correlation-id. It will sit and wait until a message with that correlation id is enqueued on the queue.
    Regards,
    Martien

  • 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

  • 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.

Maybe you are looking for

  • Few Mapping Transformations

    Hi All, I have, say, 3 DataStore's. I have to send few fields from DSO1 to DSO3 and rest from DSO2 to DSO3. There are many other fields on 3 of the DSO's that doesn't feed one another. Now, when I am trying to map some fields from DSO1 to DSO3 and tr

  • 'Windows does not recognise USB'

    Need serious help guys, brought a new ipod today and I put my iPod in and it puts some some songs onto my iPod and a couple pictures. Then 1 hour later I find some more songs and plug my iPod back in and now it's not recognising it. This USB slot is

  • Follow instructions at N1 Releases Notes doesn't work for V240

    I followed exactly what's written here: Solaris based Sun Fire X4100 or X4200 management server: 1. Stop the server and agent. # su - n1gsps -c "/opt/SUNWn1sps/N1_Service_Provisioning_System_5.1/server/bin/cr_server stop" # su - n1gsps -c "/opt/SUNWn

  • Report based on mutually exclusive items:

    Hi guys, I am trying to create a parameterized report based on mutually exclusive items: I have a Select List item "P1_Property_type" which has these values ( office , apartment ), if 'office' is chosen then the report should consider ONLY the value

  • Send PO Mail with PDF File that Chinese character doestn't display correctl

    Send PO Mail with PDF File that Chinese character doestn't display ! I am using RSTXPDFT4 , tried different computer, some Adobe Reader can read some are Blank ....... why ?