This content has been marked as final. Show 1 reply
I have solved the problem - for future references or for anybody else having the same problem read below:
The JavaDoc for HttpOutputStream states the following:
"There are two constructors for this class, one taking a length parameter, and one without any parameters. If the stream is created with a length then the request will be sent with the corresponding Content-length header and anything written to the stream will be written on the socket immediately. This is the preferred way. If the stream is created without a length then one of two things will happen: if, at the time of the request, the server is known to understand HTTP/1.1 then each write() will send the data immediately using the chunked encoding. If, however, either the server version is unknown (because this is first request to that server) or the server only understands HTTP/1.0 then all data will be written to a buffer first, and only when the stream is closed will the request be sent."
Constructing the HttpOutputStream with the size of the content to upload solved the problem. I guess the HTTP version was unknown or Oracle only understands HTTP/1.0 (anybody that can clear this up?), causing everything to be buffered (in memory) only to be send when the streams was closed, which in the case of a big file caused OutOfMemeryError.