Could you try with disabling request compression :

config.setGzipRequesting(false);

Did you use direct HTTP connection or did you got thru mod_jk for exampe ?

Also I see you're using XmlRpcLiteHttpTransportFactory which is HTTP
1.0 and gzip support is only on HTTP 1.1. Could you try with
XmlRpcCommonsTransportFactory instead ?

2006/4/12, Jochen Wiedmann (JIRA) <xmlrpc-dev@ws.apache.org>:
>     [ 
> http://issues.apache.org/jira/browse/XMLRPC-79?page=comments#action_12374161 ]
>
> Jochen Wiedmann commented on XMLRPC-79:
> ---------------------------------------
>
> > Sorry, I forgot to mention that I updated the web.xml file accordingly so 
> > that the
> > user-defined subclass is properly registered within the web application
>
> So it was wise not to close the issue. ;-)
>
> For now, I can simply confirm that I can reproduce the problem. Hope to fix 
> it in the next days.
>
>
> > Problems when enabling gzip compression
> > ---------------------------------------
> >
> >          Key: XMLRPC-79
> >          URL: http://issues.apache.org/jira/browse/XMLRPC-79
> >      Project: XML-RPC
> >         Type: Bug
>
> >   Components: Releases
> >     Versions: 3.0a1
> >  Environment: Linux Red Hat
> > Java 1.4.2 and 1.5(1.5.0_06)
> > Apache Tomcat 5.0.19, 5.5.9
> >     Reporter: Inaki
> >     Assignee: Jochen Wiedmann
> >  Attachments: MyXmlRpcClient.java
> >
> > I am having problems when enabling the request/response compression
> > mode. I am using xmlrpc-3.0a1.jar for both my client and my server. In
> > the client I run the following:
> >        config = new XmlRpcClientConfigImpl();
> >        config.setServerURL(serverURL);
> >        // enables faster and memory saving streaming mode
> >        config.setContentLengthOptional(true);
> >         // enable vendor extensions to allow compression, data types 
> > support ...
> >         config.setEnabledForExtensions(true);
> >         config.setGzipCompressing(true); // requests gzip compression
> >         config.setGzipRequesting(true);    // requests server to gzip 
> > response
> >
> >         client = new XmlRpcClient();
> >         client.setConfig(config);
> >         client.execute(...)
> >         [...]
> > In the server I make use of the XmlRpcServlet class
> > (org.apache.xmlrpc.webserver package) embedded into Tomcat 5 and I have
> > set enabledForExtensions to true within the init parameters of the
> > servlet (web.xml file)
> > When I run a dummy request as it is described in the code above I get
> > the following exception:
> > org.apache.xmlrpc.XmlRpcException: Failed to parse XML-RPC request:
> > Content is not allowed in prolog.
> > at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse
> > (XmlRpcStreamTransport.java:274)
> > at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest
> > (XmlRpcStreamTransport.java:216)
> > at org.apache.xmlrpc.client.XmlRpcClientWorker.execute
> > (XmlRpcClientWorker.java:53)
> > at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
> > at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136)
> > at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125)
> > at esavo.voql.xmlrpc.MyXmlRpcClient.execute(MyXmlRpcClient.java:54)
> > at esavo.voql.xmlrpc.MyXmlRpcClient.main(MyXmlRpcClient.java:74)
> > If I comment the gzip compression out, both on the request and the
> > response, my test works fine:
> >       config = new XmlRpcClientConfigImpl();
> >        config.setServerURL(serverURL);
> >        // enables faster and memory saving streaming mode
> >        config.setContentLengthOptional(true);
> >         // enable vendor extensions to allow compression, data types 
> > support ...
> >         config.setEnabledForExtensions(true);
> >         client = new XmlRpcClient();
> >         client.setConfig(config);
> >         client.execute(...)
> >         [...]
> > The complete source code is the following:
> > 1. Client Side
> > -------------------------
> > package esavo.voql.xmlrpc;
> > import java.net.URL;
> > import org.apache.xmlrpc.*;
> > import org.apache.xmlrpc.client.*;
> > /**
> >  * MyXmlRpcClient
> >  * @author Inaki Ortiz de Landaluce Saiz - ESAC/ESA - Madrid, Spain
> >  */
> > public class MyXmlRpcClient {
> >
> >     /** XMLRpcClientConfig instance to specify serverURL, credentials 
> > ...etc */
> >     private XmlRpcClientConfigImpl config;
> >     /** The XmlRpcClient itself */
> >     private XmlRpcClient client;
> >
> >     /**
> >      * Creates a new instance of MyXmlRpcClient
> >      */
> >     public MyXmlRpcClient(URL serverURL) {
> >         // Step 1: Instances the client configuration and sets some 
> > properties
> >         // N.B: This should be configurable through a xml or properties file
> >
> >         config = new XmlRpcClientConfigImpl();
> >         config.setServerURL(serverURL);
> >         // enables faster and memory saving streaming mode
> >         config.setContentLengthOptional(true);
> >         // enable vendor extensions to allow compression, data types 
> > support ...
> >         config.setEnabledForExtensions(true);
> >         // it works fine when the following two lines are commented
> >         config.setGzipCompressing(true); // requests gzip compression
> >         config.setGzipRequesting(true);  // requests server to gzip response
> >
> >         // Step 2: Instances the client and atttaches the configuration to 
> > it
> >
> >         client = new XmlRpcClient();
> >         client.setConfig(config);
> >         // sets the fastest transport factory.
> >         // There are several transport factories available:
> >         //  XmlRpcSunHttpTransportFactory  - Uses default HTTP connection
> >         //  XmlRpcCommonsTransportFactory  - Jakarta commons, lower memory 
> > profile
> >         //  XmlRpcLiteHttpTransportFactory - Faster, does not support 
> > HTTP/1.1</ul>
> >         client.setTransportFactory(new 
> > XmlRpcLiteHttpTransportFactory(client));
> >     }
> >
> >     /**
> >      * Executes an XML-RPC call
> >      * @param methodName The method being performed.
> >      * @param method The parameters.
> >      * @return The result object
> >      */
> >     public Object execute(String methodName, Object[] params) throws 
> > XmlRpcException {
> >         return client.execute(methodName, params);
> >     }
> >
> >     /**
> >      * Returns XmlRpcClient instance
> >      */
> >     public XmlRpcClient getClient() {
> >         return client;
> >     }
> >
> >     public static void main(String[] args) {
> >         String serverStr = 
> > "http://localhost:8084/VOQL-server/servlet/xmlrpc";;
> >         try {
> >             URL serverURL = new URL(serverStr);
> >             MyXmlRpcClient client = new MyXmlRpcClient(serverURL);
> >
> >             // full check disabled
> >             Object[] params = new Object[]{new Boolean(false)};
> >             Boolean result = (Boolean) client.execute("Status.check", 
> > params);
> >             System.out.println("Result is " + result.toString());
> >         } catch (XmlRpcClientException e) {
> >             e.printStackTrace();
> >         } catch (Exception e) {
> >             e.printStackTrace();
> >         }
> >     }
> > }
> > 2. Server Side
> > --------------------------
> > 2.1  WAR configuration file (web.xml)
> > -------------------------------------------------------------------
> > <?xml version="1.0" encoding="UTF-8"?>
> > <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> > xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
> > http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
> >     <servlet>
> >         <servlet-name>XmlRpcServlet</servlet-name>
> >         
> > <servlet-class>org.apache.xmlrpc.webserver.XmlRpcServlet</servlet-class>
> >         <init-param>
> >             <param-name>enabledForExtensions</param-name>
> >             <param-value>true</param-value>
> >         </init-param>
> >         </servlet>
> >     <servlet-mapping>
> >         <servlet-name>XmlRpcServlet</servlet-name>
> >         <url-pattern>/servlet/xmlrpc</url-pattern>
> >     </servlet-mapping>
> >     <session-config>
> >         <session-timeout>
> >             30
> >         </session-timeout>
> >     </session-config>
> >     <welcome-file-list>
> >       <welcome-file>
> >             index.jsp
> >         </welcome-file>
> >     </welcome-file-list>
> > </web-app>
> > 2.2 Handler
> > -----------------------
> > package esavo.voql.server;
> > /**
> >  *
> >  * @author Inaki Ortiz de Landaluce Saiz - ESAC/ESA - Madrid, Spain
> >  */
> > public class Status {
> >
> >     /** Creates a new instance of Status */
> >     public Status() {
> >     }
> >
> >     public boolean check(boolean fullCheck) {
> >         // perform a full check on service availability. TBD
> >         if(!fullCheck) return true;
> >         else return false;
> >     }
> >
> > }
> > 2.3 XmlRpcServlet.properties
> > ----------------------------------------------------
> > Remote=org.apache.xmlrpc.test.BaseTest$Remote
> > Status=esavo.voql.server.Status
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the administrators:
>    http://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see:
>    http://www.atlassian.com/software/jira
>
>

Reply via email to