[
https://issues.apache.org/jira/browse/CXF-3502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jimma resolved CXF-3502.
------------------------
Resolution: Fixed
> IllegalArgumentException: wrong number of arguments with Dispatch/Provider
> service
> ----------------------------------------------------------------------------------
>
> Key: CXF-3502
> URL: https://issues.apache.org/jira/browse/CXF-3502
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Affects Versions: 2.4, 2.3.4
> Reporter: jimma
> Assignee: jimma
> Fix For: 2.4.1, 2.3.5
>
>
> If the part contains a header and it's partIndex is 0, there are two empty
> object will be added to the parameter list to call the provider invoke
> method.
> WSDL:
> <wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://apache.org/header_test/rpc"
> xmlns:x1="http://apache.org/header_test/rpc/types"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://apache.org/header_test/rpc" name="TestHeaderWSDL">
> <wsdl:types>
> <schema targetNamespace="http://apache.org/header_test/rpc/types"
> xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:x1="http://apache.org/header_test/rpc/types"
> elementFormDefault="qualified">
> <element name="headerMessage">
> <complexType>
> <sequence>
> <element name="headerVal" type="string"/>
> </sequence>
> </complexType>
> </element>
> </schema>
> </wsdl:types>
> <wsdl:message name="testHeader1Request">
> <wsdl:part name="inHeader" element="x1:headerMessage"/>
> <wsdl:part name="in" type="xsd:string"/>
> </wsdl:message>
> <wsdl:message name="testHeader1Response">
> <wsdl:part name="out" type="xsd:string"/>
> </wsdl:message>
> <wsdl:message name="testInOutHeaderRequest">
> <wsdl:part name="in" type="xsd:string"/>
> <wsdl:part name="inOutHeader" element="x1:headerMessage"/>
> </wsdl:message>
> <wsdl:message name="testInOutHeaderResponse">
> <wsdl:part name="out" type="xsd:string"/>
> <wsdl:part name="inOutHeader" element="x1:headerMessage"/>
> </wsdl:message>
> <wsdl:portType name="TestRPCHeader">
> <wsdl:operation name="testHeader1">
> <wsdl:input name="testHeader1Request"
> message="tns:testHeader1Request"/>
> <wsdl:output name="testHeader1Response"
> message="tns:testHeader1Response"/>
> </wsdl:operation>
> <wsdl:operation name="testInOutHeader">
> <wsdl:input name="testInOutHeaderRequest"
> message="tns:testInOutHeaderRequest"/>
> <wsdl:output name="testInOutHeaderResponse"
> message="tns:testInOutHeaderResponse"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="TestHeader_SOAPRPCBinding" type="tns:TestRPCHeader">
> <soap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="testHeader1">
> <soap:operation/>
> <wsdl:input name="testHeader1Request">
> <soap:body message="tns:testHeader1Request" parts="in"
> use="literal" namespace="http://apache.org/header_test"/>
> <soap:header message="tns:testHeader1Request" part="inHeader"
> use="literal"/>
> </wsdl:input>
> <wsdl:output name="testHeader1Response">
> <soap:body message="tns:testHeader1Response" use="literal"
> namespace="http://apache.org/header_test"/>
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="testInOutHeader">
> <soap:operation/>
> <wsdl:input>
> <soap:body message="tns:testInOutHeaderRequest" parts="in"
> use="literal" namespace="http://apache.org/header_test"/>
> <soap:header message="tns:testInOutHeaderRequest"
> part="inOutHeader" use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body message="tns:testInOutHeaderResponse" parts="out"
> use="literal" namespace="http://apache.org/header_test"/>
> <soap:header message="tns:testInOutHeaderRequest"
> part="inOutHeader" use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SOAPRPCHeaderService">
> <wsdl:port name="SoapRPCHeaderPort"
> binding="tns:TestHeader_SOAPRPCBinding">
> <soap:address
> location="http://localhost:9104/SoapHeaderRPCContext/SoapHeaderRPCPort"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Error message:
> org.apache.cxf.interceptor.Fault: wrong number of arguments while invoking
> public abstract java.lang.Object
> javax.xml.ws.Provider.invoke(java.lang.Object) with params
> [com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl@543cb1,
> javax.xml.transform.dom.DOMSource@5cc942].
> at
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:159)
> at
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:133)
> at
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:60)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
> at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
> at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
> at
> org.apache.cxf.transport.local.LocalConduit$1$1.run(LocalConduit.java:132)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.IllegalArgumentException: wrong number of arguments
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
> at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
> ... 12 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira