cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (CXF-1478) WebParam ignored in service implementation
Date Mon, 05 Oct 2009 14:39:31 GMT

     [ https://issues.apache.org/jira/browse/CXF-1478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Daniel Kulp resolved CXF-1478.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2


The simple frontends now spit out a warning to suggest using the jaxws frontend if it sees
the jaxws annotations in various places.

> WebParam ignored in service implementation
> ------------------------------------------
>
>                 Key: CXF-1478
>                 URL: https://issues.apache.org/jira/browse/CXF-1478
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.0.4
>            Reporter: Damien B
>             Fix For: 2.2
>
>
> I have a very simple WSDL (see attached file), Doc/Lit/bare.
> I generate with WSDL2Java server + impl. The generated Jax-WS interface looks like this:
> public interface TestDocLit {
>     @ResponseWrapper(localName = "operation1Response", targetNamespace = "http://www.example.org/TestDocLit/",
className = "org.example.testdoclit.Operation1Response")
>     @RequestWrapper(localName = "operation1", targetNamespace = "http://www.example.org/TestDocLit/",
className = "org.example.testdoclit.Operation1")
>     @WebResult(name = "out", targetNamespace = "")
>     @WebMethod(action = "http://www.example.org/TestDocLit/operation1")
>     public java.lang.String operation1(
>         @WebParam(name = "par1", targetNamespace = "")
>         int par1
>     );
> }
> We note that WebParam is correct (no namespace, "par1").
> The service is tested like this:
> ServerFactoryBean svrFactory = new ServerFactoryBean();
> svrFactory.setServiceClass(TestDocLit.class);
> svrFactory.setAddress(url);
> svrFactory.setServiceBean(new TestDocLitImpl());
> svrFactory.create();
> final Service service = Service.create(TestDocLit_Service.SERVICE);
> service.addPort(TestDocLit_Service.TestDocLitSOAP, SOAPBinding.SOAP11HTTP_BINDING, url);
> service.getPort(TestDocLit_Service.TestDocLitSOAP, TestDocLit.class).operation1(42);
> The message sent by the client seems correct:
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:operation1
xmlns:ns2="http://www.example.org/TestDocLit/"><par1>42</par1></ns2:operation1></soap:Body></soap:Envelope>
> But debugging through DocLiteralInInterceptor::getPara, it appears that the service expects
a ("http://testdoclit.example.org/":"arg0"), whereas it receives a ("":par1), thus, we have
in return the dreaded:
> null while invoking public abstract java.lang.String org.example.testdoclit.TestDocLit.operation1(int)
with params [null].
> So, the server has basically lost the parameter's name, and added a target namespace
which (maybe) not due.
> At http://localhost:9000/TestDocLit?wsdl, the generated WSDL exposes this fact as well:
> <wsdl:message name="operation1">
>     <wsdl:part element="tns:operation1" name="parameters">
>     </wsdl:part>
>   </wsdl:message>
> and tns:operation1 is defined below:
> <xsd:element name="operation1" type="tns:operation1"/>
> <xsd:complexType name="operation1">
> <xsd:sequence>
> <xsd:element name="arg0" type="xsd:int"/>
> </xsd:sequence>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message