[
https://issues.apache.org/jira/browse/CXF-2190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-2190.
------------------------------
Resolution: Fixed
Fix Version/s: 2.2.2
Assignee: Daniel Kulp
> Invalid message sent using Dispatch
> -----------------------------------
>
> Key: CXF-2190
> URL: https://issues.apache.org/jira/browse/CXF-2190
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Affects Versions: 2.2.1
> Reporter: Alessio Soldano
> Assignee: Daniel Kulp
> Fix For: 2.2.2
>
>
> We're running this Dispatch client using CXF 2.2.1:
> URL wsdlURL = new URL("http://" + getServerHost() +
> ":8080/jaxws-jbws1611?wsdl");
> QName serviceName = new QName(targetNS, "PingEndpointService");
> QName portName = new QName(targetNS, "PingEndpointPort");
> Service service = Service.create(wsdlURL, serviceName);
> Dispatch dispatch = service.createDispatch(portName, Source.class,
> Mode.PAYLOAD);
>
> dispatch.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY,
> true);
>
> dispatch.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY,
> "uri:placeBuyOrder");
> String payload = "<ns1:ping xmlns:ns1='" + targetNS + "'/>";
> Source retObj = (Source)dispatch.invoke(new StreamSource(new
> StringReader(payload)));
> and we get this exception on server side:
> org.apache.cxf.interceptor.Fault: Message part
> {http://cxf.apache.org/jaxws/dispatch}Invoke was not recognized. (Does it
> exist in service WSDL?)
> at
> org.apache.cxf.interceptor.BareInInterceptor.handleMessage(BareInInterceptor.java:133)
> at
> org.apache.cxf.binding.soap.interceptor.RPCInInterceptor.handleMessage(RPCInInterceptor.java:111)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89)
> at
> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
> at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:357)
> at
> org.jboss.wsf.stack.cxf.ServletControllerExt.invoke(ServletControllerExt.java:160)
> at
> org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:61)
> at org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:134)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> [...]
> Capturing the message on the wire reveals the following message being sent:
> <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:Invoke
> xmlns:ns1="http://cxf.apache.org/jaxws/dispatch"><ns1:ping
> xmlns:ns1="http://jbws1611.jaxws.ws.test.jboss.org/"
> /></ns1:Invoke></soap:Body></soap:Envelope>
> which contains the ns1:Invoke element causing the issue on server side.
> The WSDL of the service is:
> <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions
> name="PingEndpointService"
> targetNamespace="http://jbws1611.jaxws.ws.test.jboss.org/"
> xmlns:ns1="http://schemas.xmlsoap.org/wsdl/soap/http"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://jbws1611.jaxws.ws.test.jboss.org/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <wsdl:message name="ping">
> </wsdl:message>
> <wsdl:message name="pingResponse">
> <wsdl:part name="return" type="xsd:string">
> </wsdl:part>
> </wsdl:message>
> <wsdl:portType name="PingEndpoint">
> <wsdl:operation name="ping">
> <wsdl:input message="tns:ping" name="ping">
> </wsdl:input>
> <wsdl:output message="tns:pingResponse" name="pingResponse">
> </wsdl:output>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="PingEndpointServiceSoapBinding" type="tns:PingEndpoint">
> <soap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http" />
> <wsdl:operation name="ping">
> <soap:operation soapAction="" style="rpc" />
> <wsdl:input name="ping">
> <soap:body namespace="http://jbws1611.jaxws.ws.test.jboss.org/"
> use="literal" />
> </wsdl:input>
> <wsdl:output name="pingResponse">
> <soap:body namespace="http://jbws1611.jaxws.ws.test.jboss.org/"
> use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="PingEndpointService">
> <wsdl:port binding="tns:PingEndpointServiceSoapBinding"
> name="PingEndpointPort">
> <soap:address location="http://127.0.0.1:8080/jaxws-jbws1611" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Please note this is happening starting from CXF 2.2.1 (no issue with 2.2) and
> the wsdl is RPC/Lit while all tests with Dispatch in the systests seem to be
> with DOC/Lit contract services.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.