[ 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.