users@jersey.java.net

[Jersey] Re: Message body reader/writer over very large InputStream

From: Adam Lindenthal <adam.lindenthal_at_oracle.com>
Date: Thu, 18 Dec 2014 18:26:43 +0100

Halo,

Ich fürchte mich, dass sie an der falschen Adresse sind…

Mit freundlichen Grüßen
Adam

> On 18 Dec 2014, at 17:23, Michael Delamere <michael.delamere_at_sevon-it.com> wrote:
>
> Was sind 901 Produkte? Google Feed ist online. Ich erstelle gleich die Weiterleitung und schicke Ihnen den Link zu.
>
> Am 18.12.2014 um 16:49 schrieb Behrooz Nobakht <nobeh5_at_gmail.com <mailto:nobeh5_at_gmail.com>>:
>
>> Hi,
>>
>> I already admit that this has not been the best approach. Yet this is a legacy context so please bear with me.
>>
>> I have a piece of application that is built on top of Jersey. One of the functionalities of the application is to transfer files over network through RESTful API on top of Jersey. We use a custom “message body reader/writer” for this purpose.
>>
>> The problem is that some times it could be that the transferred files are very large. This eventually leads to an OutOfMemoryError in the JVM.
>>
>> Basically, the API boils down to where we use the entityStream from Jersey API to write the body of the message. The Jersey API in a lower level uses an output stream that is provided by the URLConnection implementation. For this, there are two case:
>>
>> Using default URL connection factory that is on top of sun.* implementation.
>> Using Apache HTTP Client.
>> In both cases, the implementation uses an instance of ByteArrayOutputStream. The problem starts when growing the internal array is not possible and that’s how the memory error appears.
>>
>> Is there a workaround or solution for this either in configuration level or implementation level?
>>
>> We start to see the problem with around the files with size ~1.5GB.
>>
>> Thanks,
>> Behrooz
>>