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 > > > >