cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Presling <mark.presl...@argonaut.nz>
Subject Re: CXF absolutely ignores method arguments
Date Thu, 30 Apr 2020 22:36:53 GMT
Try adding @WebParam to the v1 and v2 parameters.

https://cxf.apache.org/docs/developing-a-service.html#DevelopingaService-AnnotatingtheSEI

On Fri, 1 May 2020 at 03:45, Alex Sviridov <ooo_saturn7@mail.ru.invalid>
wrote:

>
> Hi all,
>
> Please help me to run the simplest example with CXF. After spending ten
> hours
> I still can pass any arguments to my methods.
>
> This is my service:
>
> @WebService(name="CalculatorService", serviceName="CalculatorService")
> public class CalculatorService {
>
>     @WebMethod
>     public double addNumbers(double v1, double v2) {
>         return v1 + v2;
>     }
> }
> Upon it I generate using cxf plugin the following wsdl
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="CalculatorService" targetNamespace="
> http://cfx.foo.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="
> http://cfx.foo.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
>   <wsdl:types>
> <xs:schema xmlns:tns="http://cfx.foo.com/" xmlns:xs="
> http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"
> targetNamespace="http://cfx.foo.com/" version="1.0">
>
>   <xs:element name="addNumbers" type="tns:addNumbers"/>
>
>   <xs:element name="addNumbersResponse" type="tns:addNumbersResponse"/>
>
>   <xs:complexType name="addNumbers">
>     <xs:sequence>
>       <xs:element name="arg0" type="xs:double"/>
>       <xs:element name="arg1" type="xs:double"/>
>     </xs:sequence>
>   </xs:complexType>
>
>   <xs:complexType name="addNumbersResponse">
>     <xs:sequence>
>       <xs:element name="return" type="xs:double"/>
>     </xs:sequence>
>   </xs:complexType>
>
> </xs:schema>
>   </wsdl:types>
>   <wsdl:message name="addNumbers">
>     <wsdl:part name="parameters" element="tns:addNumbers">
>     </wsdl:part>
>   </wsdl:message>
>   <wsdl:message name="addNumbersResponse">
>     <wsdl:part name="parameters" element="tns:addNumbersResponse">
>     </wsdl:part>
>   </wsdl:message>
>   <wsdl:portType name="CalculatorService">
>     <wsdl:operation name="addNumbers">
>       <wsdl:input name="addNumbers" message="tns:addNumbers">
>     </wsdl:input>
>       <wsdl:output name="addNumbersResponse"
> message="tns:addNumbersResponse">
>     </wsdl:output>
>     </wsdl:operation>
>   </wsdl:portType>
>   <wsdl:binding name="CalculatorServiceSoapBinding"
> type="tns:CalculatorService">
>     <soap:binding style="document" transport="
> http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="addNumbers">
>       <soap:operation soapAction="" style="document"/>
>       <wsdl:input name="addNumbers">
>         <soap:body use="literal"/>
>       </wsdl:input>
>       <wsdl:output name="addNumbersResponse">
>         <soap:body use="literal"/>
>       </wsdl:output>
>     </wsdl:operation>
>   </wsdl:binding>
>   <wsdl:service name="CalculatorService">
>     <wsdl:port name="CalculatorServicePort"
> binding="tns:CalculatorServiceSoapBinding">
>       <soap:address location="http://localhost:9090/CalculatorServicePort
> "/>
>     </wsdl:port>
>   </wsdl:service>
> </wsdl:definitions>
>
> Upon wsdl I generate java code. When I call my generated services I see
> the following
>
> T 127.0.0.1:33602 -> 127.0.0.1:8080 [AP]
>   POST /webservices/calcService HTTP/1.1..Content-Type: text/xml;
> charset=UTF-8..Accept: */*..SOAPAction: ""..User-Agent: Apache-CXF/3.3.6.
>   .Cache-Control: no-cache..Pragma: no-cache..Host: 127.0.0.1:8080..Connection:
> keep-alive..Content-Length: 218....
> ##
> T 127.0.0.1:33602 -> 127.0.0.1:8080 [AP]
>   <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:addNumbers
> xmlns:ns2="http://cfx.foo.com/"><arg0>1.2</arg0><arg1>1.2</arg1></ns2:addNumbers></soap:Body></soap:Envelope>
>
> ##
> T 127.0.0.1:8080 -> 127.0.0.1:33602 [AP]
>   HTTP/1.1 500 Server Error..Date: Thu, 30 Apr 2020 15:38:13
> GMT..Content-Type: text/xml;charset=utf-8..Content-Length: 322..Server:
> Jetty(
>   9.4.z-SNAPSHOT)....<soap:Envelope xmlns:soap="
> http://schemas.xmlsoap.org/soap/envelope/
> "><soap:Body><soap:Fault><faultcode>soap:Server</f
>   aultcode><faultstring>null while invoking public double
> com.foo.cfx.CalculatorService.addNumbers(double,double) with params [
>   null,
> null].</faultstring></soap:Fault></soap:Body></soap:Envelope>
>
> #######
>
> And the following stacktrace:
>
> org.apache.cxf.interceptor.Fault: null while invoking public double
> com.foo.cfx.CalculatorService.addNumbers(double,double) with params [null,
> null].
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:74)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
>     at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
>     at org.apache.cxf.core@3.3.6
> /org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
>     at org.apache.cxf.transport.http@3.3.6
> /org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220)
>
> I can’t understand why my arguments are ignored. Is there some dependency
> problems? Then why there is no any exceptions? Please, help me to solve
> this problem.
>
> The question is also asked on SO here
> https://stackoverflow.com/questions/61512699/cxf-ignores-method-arguments
>
> --
> Alex Sviridov



-- 

Mark Presling

*Senior Developer / Technical Lead*

Argonaut Ltd

DDI: (04) 9016504
Mobile: 021549540
Do you use Outlook? Stop sending me winmail.dat
<https://www.lifewire.com/prevent-sending-winmail-dat-attachments-1173717>
files!

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message