His definition is correct, in Axis 1.1 and other tools a byte array is
always mapped to a xsd:base64Binary type, this looks like a 1.2 bug.

Cheers
Simon

> -----Original Message-----
> From: Brown, Mike [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, December 14, 2004 6:48 AM
> To: '[EMAIL PROTECTED]'
> Subject: RE: Long: Problem with a method that returns byte[]
> 
> Your problem is simple. You defined the return type as an 
> array of bytes and that is what it looks like as SOAP. Using 
> attachments would be best in this case. Another option would 
> be to return a String that is the file Base64 encoded (that's 
> what I did on a project using SOAP before attachments were 
> part of the spec). Of course DIME does practically the same 
> thing "automagically" for you.
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 14, 2004 12:10 AM
> To: Axis User
> Subject: Long: Problem with a method that returns byte[]
> 
> Hi all,
> sorry for the long post but we're facing this problem and any 
> help would be greatly appreciated.
> We have a method with this signature:
> 
> 
> byte[] getDocumentDataByteArray(String param1, String param2)
> 
> This method, based on param1 and param2, retrieves a document 
> from the server
> 
> and returns it to the client with a byte array.
> 
> Using JBuilder we'have generated both client and server code 
> with the Axis Toolkit integrated in this IDE. After making 
> some test with little files (40/50Kb), we'have tried with 
> bigger files (1/2 Mb). With these files we experienced a 
> serious performance problem so we decided to see what was 
> happening "behind the scene" with Ethereal. The sniffing is attached:
> ------------------ Start request ----------------------
> 
> POST /my-services/services/myServices HTTP/1.0
> Content-Type: text/xml; charset=utf-8
> Accept: application/soap+xml, application/dime, 
> multipart/related, text/*
> User-Agent: Axis/1.1
> Host: localhost.localdomain
> Cache-Control: no-cache
> Pragma: no-cache
> SOAPAction: ""
> Content-Length: 706
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> <soapenv:Body>
> <ns1:getDocumentDataByteArray
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:ns1="http://filenet";>
> <param1
> xsi:type="xsd:string">uWlkqDM045IfYRgD8rouTX4FBw9TILtfzC52Kk27
> ehQVd4AeqpijKu
> cpJDXlPmnz+RdJjKH2ViJPhMR/XyiAWC+t83jV0vgA25Hwh6oA/YitfBBFTDm0
> tkmXDD8VOT
> cpJDXlPmnz+kmBu
> 2iwHW45IcZXqEhQvnHTPUN77HXkDljuu6vsYAiMUM=</param1>
> <param2 xsi:type="xsd:string">003670716</param2>
> </ns1:getDocumentDataByteArray>
> </soapenv:Body>
> </soapenv:Envelope>
> ------------------ End request ----------------------
> 
> 
> ------------------ Start response ----------------------
> 
> HTTP/1.1 200 OK
> X-Powered-By: Servlet 2.4; Tomcat-5.0.28/JBoss-3.2.6 (build:
> CVSTag=JBoss_3_2_6
> date=200410140106)
> Content-Type: text/xml;charset=utf-8
> Date: Mon, 13 Dec 2004 14:07:28 GMT
> Server: Apache-Coyote/1.1
> Connection: close
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> <soapenv:Body>
> <ns1:getDocumentDataByteArrayResponse
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:ns1="http://myservices";>
> <ns1:getDocumentDataByteArrayReturn xsi:type="soapenc:Array"
> soapenc:arrayType="xsd:byte[1671291]"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
> 
> <item>80</item>
> <item>75</item>
> <item>3</item>
> <item>4</item>
> <item>20</item>
> <item>0</item>
> <item>0</item>
> <item>0</item>
> <item>12</item>
> <item>0</item>
> <item>54</item>
> <item>117</item>
> <item>-92</item>
> <item>48</item>
> <item>-17</item>
> <item>100</item>
> <item>-57</item>
> <item>34</item>
> <item>-23</item>
> <item>127</item>
> <item>25</item>
> <item>0</item>
> <item>0</item>
> <item>-40</item>
> .....and so on until the end
> 
> ------------------ End Response ----------------------
> 
> As you can see we think that the big problem is related to 
> the fact that the byte array of this file of 1,6 Mb is 
> returned using 1,6M element <item> containing the value of a 
> single byte (16 byte to send 1 byte of payload...).
> Why do this happens? We have another method which create a 
> document with this signature
> 
> <return_type> createDocument(String param1, byte[] documentData)
> 
> and this document passes the content of the file as an 
> encoded string and not with all this <item> elements. Why the 
> getDocument method does not use the same way to send a byte array?
> 
> We know that to send large file DIME would be best but we 
> would like to understand why this happens before 
> investigating DIME......
> 
> Thank you in advance
> iuser
> 
> 
> 
> 
> 
> ____________________________________________________________
> Libero ADSL: 3 mesi gratis e navighi a 1.2 Mega, senza costi 
> di attivazione.
> Abbonati subito su http://www.libero.it
> 
> 
> 
> 

Reply via email to