You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by donald yang <do...@googlemail.com> on 2007/01/23 12:37:45 UTC
Binary data is sent by value, not by reference in AXIS2-1.1.1
Hi,
I wrote one test web service (see[1] [2]) to return binary attachment.
However I found the binary data is returned by value, not by reference(see
[3]). I have enabled both MTOM and SwA in the server side by chaning the
values of enableMTOM and enableSwA to true the axis2.xml. Do I miss
something? Many thanks inadvance.
best regards
donald
[1] TestService.java
import java.io.*;
import javax.activation.DataHandler;
import org.apache.axiom.attachments.Attachments;
import org.apache.axis2.context.MessageContext;
public class TestService
{
public TransferResp transfer(String name, String attchmentID) throws
IOException
{
//retrieve the attachment
MessageContext msgCtx = MessageContext.getCurrentMessageContext();
Attachments attachment = msgCtx.getAttachmentMap();
DataHandler dataHandler = attachment.getDataHandler(attchmentID);
File file = new File(name);
FileOutputStream fileOutputStream = new FileOutputStream(file);
dataHandler.writeTo(fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
TransferResp resp = new TransferResp();
resp.setUploadSuccess(true);
resp.setDownloadFile("d:\\test.txt");
return resp;
}
}
[2] TransferResp.java
import java.io.File;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMText;
public class TransferResp
{
private boolean uploadSuccess;
private OMElement downloadFile;
public TransferResp()
{
}
public void setUploadSuccess(boolean b)
{
uploadSuccess = b;
}
public void setDownloadFile(String fileName)
{
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://ws.apache.org/axis2/xsd", "test1");
//create attachment element
downloadFile = fac.createOMElement("downloadFile", null);
//attach the blob with the element
File file = new File(fileName);
FileDataSource fileDataSource = new FileDataSource(file);
DataHandler dataHandler = new DataHandler(fileDataSource);
OMText textData = fac.createOMText(dataHandler, true);
textData.setOptimize(true);
textData.setBinary(true);
downloadFile.addChild(textData);
}
public boolean getUploadSuccess()
{
return uploadSuccess;
}
public OMElement getDownloadFile()
{
return downloadFile;
}
}
[3]
<ns:transferResponse xmlns:ns="http://ws.apache.org/axis2/xsd">
<ns:return>
<downloadFile>dGVzdCBmaWxl</downloadFile>
<uploadSuccess xmlns="http://ws.apache.org/axis2/xsd
">true</uploadSuccess>
</ns:return></ns:transferResponse>
upload success is : true