Hi Andre,
Seems your generated wsdl missing xmime:expectedContentTypes="application/octet-stream
It should be
<xsd:element minOccurs="0" name="TARFILE" nillable="true" type="xsd:base64Binary" xmime:expectedContentTypes="application/octet-stream/>

I am not expert of xfire, which jsr181 se based on,
Since cxf is merged from xfire, so I guess what we do it in cxf is helpful for you. To generate right wsdl, basicaly you need create a wrapper bean for your DataHandler and add jaxb annotation @XmlMimeType("application/octet-stream") , something like

@XmlType
public class Picture {
 private String title;

@XmlMimeType("application/octet-stream") private DataHandler imageData;

 public String getTitle() { return title; }
 public void setTitle(String title) { this.title = title; }

 public DataHandler getImageData() { return imageData; }
 public void setImageData(DataHandler imageData) { this.imageData = imageData; }
}



And you can get more details from http://www.nabble.com/MTOM-sample-generated-WSDL-with-DataHandler-on-server-t4210895.html

Best Regards

Freeman




André Szdzuy wrote:
Hi,
I still have this problem... Doesn't anyone have an idea?
At least I would appreciate a hint if it's rather a bug of servicemix-jsr181
or XFire.

Thanks
André



André Szdzuy wrote:
Hi,
I am providing a web service based on servicemix-jsr181 and a POJO. My
operation has a parameter "TARFILE" of type DataHandler and I have MTOM
enabled. The parameter part of the WSDL generated by servicemix-jsr181
looks like this:

<xsd:element minOccurs="0" name="TARFILE" nillable="true"
type="xsd:base64Binary"/>

If I import the WSDL with some other SOAP tool like SoapUI and generate a
SOAP request from it the parameter TARFILE is considered to contain a
base64 string and not a reference to an attachment as I actually want.
SoapUI's behaviour is correct, I would say, because the WSDL doesn't
contain any hint that MTOM and attachments should be used.

When I adjust the WSDL manually by replacing "xsd:base64Binary" by
"xmime:base64Binary" with xmlns:xmime="http://www.w3.org/2005/05/xmlmime";
then SoapUI generates the correct SOAP request from it!
Can I configure the WSDL generation so that it puts "xmime:base64Binary"
into the WSDL? Or is it a bug in servicemix-jsr181 or even XFire?

Thanks for your help...

André



Reply via email to