I am using CXF 2.0.4 on both client and server. I have a simple server
interface derived from one of the samples (see below). When I try to call
the "deleteCustomer" function using the CXF 2.0.4 wsdl2java client, the
first element of the paramArray passed into
org.apache.cxf.jaxws.JAXWSMethodInvoker.performInvocation() is null. If I
use Microsoft's WCF, I don't have this problem.

The difference between the two requests is the namespace prefix on the tags
in the method invocation. If I remove them and do a manual post using wget,
the call succeeds.

WCF:
<s:Envelope xmlns:s="
http://schemas.xmlsoap.org/soap/envelope/";><s:Body><deleteCustomer
xmlns="
http://customer.acme.com";><id>4300</id></deleteCustomer></s:Body></s:Envelope
>

CXF client:

<soap:Envelope xmlns:soap="
http://schemas.xmlsoap.org/soap/envelope/";><soap:Body><ns2:deleteCustomerxmlns:ns2="
http://customer.acme.com";><id>4300</id></ns2:deleteCustomer></soap:Body></soap:Envelope><s:Envelope
xmlns:s="
http://schemas.xmlsoap.org/soap/envelope/";><s:Body><deleteCustomer><id>4300</id></deleteCustomer>
</s:Body></s:Envelope>

Any ideas on how I might be able to solve this problem? Or is this just a
bug?

Thanks,
-mike

===============================

@WebService(targetNamespace = "http://customer.acme.com";)
public interface CustomerService {
[ ... Other methods ...]

   @Delete
    @HttpResource(location = "/customers/{id}")
    void deleteCustomer(@WebParam(name = "id")
                        long id) throws CustomerNotFoundFault;

}

The client interface that is generated from wsdl2java is:

@WebService(targetNamespace = "http://customer.acme.com";, name =
"CustomerService")

public interface CustomerService {
[... Other methods ...]

    @RequestWrapper(localName = "deleteCustomer", targetNamespace = "
http://customer.acme.com";, className = "com.acme.customer.DeleteCustomer")
    @ResponseWrapper(localName = "deleteCustomerResponse", targetNamespace =
"http://customer.acme.com";, className = "
com.acme.customer.DeleteCustomerResponse")
    @WebMethod
    public void deleteCustomer(
        @WebParam(name = "id", targetNamespace = "http://customer.acme.com";)
        long id
    );
};

Reply via email to