The soap message is wrong for an rpc/lit response.
The <ns2:outputDataType> element should be:
<returnData>
Per RPC/Lit rules, the part accessors come from the part names in the
message/parts of the wsdl. They are also supposed to be unqualified
per wsi-bp rules (although some older toolkits do qualify them so our
RPCInInterceptor will allow that, but the out interceptor will not
qualify them).
Dan
On Jul 17, 2008, at 2:14 PM, Manolescu, Radu (IT) wrote:
We have implemented a CXF client from a counterparty-supplied WSDL.
As we call one operation, we get back a response containing valid
business messages.
However, the RPCInInterceptor throws an exception because it "could
not
find matching RPC/Literal part".
We have checked the response, and it contains the element
"outputDataType", which is mentioned in the exception.
In the response, this element's namespace is declared as
"http://www.company.com/soa/SubmitStandardOutput.xsd".
When we look in the WSDL, I can see that the element outputDataType is
declared in the operation's return type, with the same namespace.
We do not understand why CXF "could not find matching RPC/Literal
part".
We understand that CXF does not support RPC/Encoded.
However, we have checked that the WSDL conforms to the RPC/Literal
restrictions:
* Each message contains zero or more parts.
* Each part points to a schema type definition that describes the
content of that part.
* In the SOAP binding, the style is "RPC" and the use is
"literal".
What are we missing?
---------- EXCEPTION: ----------
Caused by: org.apache.cxf.interceptor.Fault: Found element
{http://www.company.com/soa/SubmitStandardOutput.xsd}outputDataType
but
could not find matching RPC/Literal part
at
org
.apache.cxf.binding.soap.interceptor.RPCInInterceptor.handleMessage(R
PCInInterceptor.java:128)
---------- RESPONSE: ----------
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:submitDataSetResponse
xmlns="http://www.company.com/soa/submitDataSet"
xmlns:ns1="http://www.company.com/soa/submitDataSet">
<ns2:outputDataType
xmlns="http://www.company.com/soa/SubmitStandardOutput.xsd"
xmlns:ns2="http://www.company.com/soa/SubmitStandardOutput.xsd">
<!-- Valid business content, removed
from here for simplicity -->
</ns2:outputDataType>
</ns1:submitDataSetResponse>
</soapenv:Body>
</soapenv:Envelope>
---------- WSDL: ----------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="some namespaces omitted"
xmlns:typeOut="http://www.company.com/soa/SubmitStandardOutput.xsd">
<wsdl:message name="someOpResponse">
<wsdl:part name="returnData"
type="typeOut:outputDataType">
<wsdl:documentation
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
acknowledge data set submitted
</wsdl:documentation>
</wsdl:part>
</wsdl:message>
<wsdl:portType name="SomeOp">
<wsdl:operation name="someOp">
<wsdl:documentation
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
submit data set
</wsdl:documentation>
<wsdl:input message="tns:someOpRequest" />
<wsdl:output message="tns:someOpResponse" />
<wsdl:fault name="faultReturn"
message="tns:faultReturnType" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SomeOp_Binding"
type="tns:SomeOp">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"
/>
<wsdl:operation name="someOp">
<soap:operation
soapAction="http://www.company.com/soa/2007-08-16/someOp"
style="rpc" />
<wsdl:input>
<mime:multipartRelated>
<mime:part>
<soap:body use="literal"
namespace="http://www.company.com/soa/2007-08-16/someOp" />
</mime:part>
<mime:part>
<mime:content
part="dataSet_attachment"
type="application/octetstream" />
</mime:part>
</mime:multipartRelated>
<soap:header message="tns:someOpHeader"
part="standardAttachmentInfor"
use="literal"
wsdl:required="true">
</soap:header>
<wsp:Policy
xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
<wsp:PolicyReference
URI="#SecurityTokens" />
<wsp:Policy wsu:Id="SignedPart1"
xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
<wsp:Policy>
<wssp:Integrity
wsp:Usage="wsp:Required"
xmlns:wssp="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wssp:TokenInfo>
<wssp:SecurityToken
wsp:Preference="10" wsp:Usage="wsp:Required">
<wssp:TokenType>
wssp:X509v3
</wssp:TokenType>
</wssp:SecurityToken>
</wssp:TokenInfo>
<wssp:MessageParts
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns2="http://www.company.com/soa/StandardAttachmentInfor.xsd">
/SOAP-ENV:Envelope/SOAP-ENV:Header/ns2:standardAttachmentInfor
</wssp:MessageParts>
</wssp:Integrity>
</wsp:Policy>
<wsp:Policy>
<wssp:Integrity
wsp:Usage="wsp:Required"
xmlns:wssp="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wssp:TokenInfo>
<wssp:SecurityToken
wsp:Preference="10" wsp:Usage="wsp:Required">
<wssp:TokenType>
wssp:X509v3
</wssp:TokenType>
</wssp:SecurityToken>
</wssp:TokenInfo>
<wssp:MessageParts
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://www.company.com/soa/2006-09-30/companyWSHeader.xsd">
/SOAP-ENV:Envelope/SOAP-ENV:Header/ns1:companyWSHeader
</wssp:MessageParts>
</wssp:Integrity>
</wsp:Policy>
<wsp:Policy>
<wssp:Integrity
wsp:Usage="wsp:Required"
xmlns:wssp="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wssp:TokenInfo>
<wssp:SecurityToken
wsp:Preference="10" wsp:Usage="wsp:Required">
<wssp:TokenType>
wssp:X509v3
</wssp:TokenType>
</wssp:SecurityToken>
</wssp:TokenInfo>
<wssp:MessageParts
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://www.company.com/soa/schemas/2005/09/attachmenthash">
/SOAP-ENV:Envelope/SOAP-ENV:Header/ns1:attachmentHash
</wssp:MessageParts>
</wssp:Integrity>
</wsp:Policy>
</wsp:Policy>
</wsp:Policy>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"
namespace="http://www.company.com/soa/2007-08-16/someOp" />
</wsdl:output>
<wsdl:fault name="faultReturn">
<soap:fault name="faultReturn"
use="literal" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
Radu Manolescu
Morgan Stanley | Technology
2000 Westchester Ave, 1st Floor | Purchase, NY 10577
Phone: +1 914 225-5871
[EMAIL PROTECTED]
--------------------------------------------------------
NOTICE: If received in error, please destroy and notify sender.
Sender does not intend to waive confidentiality or privilege. Use of
this email is prohibited when received in error.
---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog