One does not have to use an ImageDataSource or FileDataSource. You can code your own DataSource, implementing javax.activation.DataSource.
When receiving MTOM data, one gets a DataHandler from the OMText element, and one can get the input stream from that: OMText data = (OMText) child.getFirstOMChild(); DataHandler dh = (DataHandler) data.getDataHandler(); InputStream istream = dh.getDataSource().getInputStream(); An intermediate file may still be created. This is because, when transferring binary data using MTOM, there is the issue that a very large amount of data could cause an OutOfMemoryError, without storing it on disk as it is being received. One controls this by these configuration settings: <parameter name="cacheAttachments" locked="false">true</parameter> <parameter name="attachmentDIR" locked="false">temp directory</parameter> <parameter name="sizeThreshold" locked="false">4000</parameter> Betsy ________________________________________ From: scott ken [mailto:[EMAIL PROTECTED] Sent: Thursday, September 28, 2006 7:53 PM To: [email protected] Subject: Re: about Axis2's binary attachment Usually we will have an InputStream object. But I didn't make it work. I tried using a byte array as input. you can easily convert an InputStream to a byte array. After that, use ByteArrayDataSource. // Build OMText to hold binary data byte[] binaryBytes = ...; ByteArrayDataSource dataSource = new ByteArrayDataSource(binaryBytes ); DataHandler expectedDH = new DataHandler(dataSource); OMText textData = omFactory.createOMText(expectedDH, true); On 9/28/06, sam wang <[EMAIL PROTECTED]> wrote: Hi, there, I have a question about transferring binary attachment through Axis2. I want to transfer binary attachment from server side to client side. My question is that if I can attach any kind of binary data? from Axis2's api, I see there are only two datasource: file and image. theoritically, Axis2 can transfer any kind of object because we can first serialize any object to disk, save it as a file, and then construct file datasource to attach into soap as binary attachment. but it will not be efficient. so my question is that if there is a way to attach the object (for example, CachedRowSet) to soap directly and return to client, instead of saving as file first. if it can, could anyone give me a java snippet? thank you very much! Sam __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
