0

I have the following simple bpel process:

  1. receive order request
  2. reply to order request (a correlation set is instantiated - order id)
  3. scope with event handlers inside. Currently there is defined a single event (cancel order) to which I send a reply to the client. The <onEvent> has a correlation set (order id again) which is matched against an instantiated one. The problem is that after I reply to the onEvent ODE says that there is no output message in the message exchange.

Here is the onEvent code (with assigns removed):

<bpel:scope>
        <bpel:eventHandlers>
            <bpel:onEvent partnerLink="orderPlacementPL" operation="cancelOrder"
                          messageType="tns:cancelOrderReqMessage"
                          portType="tns:orderPlacementPT" variable="Input_CancelClientOrder"
                          messageExchange="CancelMex">
                <bpel:correlations>
                    <bpel:correlation set="OrderId_CS" initiate="no"/>
                </bpel:correlations>
                <bpel:scope name="Cancel Event Scope">
                    <bpel:sequence>
                        <bpel:assign name="Initialize client reply message">....</bpel:assign>
                        <bpel:reply partnerLink="orderPlacementPL" operation="cancelOrder"
                                    variable="Output_CancelClientOrder"
                                    portType="tns:orderPlacementPT"
                                    name="Send Reply for Cancel Operation"
                                    messageExchange="CancelMex"/>
                    </bpel:sequence>
                </bpel:scope>
            </bpel:onEvent>
        </bpel:eventHandlers>

        <bpel:sequence name="Event Loop - wait 2 min">
            <bpel:wait>
                <bpel:for>'PT2M'</bpel:for>
            </bpel:wait>
        </bpel:sequence>
    </bpel:scope>

The stack trace is:

ERROR -  Error processing response for MEX {MyRoleMex#hqejbhcnphr7dn78tn3hgb [Client hqejbhcnphr7dn78tn3hga] calling {http://orders}OrderPlacementService.cancelOrder(...)} {org.wso2.carbon.bpel.core.ode.integration.BPELProcessProxy}
java.lang.NullPointerException: Null message.
at org.wso2.carbon.bpel.core.ode.integration.utils.SOAPUtils.checkForNullValuesInResponse(SOAPUtils.java:397)
at org.wso2.carbon.bpel.core.ode.integration.utils.SOAPUtils.createSOAPResponse(SOAPUtils.java:70)
at org.wso2.carbon.bpel.core.ode.integration.BPELProcessProxy.onResponse(BPELProcessProxy.java:410)
at org.wso2.carbon.bpel.core.ode.integration.BPELProcessProxy.onAxisServiceInvoke(BPELProcessProxy.java:189)
at org.wso2.carbon.bpel.core.ode.integration.axis2.receivers.BPELMessageReceiver.handleInOutOperation(BPELMessageReceiver.java:100)
at org.wso2.carbon.bpel.core.ode.integration.axis2.receivers.BPELMessageReceiver.invokeBusinessLogic(BPELMessageReceiver.java:73)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:199)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:164)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.wso2.carbon.server.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:154)
at org.wso2.carbon.server.TomcatServer$1.invoke(TomcatServer.java:254)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:396)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:356)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1534)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Ramya Selvarani
  • 499
  • 1
  • 9
  • 23
Eugen
  • 2,292
  • 3
  • 29
  • 43
  • I checked if the control flow reaches the reply. It does and the error is thrown after the 'Cancel Event Scope' scope is exited. – Eugen Jun 22 '12 at 09:13
  • To me it looks like there is something wrong with the response message, since the integration layer reports the response is null. This is however not ODE code but WSO BPS code, so I'd approach these guys directly or wait until they answer here. – vanto Jun 22 '12 at 13:22
  • No its not null for sure. I even got a couple of times the correct answer, but very rarely! It seems like a concurrency bug. Thanks for suggestion. – Eugen Jun 22 '12 at 13:35
  • let me try this out and get back to you. I would like to know which database is used to store bpel data – warunapww Jun 23 '12 at 15:54

0 Answers0