title: jax-ws/wsimport generates WebMethod with void return - same Request/ResponseWrapper
body: <p>I'm working with a client's WSDL file that uses the same element definition for the input and output messages, but I'm having trouble getting JAX-WS/JAXB to unmarshal the response.</p>
  
  <pre><code>&lt;wsdl:message name="invokeServiceRequest"&gt;
      &lt;wsdl:part element="impl:requests" name="multiRequestWrapper"/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:message name="invokeServiceResponse"&gt;
      &lt;wsdl:part element="impl:requests" name="result"/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:portType name="GCGatewayPortType"&gt;
      &lt;wsdl:operation name="requests"&gt;
          &lt;wsdl:input message="impl:invokeServiceRequest" name="invokeServiceRequest"/&gt;
          &lt;wsdl:output message="impl:invokeServiceResponse" name="invokeServiceResponse"/&gt;
      &lt;/wsdl:operation&gt;
  &lt;/wsdl:portType&gt;
  </code></pre>
  
  <p>For some reason, the code generated by wsimport has a void return, and the INOUT params don't seem to be updated when the response is received.  </p>
  
  <pre><code>/**
   * This class was generated by the JAX-WS RI.
   * JAX-WS RI 2.1.7-b01-
   * Generated source version: 2.1
   */
  ...
  @WebMethod
  @RequestWrapper(localName = "requests", targetNamespace = "http://cg.test.com/", className = "com.test.cg.RequestsType")
  @ResponseWrapper(localName = "requests", targetNamespace = "http://cg.test.com/", className = "com.test.cg.RequestsType")
  public void requests(
      @WebParam(name = "paramOne", targetNamespace = "http://cg.test.com/", mode = WebParam.Mode.INOUT)
      Holder&lt;String&gt; paramOne,
      @WebParam(name = "paramTwo", targetNamespace = "http://cg.test.com/", mode = WebParam.Mode.INOUT)
      Holder&lt;String&gt; paramTwo,
      @WebParam(name = "requestList", targetNamespace = "http://cg.test.com/", mode = WebParam.Mode.INOUT)
      Holder&lt;List&lt;RequestType&gt;&gt; requestList);
  </code></pre>
  
  <p>When I call <code>port.request( paramOne, paramTwo, requestList )</code>, I can see that the SOAP request is sent to the server, which responds with a valid SOAP response:</p>
  
  <pre><code>&lt;soapenv:Envelope ...&gt;
      &lt;soapenv:Header /&gt;
      &lt;soapenv:Body&gt;
          &lt;requests ...&gt;
              &lt;paramOne&gt;1&lt;/paramOne&gt;
              &lt;paramTwo&gt;2&lt;/paramTwo&gt;
              &lt;requestList&gt;
                  &lt;!-- various elements that JAXB has generated code for --&gt;
  </code></pre>
  
  <p>However, when I run my app in debug mode, I can see each <code>RequestType</code> instance in the debugger variables view, but because <code>RequestsType</code> has an <code>&lt;xsd:choice></code> with <code>RequestData</code> or <code>ResponseData</code>, the latter is null and the <code>RequestData</code> is as I provided.</p>
  
  <p>I've successfully used JAX-WS on other projects, but in those cases it generated code with a <code>@WebResult</code> and non-void return type named after the WebResult.  In this project, I think I'm not getting the WebResult because JAX-WS has decided that the request and response types are the same and it can reuse the same object - but how do I get it to update that object with data from the response?</p>