[GLASSFISH-5258] gzip compressed ws-request are not working Created: 04/Jul/08 Updated: 10/Mar/17 Resolved: 01/Oct/08 Status: Project: Component/s: Affects Version/s: Fix Version/s: Resolved glassfish grizzly-kernel 9.1peur2 Type: Reporter: Resolution: Labels: Remaining Estimate: Time Spent: Original Estimate: Environment: Improvement johgoe Won't Fix None Not Specified Issuezilla Id: 5,258 V3 Priority: Assignee: Votes: Major jfarcand 0 Not Specified Not Specified Operating System: All Platform: All Description My Version is Sun Java System Application Server 9.1_02 (build b04-fcs) Sending a gzip compressed request to Glassfish failed. It seems like com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask not handle the header-field Content-Encoding of a incoming webservice request. There should be a GZipInputFilter when Content-Encoding is gzip before trying to parse the soap-message 1) Compression Property in httpListener off: My client sends a uncompressed request. ---> Glassfish sends uncompressed response 2) Compression Property in httpListener on: My client sends a uncompressed request. ---> Glassfish sends uncompressed response 3) Compression Enabled or Disabled & Client sends compressed request Message: Inhalt ist in Prolog nicht gestattet. com.sun.xml.ws.protocol.soap.MessageCreationException: SOAP-Meldung konnte nicht erstellt werden wegen Ausnahmefehler: Fehler im XML-Leseprogramm: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Inhalt ist in Prolog nicht gestattet. at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:292) at com.sun.xml.ws.transport.http.HttpAdapter.decodePacket(HttpAdapter.java:276) at com.sun.xml.ws.transport.http.HttpAdapter.access$500(HttpAdapter.java:93) at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:432) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135) at com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113) at com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87) at com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:226) at com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:155) at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve.java:114) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) Comments Comment by jfarcand [ 04/Jul/08 ] Re-assign to myself to see what's happening. Comment by jfarcand [ 09/Jul/08 ] Hum, the GZipInputFilter has been commented out for almost 5 years in GlassFish, Tomcat 4/5/6. Needs to understand/find why Comment by jfarcand [ 24/Jul/08 ] After investigation, it seems we never supported GZip compressed request. Our implementation is derived from Tomcat, and Tomcat hasn't supported it as well. Turning that issue into an enhancement. Meanwhile, I recommend using Apache in front of GlassFish as Apache as several mod_* that can be used to decompress the request. Comment by matthiasblaesing [ 10/Mar/17 ] Together with grizzly 2.3.29 the payara fork was updated to support compressed requests. The changeset can be found here: https://github.com/payara/Payara/commit/4b1eb74206267f4e2ace8df4c7cde8506535396b I'm the author of that changeset and if there is interest to merge this you can do so - I have an OCA on file and I consider that changeset covered by it. Generated at Wed Apr 05 10:47:25 UTC 2017 using JIRA 6.2.3#6260sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.