title: jax-ws DataHandler getName() is blank when called from client side
body: <p>I have a problem with the use of DataHandler with jax-ws. When the client invoke getName() method of the DataHandler, returns an empty string.
  On the server side, it is valued correctly.
  Here I report the portion of the code on the server side and the client side:</p>
  
  <p>server-side</p>
  
  <pre><code>public @XmlMimeType("application/octet-stream") DataHandler fileDownload(String name) {
     try {
           File file = new File("/tmpwk/share/SharedRepository/apps-data/jaxws-large_upload/" + name);
           FileDataSource fds = new FileDataSource(file);
       DataHandler dh = new DataHandler(fds);
           // Note: getName(), return a String with file name.
       System.out.println("File Name = " + dh.getName() );
       System.out.println("Content Type  " + dh.getContentType());
  
       System.out.println("quiting from downloadFile...");    
       return dh;
      } catch(Exception e) {
          throw new WebServiceException(e);
      }
  
  }
  </code></pre>
  
  <p>client side</p>
  
  <pre><code>public void download() throws IOException {
      System.out.println("&gt;&gt;&gt;&gt;&gt; download &lt;&lt;&lt;&lt;&lt;&lt;");
      MTOMFeature feature = new MTOMFeature();
      UploadImplService service = new UploadImplService();
      UploadImpl proxy = service.getUploadImplPort(feature);        
      Map&lt;String, Object&gt; ctxt = ((BindingProvider)proxy).getRequestContext();
      ctxt.put(JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE, 8192); 
  
  
      DataHandler dh = proxy.fileDownload("file.bin");
      InputStream in = dh.getInputStream();
  
      //Note:  getName() return a empty string, why ????
              System.out.println("File Name = " + dh.getName());
      System.out.println("Content Type = " + dh.getContentType());
  
  
      File file = new File("/tmp/dfile.bin");
      OutputStream out = new FileOutputStream(file);
  
      // Transfer bytes from in to out
      byte[] buf = new byte[8192];
      int len;
      while ((len = in.read(buf)) &gt; 0) {
          out.write(buf, 0, len);
      }
      in.close();
      out.close();
  }
  </code></pre>
  
  <p>Why does this happen?</p>