Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-3502

IllegalArgumentException: wrong number of arguments with Dispatch/Provider service

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.4, 2.3.4
    • 2.4.1, 2.3.5
    • JAX-WS Runtime
    • None

    Description

      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

      Attachments

        Activity

          People

            ema Jim Ma
            ema Jim Ma
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: