Chemistry
  1. Chemistry
  2. CMIS-416

Can't execute org.apache.chemistry.opencmis.client.api.Session.query() method under WL 10.x app server because HTTP POST chunking value is set to > 64k in size

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: OpenCMIS 0.4.0
    • Fix Version/s: OpenCMIS 0.5.0
    • Labels:
      None
    • Environment:

      WebLogic 10.3 running under Windows Server 2008

      Description

      On WebLogic 10.3, the HTTP chunking size for keep-alive sessions must be < 64k size or an HTTP POST command will fail. In the 0.4.0 version of HttpUtils the BUFFER_SIZE constant is set to a pretty large value (2 * 1024 * 1024 bytes), set on line 54 of HttpsUtils.java . With this setting, HTTP POST methods that go through the HttpUtils.invoke() method fail with an error on WL 10.3.x servers. On line 166, this statement:

      conn.setChunkedStreamingMode(BUFFER_SIZE);

      sets the buffer size and the subsequent write of the buffer fails. Reducing the size of BUFFER_SIZE to < 64k solves this issue.

        Activity

        Hide
        Florian Müller added a comment -

        I have set the Web Services chunk size from 64k to 64k-1. That did the trick for AtomPub and should work here too. (OpenCMIS 0.7.0)

        Show
        Florian Müller added a comment - I have set the Web Services chunk size from 64k to 64k-1. That did the trick for AtomPub and should work here too. (OpenCMIS 0.7.0)
        Hide
        Dilip MD added a comment -

        Hi,

        0.6.0 version version still has buffer set to (2 * 1024 * 1024).

        After changing this to less than 64 KB, it solves problem with AtomPub connection. But not with Webservices type and it throws up error like below.

        java.lang.ArrayIndexOutOfBoundsException: -1
        at weblogic.utils.http.HttpChunkOutputStream.writeChunkHeader(HttpChunkOutputStream.java:177)
        at weblogic.utils.http.HttpChunkOutputStream.flush(HttpChunkOutputStream.java:197)
        at weblogic.utils.http.HttpChunkOutputStream.close(HttpChunkOutputStream.java:160)
        at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:347)
        at weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLConnection.java:37)
        at weblogic.net.http.HttpURLConnection.getHeaderFields(HttpURLConnection.java:718)
        at com.sun.xml.ws.transport.http.client.HttpClientTransport.getHeaders(HttpClientTransport.java:179)
        at com.sun.xml.ws.transport.http.client.HttpResponseProperties.getResponseHeaders(HttpResponseProperties.java:62)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.xml.ws.api.PropertySet$MethodAccessor.get(PropertySet.java:283)
        at com.sun.xml.ws.api.PropertySet.get(PropertySet.java:335)
        at com.sun.xml.ws.api.DistributedPropertySet.get(DistributedPropertySet.java:126)
        at com.sun.xml.ws.client.ResponseContext.get(ResponseContext.java:109)
        at org.apache.chemistry.opencmis.client.bindings.spi.webservices.AbstractPortProvider.endCall(AbstractPortProvider.java:152)
        at org.apache.chemistry.opencmis.client.bindings.spi.webservices.ObjectServiceImpl.createDocument(ObjectServiceImpl.java:90)

        Here I'm using Weblogic 10.3.3. Also tried with increasing the "-Dweblogic.Chunksize" value which did not work. Any idea on this?

        Show
        Dilip MD added a comment - Hi, 0.6.0 version version still has buffer set to (2 * 1024 * 1024). After changing this to less than 64 KB, it solves problem with AtomPub connection. But not with Webservices type and it throws up error like below. java.lang.ArrayIndexOutOfBoundsException: -1 at weblogic.utils.http.HttpChunkOutputStream.writeChunkHeader(HttpChunkOutputStream.java:177) at weblogic.utils.http.HttpChunkOutputStream.flush(HttpChunkOutputStream.java:197) at weblogic.utils.http.HttpChunkOutputStream.close(HttpChunkOutputStream.java:160) at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:347) at weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLConnection.java:37) at weblogic.net.http.HttpURLConnection.getHeaderFields(HttpURLConnection.java:718) at com.sun.xml.ws.transport.http.client.HttpClientTransport.getHeaders(HttpClientTransport.java:179) at com.sun.xml.ws.transport.http.client.HttpResponseProperties.getResponseHeaders(HttpResponseProperties.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.xml.ws.api.PropertySet$MethodAccessor.get(PropertySet.java:283) at com.sun.xml.ws.api.PropertySet.get(PropertySet.java:335) at com.sun.xml.ws.api.DistributedPropertySet.get(DistributedPropertySet.java:126) at com.sun.xml.ws.client.ResponseContext.get(ResponseContext.java:109) at org.apache.chemistry.opencmis.client.bindings.spi.webservices.AbstractPortProvider.endCall(AbstractPortProvider.java:152) at org.apache.chemistry.opencmis.client.bindings.spi.webservices.ObjectServiceImpl.createDocument(ObjectServiceImpl.java:90) Here I'm using Weblogic 10.3.3. Also tried with increasing the "-Dweblogic.Chunksize" value which did not work. Any idea on this?
        Hide
        Florian Müller added a comment -

        Reduced chunk size to 64k.

        Show
        Florian Müller added a comment - Reduced chunk size to 64k.

          People

          • Assignee:
            Florian Müller
            Reporter:
            George Florentine
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 2h
              2h
              Remaining:
              Remaining Estimate - 2h
              2h
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development