Hi there, I am tying to implement GZIP enabling Apache Axis. reffering follow URL. http://www-106.ibm.com/developerworks/webservices/library/ws-sqzsoap.html I have successed "version web service(Default Web Service)" using gzip, But DIME Web service using gzip, AXIS can not handle it outputting follow error. Do anyone have a good idea to handle DIME using gzip? Regards, koki Axis Error ---------------------------- AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXParseException: Content is not allowed in prolog. faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(SAXParser.java:345) at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationCon textImpl.java:242) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538) at org.apache.axis.Message.getSOAPEnvelope(Message.java:376) at org.apache.axis.client.Call.invokeEngine(Call.java:2583) at org.apache.axis.client.Call.invoke(Call.java:2553) at org.apache.axis.client.Call.invoke(Call.java:2248) at org.apache.axis.client.Call.invoke(Call.java:2171) at org.apache.axis.client.Call.invoke(Call.java:1691) at com.test.recieveservice.client.webservices.DimeClientTest.run(DimeClientTest .java:100) at com.test.recieveservice.client.webservices.DimeClientTest.main(DimeClientTes t.java:48) org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.axis.AxisFault.makeFault(AxisFault.java:129) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:543) at org.apache.axis.Message.getSOAPEnvelope(Message.java:376) at org.apache.axis.client.Call.invokeEngine(Call.java:2583) at org.apache.axis.client.Call.invoke(Call.java:2553) at org.apache.axis.client.Call.invoke(Call.java:2248) at org.apache.axis.client.Call.invoke(Call.java:2171) at org.apache.axis.client.Call.invoke(Call.java:1691) at com.test.recieveservice.client.webservices.DimeClientTest.run(DimeClientTest .java:100) at com.test.recieveservice.client.webservices.DimeClientTest.main(DimeClientTes t.java:48) Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(SAXParser.java:345) at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationCon textImpl.java:242) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538) ... 8 more ------------------------ TCPMonitor HTTPHeader ------------------------ <Request> POST /axis/services/recieveservice?wsdl 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: 127.0.0.1 Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 450 Accept-Encoding: gzip ・ ・ ・ ------------------------ <Response> HTTP/1.1 200 OK Content-Encoding: gzip Date: Tue, 14 Sep 2004 02:15:34 GMT Server: Apache-Coyote/1.1 Connection: close ・ ・ ・ ------------------------ Client Source ------------------------ package com.test.recieveservice.client.webservices; import org.apache.axis.Message; import org.apache.axis.MessageContext; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import org.apache.axis.attachments.AttachmentPart; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.message.SOAPEnvelope; import javax.xml.rpc.ParameterMode; import javax.xml.soap.SOAPBody; import javax.xml.namespace.QName; import java.net.URL; import java.util.Iterator; import javax.activation.DataHandler; import javax.activation.FileDataSource; import localhost.jp_ikepon_app_gzipaxisservletsample.services.Version.Version; import localhost.jp_ikepon_app_gzipaxisservletsample.services.Version.VersionServic e; import localhost.jp_ikepon_app_gzipaxisservletsample.services.Version.VersionServic eLocator; public class DimeClientTest { String filePass = "C:\\RespocseFiles\\"; public static void main(String[] args) { DimeClientTest obj = new DimeClientTest(); obj.run(args); } public void run(String[] args) { Service service = null; Call call = null; File dirsin = new File(filePass); dirsin.mkdirs(); String fileName = args[0]; try { service = new Service(); call = (Call)service.createCall(); call.setTargetEndpointAddress(new URL("http://localhost:8090/axis/services/recieveservice?wsdl")); call.setOperationName(new QName("recieveservice", "hello")); Object ret = call.invoke(new Object[]{fileName}); Iterator iterator = call.getResponseMessage().getAttachments(); AttachmentPart part = (AttachmentPart) iterator.next(); fileName = fileName.substring(fileName.lastIndexOf("\\") + 1); FileOutputStream fs = null; try { fs = new FileOutputStream(filePass + fileName); part.getDataHandler().writeTo(fs); fs.close(); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } ------------------------ Server Source ------------------------ package com.test.recieveservice.server; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPPart; import javax.xml.transform.dom.DOMSource; import org.apache.axis.Message; import org.apache.axis.MessageContext; import org.apache.axis.attachments.AttachmentPart; import org.w3c.dom.Document; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.rpc.handler.soap.SOAPMessageContext; public class DimeService { String folder = "D:/javasrc/dynaplant/classes/"; public boolean hello(String filename) { try { MessageContext ctx = MessageContext.getCurrentContext(); org.apache.axis.Message rspMsg= ctx.getResponseMessage(); rspMsg.getAttachmentsImpl().setSendType(org.apache.axis.attachments.Attachme nts.SEND_TYPE_DIME); AttachmentPart ap = new AttachmentPart(new DataHandler(new FileDataSource(folder+filename))); ap.setContentType("image"); rspMsg.addAttachmentPart(ap); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } ------------------------ WSDD ------------------------ <?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions targetNamespace="http://test.com/recieveservice/client/webservices" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://test.com/recieveservice/client/webservices" xmlns:intf="http://test.com/recieveservice/client/webservices" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <wsdl:message name="helloResponse"> <wsdl:part name="helloReturn" type="xsd:boolean" /> </wsdl:message> - <wsdl:message name="helloRequest"> <wsdl:part name="filename" type="xsd:string" /> </wsdl:message> - <wsdl:portType name="DimeService"> - <wsdl:operation name="hello" parameterOrder="filename"> <wsdl:input message="impl:helloRequest" name="helloRequest" /> <wsdl:output message="impl:helloResponse" name="helloResponse" /> </wsdl:operation> </wsdl:portType> - <wsdl:binding name="recieveserviceSoapBinding" type="impl:DimeService"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> - <wsdl:operation name="hello"> <wsdlsoap:operation soapAction="" /> - <wsdl:input name="helloRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://test.com/recieveservice/client/webservices" use="encoded" /> </wsdl:input> - <wsdl:output name="helloResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://test.com/recieveservice/client/webservices" use="encoded" /> </wsdl:output> </wsdl:operation> </wsdl:binding> - <wsdl:service name="DimeServiceService"> - <wsdl:port binding="impl:recieveserviceSoapBinding" name="recieveservice"> <wsdlsoap:address location="http://localhost/axis/services/recieveservice" /> </wsdl:port> </wsdl:service> </wsdl:definitions> ------------------------
