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.