I was able to successfully return a "DataHandler" from my web service method and 
process it on the client side. 
        
This is what I used in the WSDD -
-------------------------------
  <typeMapping 
deserializer="org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory" 
               encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
               qname="ns2:DataHandler" 
               
serializer="org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory" 
               type="java:javax.activation.DataHandler" 
xmlns:ns2="urn:EchoAttachmentsService"/>
---------------

This is what I did on the client side -
----------------
          QName qnameAttachment = new QName("urn:Email", "DataHandler");
          call.registerTypeMapping(DataHandler.class, //Add serializer for attachment.
                                   qnameAttachment,
                                   JAFDataHandlerSerializerFactory.class,
                                   JAFDataHandlerDeserializerFactory.class);

          call.addParameter( "op1", XMLType.XSD_STRING, ParameterMode.IN);
          call.setReturnType(qnameAttachment);
          String[] array = new String[1];
          array[0] = "hello";
          DataHandler returnedDh = (DataHandler) call.invoke(array);
-----------------



        But, now, I want to return multiple DataHandlers from my method by putting 
them in a javax.mail.internet.Multipart. This is what I am attempting -

                        public Multipart getAttachments()
                        {
                                  MultiPart    multiPart = new MimeMultipart();

                                  MimeBodyPart mbp1 = new MimeBodyPart();
                                  String message = "SUCCESS";
                                  mbp1.setText(message,"us-ascii");

                                  MimeBodyPart mbp2 = new MimeBodyPart();
                                  mbp1.setDataHandler(dh);

                                  multiPart.addBodyPart(mbp1);
                                                  multiPart.addBodyPart(mbp2);

                                  return multiPart
                        }

QUESTIONS:
                1)      I am not able to figure out what the corresponding 
serializer/deserializer would be?
                2)    Is this the best way of having my web service return an 
attachement? I would like to return some message like "Here is the product you 
slected" along with a PDF product manual, a gif image of the product and perhaps a 
video clip.



Thanks
Srinivas        

Reply via email to