[ 
https://issues.apache.org/jira/browse/CXF-2451?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13257782#comment-13257782
 ] 

Mario Nocnik commented on CXF-2451:
-----------------------------------

Could you please solve this Issue for 2.5.2 or at least 2.6.0 also please. Or 
is there a known workaround which allows custom login modules with interceptors 
and custom soap secutity header?
                
> Unable to call no-arg methods when using implicit headers - getting params 
> [null]
> ---------------------------------------------------------------------------------
>
>                 Key: CXF-2451
>                 URL: https://issues.apache.org/jira/browse/CXF-2451
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.2.3
>         Environment: ALL
>            Reporter: Arik Gorelik
>            Assignee: Daniel Kulp
>             Fix For: 2.1.7, 2.2.4
>
>
> Hello,
> I am a developer using CXF 2.2.3. I am currently running into an issue when 
> trying to call a NO-ARG method getFoo() 
> while using implicit headers defined ONLY at the wsdl:binding section. 
> Each header has a SEPARATE wsdl:message defined and headers elements are NOT 
> part of the getFooRequest wsdl:message. 
> The generated code looks correct (using wsdl2java); however, invoking the 
> method results in the error message in the following soap fault message:
>          <faultstring>wrong number of arguments while invoking public 
> com.test.services.v29.FooResponse 
> com.test.services.v29.TestServiceImpl.getFoo() throws 
> com.test.services.v29.TestException with params [null].</faultstring>
> Here is the stack trace:
> WARNING: Application has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: wrong number of arguments while invoking 
> public com.test.services.v29.FooResponse 
> com.test.services.v29.TestServiceImpl.getFoo() throws 
> com.test.services.v29.TestException with params [null].
>       at 
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:152)
>       at 
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:83)
>       at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:126)
>       at 
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55)
>       at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
>       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:98)
>       at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
>       at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104)
>       at 
> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
>       at 
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:452)
>       at 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:196)
>       at 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:220)
>       at 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:153)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> ....
> 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:166)
>       at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
>       ... 33 more
> Request is:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:v29="http://test.com/services/v29";>
>    <soapenv:Header>
>       <v29:testHeader1>1234</v29:testHeader1>
>       <v29:testHeader2>abcd</v29:testHeader2>
>    </soapenv:Header>
>    <soapenv:Body>
>       <v29:getFoo/>
>    </soapenv:Body>
> </soapenv:Envelope>
> Generated code is:
>     @WebResult(name = "response", targetNamespace = 
> "http://test/services/v29";)
>     @RequestWrapper(localName = "getFoo", targetNamespace = 
> "http://test.com/services/v29";, className = "com.test.services.v29.GetFoo")
>     @ResponseWrapper(localName = "getFooResponse", targetNamespace = 
> "http://test.com/services/v29";, className = 
> "com.test.services.v29.GetFooResponse")
>     @WebMethod(action = "http://test.com/services/v29/messages/getFoo";)
>     public com.test.services.v29.FooResponse getFo() throws TestException;
> Here is there wsdl:binding for the operation
>               <wsdl:operation name="getFoo">
>                       <soap:operation soapAction="" />
>                       <wsdl:input name="getFooRequest">
>                               <soap:header part="testHeader1" 
> message="tns:testHeader1" use="literal" />
>                               <soap:header part="testHeader2" 
> message="tns:testHeader2" use="literal" />
>                               <soap:body use="literal" parts="parameters" />
>                       </wsdl:input>
>                       <wsdl:output name="getFooResponse">
>                               <soap:body use="literal" />
>                       </wsdl:output>
>                       <wsdl:fault name="TestException">
>                               <soap:fault name="TestException" use="literal" 
> />
>                       </wsdl:fault>
>               </wsdl:operation>
> Here are the wsdl:message for the operation from above:
>       <wsdl:message name="testHeader1">
>               <wsdl:part element="impl:testHeader1" name="testHeader1" />
>       </wsdl:message>
>       <wsdl:message name="testHeader2">
>               <wsdl:part element="impl:testHeader2" name="testHeader2" />
>       </wsdl:message>
>       ...
>       <wsdl:message name="getFooRequest">
>               <wsdl:part element="impl:getFoo" name="parameters" />
>       </wsdl:message>
>       <wsdl:message name="getFooResponse">
>               <wsdl:part element="impl:getFooResponse" name="parameters" />
>       </wsdl:message>
> If I remove the implicit headers, the generated code is the same and I am 
> able to invoke the method with the same request. Please help. I hope I 
> provided all the required information.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to