You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by si...@alice.it on 2008/04/01 11:38:16 UTC

Transport mysteres

Hi guys,
     I'm experimenting some troubles using ODE-JBI-1.1 in ServiceMix 3.1.2; I wrote the following BPEL code:

<invoke inputVariable="requestInvokeCCCheckMessage" operation="cccheck" outputVariable="replyInvokeCCCheckMessage" partnerLink="CCCheckPartnerLink" portType="cccheck:cccheckPortType"/>
            <assign>
              <copy>
                <from part="app" variable="replyInvokeCCCheckMesssage"/>
                <to variable="approvedVariable"/>
              </copy>
            </assign>

where CCCheck is a POJO spring bean.
and requesteInvokeCCCheckMessage and replyCCCheckMessage are the following WSDL defined messages:

<wsdl:message name="cccheckRequestMessage">
    <wsdl:part name="c" type="xsd:integer"/>
  </wsdl:message>
  <wsdl:message name="cccheckResponseMessage">
    <wsdl:part name="app" type="xsd:boolean"/>
  </wsdl:message>

respectively in type.

In execution I observe the following message flow:

DEBUG - SedaFlow                       - Called Flow send
DEBUG - SedaQueue                      - org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@19acbbd dequeued exchange: InOut[
  id: ID:127.0.1.1-11909465d3b-4:0
  status: Active
  role: provider
  service: {http://localhost:8080/CCCheck}CCCheckService
  endpoint: CCCheckPort
  operation: {http://localhost:8080/CCCheck}cccheck
  in: <?xml version="1.0" encoding="UTF-8"?><message><c>3</c></message>
]

mismatching from the soap message I'm expecting while back :

DEBUG - SedaFlow                       - Called Flow send
DEBUG - SedaQueue                      - org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@1ce33e dequeued exchange: InOut[
  id: ID:127.0.1.1-11909465d3b-4:0
  status: Active
  role: consumer
  service: {http://localhost:8080/CCCheck}CCCheckService
  endpoint: CCCheckPort
  operation: {http://localhost:8080/CCCheck}cccheck
  in: <?xml version="1.0" encoding="UTF-8"?><message><c>3</c></message>
  out: <?xml version="1.0" encoding="UTF-8"?><cccheckResponse xmlns="http://localhost:8080/CCCheck"><app xmlns="http://localhost:8080/CCCheck">false</app></cccheckResponse>
]

matching.
Now come the problem: the assignment in the BPEL code fails with the following alert:

ERROR - ASSIGN                         - Assignment Fault: {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=100,faultExplanation=The R-Value must select one item

having nothing else.
I attempt to change the code in the following way:
<assign>
              <copy>
                <from> $replyInvokeCCCheckMessage.app </from>
                <to variable="approvedVariable"/>
              </copy>
</assign>

And I obtain this error:

org.apache.ode.bpel.elang.xpath20.compiler.WrappedResolverException: org.apache.ode.bpel.common.FaultException: Unknown variable replyInvokeCCCheckMessage.app
        at org.apache.ode.bpel.elang.xpath20.runtime.JaxpVariableResolver.resolveVariable(JaxpVariableResolver.java:109)
        at net.sf.saxon.xpath.JAXPVariable.evaluateVariable(JAXPVariable.java:117)
        at net.sf.saxon.expr.VariableReference.evaluateVariable(VariableReference.java:244)
        at net.sf.saxon.expr.VariableReference.iterate(VariableReference.java:217)
        at net.sf.saxon.xpath.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:256)
        at org.apache.ode.bpel.elang.xpath20.runtime.XPath20ExpressionRuntime.evaluate(XPath20ExpressionRuntime.java:179)
        at org.apache.ode.bpel.elang.xpath20.runtime.XPath20ExpressionRuntime.evaluate(XPath20ExpressionRuntime.java:97)
        at org.apache.ode.bpel.runtime.ExpressionLanguageRuntimeRegistry.evaluate(ExpressionLanguageRuntimeRegistry.java:80)
        at org.apache.ode.bpel.runtime.ASSIGN.evalRValue(ASSIGN.java:193)
        at org.apache.ode.bpel.runtime.ASSIGN.copy(ASSIGN.java:356)
        at org.apache.ode.bpel.runtime.ASSIGN.run(ASSIGN.java:79)
        at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
        at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
        at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:836)
        at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:336)
        at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:318)
        at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:364)
        at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:335)
        at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:334)
        at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:173)
        at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:333)
        at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:330)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.ode.bpel.common.FaultException: Unknown variable replyInvokeCCCheckMessage.app
        at org.apache.ode.bpel.elang.xpath20.runtime.JaxpVariableResolver.resolveVariable(JaxpVariableResolver.java:95)
        ... 29 more
ERROR - ASSIGN                         - Assignment Fault: {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=100,faultExplanation=Unknown variable replyInvokeCCCheckMessage.app

The only way I've got no error is the following:

<assign>
              <copy>
                <from> $replyInvokeCCCheckMessage,app </from>
                <to variable="approvedVariable"/>
              </copy>
</assign>

but the selection stores in approvedVariable something like:

<app xmlns="http://localhost:8080/CCCheck">false</app>

and I can't use this value.
Well where is the problem? Why I can't select in a non-faulting way the value while I may do it correctly in the start of may service??
Have someone a solution???
Thank you all guys, regards

Simone