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">uWlkqDM045IfYRgD8rouTX4FBw9TILtfzC52Kk27ehQVd4AeqpijKu cpJDXlPmnz+RdJjKH2ViJPhMR/XyiAWC+t83jV0vgA25Hwh6oA/YitfBBFTDm0tkmXDD8VOTkmBu 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