2011-07-13 8 views
0

CXFが提供するwsdltojava ANTユーティリティを使用して、AXIS1からCXFに移行し、スタブを生成しています。しかし、Webservicecallの応答から添付ファイルを取得することはできません。これらの添付ファイルは応答に直接埋め込まれていないからです。以前の実装では、AXIS APIの標準メソッドgetAttachments()を使用していました。 助けてくださいCXF生成スタブからの添付ファイルの取得

答えて

2

は、おそらく今では答えを見つけましたが、他の誰のための鍵は、サービスプロキシがjavax.xml.ws.Bindingにキャストすることができ、その後、あなたがorg.apache.cxf.message.Message.ATTACHMENTSキーを経由してResponseContext(マップ)や添付ファイルを取得することができます:

import javax.activation.DataHandler; 
import javax.xml.ws.BindingProvider; 
import org.apache.cxf.message.Attachment; 
import org.apache.cxf.message.Message; 

import org.apache.commons.io.IOUtils; 
... 

Collection<Attachment> attachments = (Collection<Attachment>) 
    ((BindingProvider)yourServiceProxy).getResponseContext() 
     .get(Message.ATTACHMENTS); 
for (Attachment attachment : attachments) { 
    // ID is in attachment.getId(); 
    // Data is in attachment.getDataHandler(); 

    // Eg: 
    DataHandler data = attachment.getDataHandler(); 
    InputStream is = data.getInputStream(); 
    File dataFile = new File(data.getName()); 
    System.out.println("Writing data to:\n\t" + 
     dataFile.toString());  
    FileOutputStream fos = new FileOutputStream(dataFile); 
    IOUtils.copy(is, fos); 
    fos.close(); 
} 
関連する問題