Hi Craig,

Assuming the file is locally accesible to the server (via shared drive,
local or remote mount), you could just pass the URL where the file is
located like "/var/filestotransform/file.1" to the service and have the
service create and use the file handle.

HTH,

Thunder

-----Original Message-----
From: Courtney, Craig [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, July 28, 2004 7:13 AM
To: [EMAIL PROTECTED]
Subject: Is it possible to stream attachments straight to disk?


We are looking into wrapping a legacy application with a web service.
This application takes a file for input does transformation on file and
creates a new output file.  The files we are working on average 25kb to
100kb but can sometimes be as large as 20Mb - 60Mb.  There can be
several calls into this service at once.  Ideally I would not like
memory and heap size to be a direct limiter to the file size we can
transform.  I would like to be able to stream the attachment straight to
disk and pass just a file handle onto my service class.

Here is the first moc up of the WSDL for the service call.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
    name="TranslationService"
    targetNamespace="http://www.cardinal.com/TranslationService.wsdl";
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
    xmlns:tns="http://www.cardinal.com/TranslationService.wsdl";
    xmlns:tran="http://www.cardinal.com/TranslationService.xsd";
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
    xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
    <wsdl:documentation
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>Descriptor for Cardinal's
Item Translation Service</wsdl:documentation>
    <wsdl:types>
        <xsd:schema
 
targetNamespace="http://www.cardinal.com/TranslationService.xsd";
            xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/";
            xmlns:tran="http://www.cardinal.com/TranslationService.xsd";
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
            <xsd:complexType name="translationStatus">
                <xsd:all>
                    <xsd:element maxOccurs="1" minOccurs="1"
name="callId" type="xsd:string"/>
                    <xsd:element maxOccurs="1" minOccurs="1"
name="status" type="xsd:string"/>
                </xsd:all>
            </xsd:complexType>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="translateRequest">
        <wsdl:part name="mapname" type="xsd:string"/>
        <wsdl:part name="data" type="xsd:base64Binary"/>
    </wsdl:message>
    <wsdl:message name="translateResponse">
        <wsdl:part name="status" type="tran:translationStatus"/>
        <wsdl:part name="translation" type="xsd:base64Binary"/>
        <wsdl:part name="exception" type="xsd:base64Binary"/>
        <wsdl:part name="messages" type="xsd:base64Binary"/>
    </wsdl:message>
    <wsdl:portType name="Translation">
        <wsdl:operation name="translate">
            <wsdl:input message="tns:translateRequest"/>
            <wsdl:output message="tns:translateResponse"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="TranslationPortBinding" type="tns:Translation">
        <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="translate">
            <soap:operation
soapAction="capeconnect::TranslationPort#translate"/>
            <wsdl:input>
                <mime:multipartRelated>
                    <mime:part>
                        <soap:body parts="request" use="literal"/>
                    </mime:part>
                    <mime:part>
                        <mime:content part="data"
type="application/octetstream"/>
                    </mime:part>
                </mime:multipartRelated>
            </wsdl:input>
            <wsdl:output>
                <mime:multipartRelated>
                    <mime:part>
                        <soap:body parts="status" use="literal"/>
                    </mime:part>
                    <mime:part>
                        <mime:content part="translation"
type="application/octetstream"/>
                    </mime:part>
                    <mime:part>
                        <mime:content part="exception"
type="application/octetstream"/>
                    </mime:part>
                    <mime:part>
                        <mime:content part="messages"
type="application/octetstream"/>
                    </mime:part>
                </mime:multipartRelated>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="Translation">
        <wsdl:port binding="tns:TranslationPortBinding"
name="translationPort">
            <soap:address
location="http://localhost:8090/axis/services/translationPort"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

Is this possible with Axis?  If so should I be looking into a custom
serializer or is this already supported?

Thanks,
Craig Courtney

Reply via email to