If you can enable MTOM on the client then the arrays get transformed into mime 
attachments. With java using Axis2 you enable mtom on the client by saying:
    
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM,
 Constants.VALUE_TRUE);
 
I am not sure how/if you can do that with .net.


________________________________

From: Ephemeris Lappis [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 18, 2007 1:24 PM
To: axis-user@ws.apache.org
Subject: RE: [Axis2] Attachment on client using generated stub



It's ok ! I've already seen that the XMIME is defined in the MTOM example. The 
question now is why W3 types must be declared and mapped by projects files, and 
not in some standard module ?

 

I've tested an MTOM example with a .net c-sharp client, and it seems to work : 
the Microsoft studio generates mapped classes for the custom types, and 
converts the Base64Binary to a structure with an array of byte. This works but 
this is not the better way. The application must load the whole data array 
before it's sent in a simple message without attachment, instead of reading the 
data when needed, as do the DataHandler, and send them attached. I've just had 
a look on this problem, but I don't know if there is a solution...

 

This mailing list is not the right place for questions about .net web services, 
but I'd like to know if the Base64Binary type is actually and correctly used by 
other implementations.

 

--

Ephemeris Lappis

 

________________________________

De : Masin, Valerie [mailto:[EMAIL PROTECTED] 
Envoyé : mercredi 18 avril 2007 16:36
À : axis-user@ws.apache.org
Objet : RE: [Axis2] Attachment on client using generated stub

 

I realize that my wsdl showed xmime:base64Binary where presumably xmime is 
"http://www.w3.org/2005/05/xmlmime which came from their mtom sample code. But 
I mapped xmime to http://www.w3.org/2001/XMLSchema and it works fine.

 

________________________________

From: Ephemeris Lappis [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, April 18, 2007 12:32 AM
To: axis-user@ws.apache.org
Subject: RE: [Axis2] Attachment on client using generated stub

Hello.

 

This looks like the old Axis1 way to generate code for the attachment, using 
the DataHandler. But this is not what the Axis2 example shows, using the 
MessageContext to puts the attachments with the low level OperationClient API...

 

I will test with this kind of WSDL... A question : why the XMIME base64 binary 
type is not already mapped with a java type and must be imported in projects 
schemas ?

 

Thanks for your help...

 

--

Ephemeris Lappis

 

________________________________

De : Masin, Valerie [mailto:[EMAIL PROTECTED] 
Envoyé : mardi 17 avril 2007 19:56
À : axis-user@ws.apache.org
Objet : RE: [Axis2] Attachment on client using generated stub

 

I'm no expert so I don't know if I am answering your question exactly, but I 
send attachments this way.

In my wsdl I have something like this:

 <wsdl:types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema"; ...>
   <element name="importDocument">
    <complexType>
     <sequence>
      <element name="name" type="xsd:string"/>
      <element name="document" type="xmime:base64Binary"/>
     </sequence>
    </complexType>
   </element>

  </schema>
 </wsdl:types>

 <wsdl:message name="importDocumentRequest">
  <wsdl:part name="parameters" element="impl:importDocument"/>
 </wsdl:message>

which generates this signature:

        public  com.docharbor.webservices.ImportDocumentResponse importDocument
        (
          java.lang.String param48,javax.activation.DataHandler param49     
         )

 

So you are working directly with DataHandlers, not with MessageContext

 

Hope this helps

 

________________________________

From: Ephemeris Lappis [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, April 17, 2007 4:20 AM
To: Axis-User
Subject: [Axis2] Attachment on client using generated stub

Hello.

 

I have not found any example of simple client, using the interface code 
generated from WSDL, and calling a service stub to send an attachment...

 

The service operation signature is :

 

public TestReport processTestRequest(final TestRequest request, final String 
attchmentID) throws TestException

 

Where TestRequest and TestReport are simple javabeans. The service 
implementation uses the message context to retrieve the attachment data handler 
for the given id :

 

MessageContext messageContext = MessageContext.getCurrentMessageContext();

Attachments attachments = messageContext.getAttachmentMap();

DataHandler dataHandler = attachments.getDataHandler(attchmentID);

 

If I'm not wrong, interpreting what I've seen in samples code, the client must 
create the attachment using the message context :

 

FileDataSource dataSource = new FileDataSource(file);

DataHandler dataHandler = new DataHandler(dataSource);

MessageContext messageContext = new MessageContext();

String attachmentID = messageContext.addAttachment(dataHandler);

 

But I've not found any way to take into account the message context except with 
a sample code that creates from scratch an OperationClient, etc.

 

What is the better way to do that ?

 

Thanks for your help...

 

--

Ephemeris Lappis

 

Reply via email to