a) Is the server that you will call a web service able to receive SOAP
attachments? (MTOM) I am assuming it is.
b) If you use Axis2, your web services client is already able to RETRIEVE
attachments. The generated code will look like
TheResponse response =
yourService.serviceWithAttachments(parameter1, parameter2, parameter3)
InputStream is =
response.getDataHandler().getInputStream();
...here use the input stream to read the attachment ...
c) If you use Axis2 and you want to SEND attachments, you need to enable the
client code
YourServiceStub stub = new YourServiceStub("http://your.url/");
Options options = stub._getServiceClient().getOptions();
options.setProperty( Constants.Configuration.ENABLE_MTOM,
Constants.VALUE_TRUE);
and then you will need to implement a DataSource and set it in your request
object.
Since you want to just forward the request, you may want to use
PipedInputStream/PipedOutputStream in your DataSource implementation
On Wed, May 19, 2010 at 4:07 PM, Vishwal Shah <[email protected]> wrote:
> Any suggestions ? Its very urgent ?
>
>
>
> On Wed, May 19, 2010 at 8:24 AM, Vishwal Shah <[email protected]>wrote:
>
>> Hi Martin,
>>
>> Thanks for the response.I checked and can't do the rest as rest is
>> disabled and for reasons it can't be enabled.
>> I am stuck right now on converting from InputStream to DataHandler itself
>> running out of memory. The Only Class that could handle that data was the
>> InputStreamDataSource that i had mentioned earlier in this thread , but that
>> throws the *End of Prolog WSTX *Exception.
>>
>> Is there any API that can help me convert a big InputStream into a
>> DataSource/DataHandler so that i can send it as an Attachment(MTOM) to the
>> service ?
>>
>>
>> Regards,
>> Vish
>>
>>
>>
>> On Fri, May 14, 2010 at 11:48 AM, Martin Gainty <[email protected]>wrote:
>>
>>> //its possible this content type should be processed as REST .. check to
>>> see if your content type is
>>> * 1. application/xml
>>> * 2. application/x-www-form-urlencoded
>>> * 3. multipart/form-data
>>>
>>> //also check the disableRest parameter in axis2.xml is disabled e.g. so
>>> you can use RESTprocessing
>>> <!-- Following parameter will completely disable REST handling in
>>> Axis2-->
>>> <parameter name="disableREST" locked="false">false</parameter>
>>>
>>> //here is the processing notice SOAP content-types are either
>>> application/soap+xml or text/xml
>>> if (contentType != null) {
>>> if (contentType.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE)
>>> > -1) { //application/soap+xml
>>> soapVersion = VERSION_SOAP12;
>>> TransportUtils.processContentTypeForAction(contentType,
>>> msgContext);
>>> } else if (contentType
>>> .indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) > -1)
>>> { //text/xml
>>> soapVersion = VERSION_SOAP11;
>>> } else if (isRESTRequest(contentType)) {
>>> // If REST, construct a SOAP11 envelope to hold the rest
>>> message and
>>> // indicate that this is a REST message.
>>> soapVersion = VERSION_SOAP11;
>>> msgContext.setDoingREST(true);
>>> }
>>>
>>> ?
>>> Martin Gainty
>>> ______________________________________________
>>> Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
>>>
>>>
>>> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
>>> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
>>> Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
>>> dient lediglich dem Austausch von Informationen und entfaltet keine
>>> rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
>>> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>>>
>>> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
>>> destinataire prévu, nous te demandons avec bonté que pour satisfaire
>>> informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie
>>> de ceci est interdite. Ce message sert à l'information seulement et n'aura
>>> pas n'importe quel effet légalement obligatoire. Étant donné que les email
>>> peuvent facilement être sujets à la manipulation, nous ne pouvons accepter
>>> aucune responsabilité pour le contenu fourni.
>>>
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------
>>> Date: Fri, 14 May 2010 10:17:21 -0700
>>>
>>> Subject: Re: InputStream to DataSource In Axis2
>>> From: [email protected]
>>> To: [email protected]
>>>
>>> Hi,
>>> My Application receives a Http Post from another web application which
>>> sends ~150mgs of data, i need to take that data and create a DataHandler
>>> (MTOM) and make a webservice call to another webapp. Its kind of pass
>>> through. i cannot copy that data onto any drive, it needs to create a
>>> DataHandler from the inputstream received from HttpRequest. I tried using
>>>
>>> import org.apache.axis2.builder.unknowncontent.InputStreamDataSource;
>>>
>>> InputStreamDataSource ds = new
>>> InputStreamDataSource(request.getInputStream());
>>> DataHandler dh = new DatHandler(ds);
>>>
>>> This doesn't seem to be working for me.
>>>
>>>
>>> Thanks,
>>> Vish
>>>
>>>
>>>
>>> On Thu, May 13, 2010 at 1:37 PM, Martin Gainty <[email protected]>wrote:
>>>
>>> the most prevelant input source is OMSource which extends
>>> org.xml.sax.InputSource defined here:
>>>
>>> package org.apache.axiom.om.impl.jaxp;
>>> import javax.xml.transform.sax.SAXSource;
>>> import org.apache.axiom.om.OMElement;
>>> import org.apache.axiom.om.impl.serialize.OMXMLReader;
>>> import org.xml.sax.InputSource;
>>>
>>> /**
>>> * Implementation of {...@link javax.xml.transform.Source} for AXIOM.
>>> * The implementation is based on {...@link SAXSource} and directly
>>> transforms an AXIOM
>>> * tree into a stream of SAX events using {...@link OMXMLReader}.
>>> * <p>
>>> * Note that {...@link org.apache.axiom.om.OMDocType} nodes are not
>>> supported and will be
>>> * silently skipped.
>>> */
>>> public class OMSource extends SAXSource {
>>> public OMSource(OMElement element) {
>>> super(new OMXMLReader(element), new InputSource());
>>> }
>>> }
>>>
>>> perhaps if you could display your definition(s) of InputStreamDatasource
>>> class
>>> we could better suggest an implementation which will accomodate your
>>> needs
>>>
>>> Martin
>>> ______________________________________________
>>> Verzicht und Vertraulichkeitanmerkung
>>>
>>> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
>>> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
>>> Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
>>> dient lediglich dem Austausch von Informationen und entfaltet keine
>>> rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
>>> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>>>
>>>
>>>
>>>
>>> ------------------------------
>>> Date: Thu, 13 May 2010 12:01:41 -0700
>>> Subject: Re: InputStream to DataSource In Axis2
>>> From: [email protected]
>>> To: [email protected]
>>>
>>>
>>> Anyone? Any help would be greatly appreciated. i cant write it to a
>>> drive, it has to be an in memory conversion.
>>>
>>>
>>> -Vish
>>>
>>> On Thu, May 13, 2010 at 8:56 AM, Vishwal Shah <[email protected]>wrote:
>>>
>>> Hi,
>>> Is there any Datasource inbuilt into Axis2 which can take
>>> Inputstream(Large data, almost 200 megs) ? I tried using
>>> InputStreamDataSource, but for some reason i am getting an error and i have
>>> been reading about issues using InputStreamDatasource. Also, i am not sure
>>> if it can handle large data (the MTOM way). Any help would be greatly
>>> appreciated
>>>
>>>
>>>
>>> Thanks,
>>> Vish
>>>
>>>
>>>
>>> ------------------------------
>>> The New Busy think 9 to 5 is a cute idea. Combine multiple calendars with
>>> Hotmail. Get
>>> busy.<http://www.windowslive.com/campaign/thenewbusy?tile=multicalendar&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_5>
>>>
>>>
>>>
>>> ------------------------------
>>> Hotmail has tools for the New Busy. Search, chat and e-mail from your
>>> inbox. Learn
>>> more.<http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_1>
>>>
>>
>>
>