Thank you Florian. That helped a lot. I forgot to mention I'm most interested in Server and Bridge.
As reference for the interested reader: For SOAP this is implemented in org.apache.cxf.io.CachedOutputStream$TransferableFileInputStream. Regarding the configuration: CXF properties from http://cxf.apache.org/docs/security.html#Security-Largedatastreamcaching are not working. Instead one uses session parameter bridge.memoryThreshold for the Bridge implementation, see https://chemistry.apache.org/java/javadoc/constant-values.html[https://chemistry.apache.org/java/javadoc/constant-values.html]. If I saw this correctly, then for the server this cannot be configured - instead you would override org.apache.chemistry.opencmis.commons.server.CmisServiceFactory.getMemoryThreshold(). Regarding the maximum allowed content size, it looks this cannot be configured at all for SOAP. In org.apache.chemistry.opencmis.server.impl.webservices.CmisWebServicesServlet.loadBus(ServletConfig) I see in line 294: bus.setProperty("bus.io.CachedOutputStream.MaxSize", "-1"); I guess it should instead use the value, which is returned from org.apache.chemistry.opencmis.bridge.AbstractBridgeServiceFactory.getMaxContentSize(). That is used in org.apache.chemistry.opencmis.server.shared.TempStoreOutputStreamFactory.TempStoreOutputStreamFactory(CmisServiceFactory, String, HttpServletRequest), but I think that's not used for SOAP. Andreas --- original message --- Hi Andreas, SOAP messages are not streamed, they are buffered as well. Because CXF is doing that, you will not find many traces in the OpenCMIS code. You can configure the memory threshold and temp directory, though. The Browser binding and the AtomPub binding support streaming without buffering for createDocument (client), setContentStream (client + server), getContentStream (client + server), appendContentStream (client), and checkIn (client). On the server side, streams have to be buffered because it is possible that additional data is following the stream. The binary content is not necessarily the last part of a multipart request. OpenCMIS (and PortCMIS) always send it as the last part, but other CMIS clients (or web browsers) might not. setContentStream is an exception because it just sends the stream and nothing else. Here unbuffered streaming is also supported on the server side. - Florian > Hi, > > when using SOAP, then the content is fully streamed, i.e. no buffering in > memory or on hard disk. > But when using Browser or Atom binding, then ThresholdOutputStream is > involved. > > Is there means to switch to full streaming? - I don't think so, when looking > into the source. > > The binary content is the last part of the multipart create request. Why > would it be necessary at all to buffer it? > > If this was already answered, please excuse. I searched the archive before, > but didn't find an answer. > > Thanks > > Andreas >