Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-3501

DynamicClient fails to send an array of String

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.4
    • 2.4.1, 2.3.5
    • None
    • None
    • JaxWsDynamicClientFactory and Tomcat 6.

    • Unknown

    Description

      I ran into some trouble using JaxWsDynamicClientFactory to access a SOAP service which signature is unknown a compile time and is passed to my code, from an external part at runtime. Following is a minimal example to reproduce the problem.

      The service defines the following operation:

      @WebMethod(operationName="init")
      public void initValueNotNull(
      @WebParam(name="values")String[] values);

      I generate a SOAP service and a corresponding WSDL from this by using org.apache.cxf.tools.java2ws.JavaToWS. Then I generate a WAR file and deploy this to tomcat.

      Now I want to use JaxWsDynamicClientFactory to access this service:
      JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
      Client client = dcf.createClient(new URL("http://localhost:8080/dserv/ArrayService?wsdl"));

      String[] values = new String[]

      { "foobar", "something" }

      ;

      client.invoke("init", values);

      In the implementation of the service I have the following code:
      @Override
      public void initValueNotNull(String[] values)

      { System.out.println("Got values: " + Arrays.asList(values)); }

      I would expect, that the two strings from the client get ouputted. Instead I simple see Got values: [].

      If I look at the SOAP-message that get exchanged, I see the this:
      <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
      <ns1:init xmlns:ns1="de.fhl.dserv.ws">
      <values xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">foobar</values>
      </ns1:init>
      </soap:Body>
      </soap:Envelope>

      So somewhere and somehow the array of strings get transformed in a single string (which happens to be the first element of the original array).

      I have created a demo project and uploaded it to http://dl.dropbox.com/u/338429/CXF_Bug.zip
      Included is a ant file to compile and build the service using ant build and execute the client using ant client

      Attachments

        Activity

          People

            ffang Freeman Yue Fang
            blattlaus Martin Thurau
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: