one of the IBM WSTK samples ( attachments ) using RPC has an existing SOAP "parts" list of :
1.string 2.string [] 3.dataHandler for a java class 4.dataHandler for a jpg file 5.dataHandler for an Html file The practical effect of the sample is to transfer files in above parts 3, 4, and 5 from the client to the server over HTTP/SOAP. I want to change this so that an Array of DataHandlers for MIME type text is passed over the wire. So my new Parts would be: 1.string 2.string [] 3.dataHandler [] for MIME type "text" this is where all my attached files goes. and my new WSDL for the interface would look something like <message name="RPCRequest"> <part name="listTitle" type="xsd:string" /> <part name="fileList" type="types:ArrayOfString" /> <part name="fileArray" type="types:ArrayOfDataHandler" /> // would have many files here </message> - <complexType name="ArrayOfDataHandler"> - <complexContent> - <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:DataHandler[]" /> </restriction> </complexContent> </complexType> * * * endof myPropsed WSDL Can you help me alter the following from the original sample so that an Array of DataHandlers is encoded correctly as the 3rd part of the RPC: A. WSDL for the interface ( see below from original ) B. WSDD for the serializer ( for files to be serialized using a DataHandler ) C. Java file for the Server-side service *** Original Code from the IBM sample *** A. * * WSDL for the interface * * - <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.attachment.com/types"> - <complexType name="ArrayOfString"> - <complexContent> - <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]" /> </restriction> </complexContent> </complexType> - <complexType name="ArrayOfBinary"> - <complexContent> - <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:byte[]" /> </restriction> </complexContent> </complexType> - <complexType name="contentType"> - <simpleContent> - <extension base="xsd:string"> <attribute name="part" type="xsd:string" /> <attribute name="type" type="xsd:string" /> </extension> </simpleContent> </complexType> - <element name="attachments"> - <complexType> - <sequence> <element name="content" type="types:contentType" /> </sequence> </complexType> </element> </xsd:schema> <message name="RPCRequest"> <part name="listTitle" type="xsd:string" /> <part name="fileList" type="types:ArrayOfString" /> <part name="classFile" type="types:ArrayOfBinary" /> this should change, but how <part name="imageFile" type="types:ArrayOfBinary" /> this should change <part name="htmlFile" type="xsd:string" /> </message> B. *** WSDD for the serializer <typeMapping deserializer="org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory " encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" languageSpecificType="java:javax.activation.DataHandler" qname="ns1:DataHandler" serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory"/> C. *** Java file for the Server-side service public class AttachmentService { public String THETargetMethod( String listTitle, String[] fileList, DataHandler classFile, DataHandler imageFile, DataHandler htmlFile) DataHandler[] dhs= {classFile, imageFile, htmlFile}; String ret=listAttachments( listTitle, fileList, dhs ); ... for(int i=0; i< parts.length; ++i) { DataHandler datahandler= null; Part part= null; if( parts[i] instanceof Part){ part= (Part) parts[i]; datahandler= AttachmentUtils.getActiviationDataHandler(part); ... String listAttachments( String listTitle, String[] fileList, Object[] parts ) ... for(int i=0; i< parts.length; ++i) { DataHandler datahandler= null; Part part= null; if( parts[i] instanceof Part){ part= (Part) parts[i]; datahandler= AttachmentUtils.getActiviationDataHandler(part); }