What if you make the name attribute match the param name? Ie, instead of:

@WebParam(name="value1")

try:

@WebParam(name="v1")

FYI, I’m not part of the project, just looking at what I’ve done in the
past.

Thanks,
Mark

On Fri, 1 May 2020 at 19:36, Alex Sviridov <[email protected]>
wrote:

>
> Hi Mark,
>
> Thank you very much for your answer. I tried to add @WebParam:
>
> @WebService(name="CalculatorService",
>         serviceName="CalculatorService",
>         wsdlLocation="http://localhost:8080/webservices/calcService?wsdl";)
> public class CalculatorService {
>
>     @WebMethod
>     public double addNumbers(@WebParam(name="value1") double v1,
> @WebParam(name="value2") double v2) {
>         return v1 + v2;
>     }
> }
>
> Here is port dumping:
>
> T 127.0.0.1:53516 -> 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/";><value1>1.2</value1><value2>1.2</value2></ns2:addNumbers></soap:Body></soap:Envelope>
>
> ##
> T 127.0.0.1:8080 -> 127.0.0.1:53516 [AP]
>   HTTP/1.1 500 Server Error..Date: Fri, 01 May 2020 07:28:46
> 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>
>
> Anyway I opened an issue here
> https://issues.apache.org/jira/browse/CXF-8274
>
> Best regards.
>
> >Пятница, 1 мая 2020, 1:37 +03:00 от Mark Presling <
> [email protected]>:
> >
> >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 < [email protected]
> >
> >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  [email protected]
> >>
> /org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166)
> >> at  [email protected]
> >>
> /org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140)
> >> at  [email protected]
> >>
> /org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:74)
> >> at  [email protected]
> >>
> /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  [email protected]
> >>
> /org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)
> >> at  [email protected]
> >>
> /org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
> >> at  [email protected]
> >>
> /org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
> >> at  [email protected]
> >>
> /org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225)
> >> at  [email protected]
> >>
> /org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
> >> at  [email protected]
> >>
> /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!
> >
>
>
> --
> Alex Sviridov
>

-- 
Mark Presling

Senior Developer / Technical Lead

Argonaut Ltd

DDI: (04) 9016504
Mobile: 021549540

Reply via email to