Improper message is being built when invoking a doc/lit service with a message 
having a simpleType part
-------------------------------------------------------------------------------------------------------

                 Key: ODE-486
                 URL: https://issues.apache.org/jira/browse/ODE-486
             Project: ODE
          Issue Type: Bug
          Components: Axis2 Integration
    Affects Versions: 1.2
            Reporter: Matthieu Riou


>From the mailing-list (see also the attachment):

I have an existing web service operation that I want to invoke from a BPEL
process.
My process assigns a literal value to the input variable for the request
message then invokes the operation.
I am having trouble initializing the input variable for the invoke in a way
that causes the right SOAP request to be sent to the service.

The service name is simpleLogService.
The operation is logLine.
The binding for the operation specifies style="document", which may be a
relevant factor. Or not.


I tested the web service operation using soapUI.
The request message (as generated by soapUI from the WSDL) looks like this:

<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
  <soapenv:Header/>
  <soapenv:Body>
     <outLine>an example log line </outLine>
  </soapenv:Body>
</soapenv:Envelope>

The operation completes successfully, writing the expected string to a log
file.


I tried running the BPEL process.

The assign looks like this:
    <assign>
      <copy>
       <from>
         <literal xmlns:sim="http://simpleLogService.examples/"; >
             <sim:outLine>
                initialized line
             </sim:outLine>
          </literal>
        </from>
      <to variable="logInMsg" part="outLine"/>
       </copy>
      </assign>


The invoke resulted in a fault when Tomcat tried to run the operation.

Looking in the Tomcat log (stdout_*.log) I see the fault is:
java.lang.ClassCastException: org.apache.axis.message.Text cannot be cast
to org.apache.axis.message.SOAPBodyElement

In the log, the SOAP request message sent by ODE looks like this:

</soapenv:Header><soapenv:Body>
                initialized line
             </soapenv:Body></soapenv:Envelope>

This does not match the WSDL definition of the service.  It seems to be
missing the <outline> </outline> tokens that were present in the literal.
But at least the assign got executed.  The invoke was executed and did not
complain about an improperly initialize input variable.

I have attached a zip file, simpleBpelProcess_1.zip, containing the process
and the Apache log.

(See attached file: simpleBpelProcess_1.zip)

As a second experiment, I tried modifying the assign to specify the empty
namespace for <outLine> as follows:

    <assign>
      <copy>
       <from>
         <literal xmlns="" >
             <outLine>
                initialized line
             </outLine>
          </literal>
        </from>
      <to variable="logInMsg" part="outLine"/>
       </copy>
      </assign>

That resulted in an improperly initialized variable:
ERROR - GeronimoLog.error(104) | org.apache.ode.bpel.common.FaultException:
The variable logInMsg isn't properly initialized.
>From this, I guess that the empty namespace is definitely wrong.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to