.object( new FileInputStream(file)) ?

Den fre. 16. nov. 2018 kl. 19:00 skrev Joe Schaefer <[email protected]>:

> You probably need to use a stream instead of loading all of the
> attachments into RAM prior to delivery.
>
> On Fri, Nov 16, 2018 at 12:36 PM David Karlsen <[email protected]>
> wrote:
>
>> I'm struggling with outofmemory exception when using the following:
>>
>>
>> public Response upload( String token, File file ) {
>>     FsDepot fsDepot = getApi();
>>     Attachment attachment = new AttachmentBuilder()
>>         .mediaType( "application/gzip" )
>>         .contentDisposition( new ContentDisposition( "form-data;
>> name=\"data\" ; filename=\"" + file.getName() + "\"" ) )
>>         .object( file )
>>         .build();
>>
>>     Attachment tokenAttachment = new AttachmentBuilder()
>>         .object( token )
>>         .contentDisposition( new ContentDisposition( "form-data;
>> name=\"token\"" ) )
>>         .mediaType( MediaType.TEXT_PLAIN )
>>         .build();
>>
>>     MultipartBody multipartBody = new MultipartBody( Arrays.asList(
>> attachment, tokenAttachment ) );
>>
>>     return fsDepot.upload( multipartBody.getAllAttachments() );
>> }
>>
>>
>> protected <T> T getApi( Class<T> clazz, int timeoutInSeconds, URL
>> apiBaseAddress, boolean verbose ) {
>>     List providers = Arrays.asList( new MultipartProvider(), new
>> FormEncodingProvider<>() );
>>
>>     LoggingFeature loggingFeature = new LoggingFeature(null, null,
>> 64000, false, false);
>>     T t = JAXRSClientFactory.create( apiBaseAddress.toExternalForm(),
>> clazz, providers, verbose ?
>>             Collections.singletonList( loggingFeature ):
>>             Collections.emptyList(),
>>             null );
>>     ClientConfiguration clientConfiguration = WebClient.getConfig( t );
>>     clientConfiguration.getRequestContext().put(
>> Message.MAINTAIN_SESSION, Boolean.TRUE );
>>
>>     HTTPConduit httpConduit = clientConfiguration.getHttpConduit();
>>     TLSClientParameters tlsClientParameters = new TLSClientParameters();
>>     tlsClientParameters.setDisableCNCheck( true );
>>     tlsClientParameters.setTrustManagers( new TrustManager[]{new
>> TrustAllTrustManager()});
>>     httpConduit.setTlsClientParameters( tlsClientParameters );
>>     HTTPClientPolicy httpClientPolicy = httpConduit.getClient();
>>
>>     httpClientPolicy.setAllowChunking( false );
>>     httpClientPolicy.setConnection( ConnectionType.KEEP_ALIVE );
>>     httpClientPolicy.setConnectionTimeout( TimeUnit.SECONDS.toMillis( 2 )
>> );
>>     //have higher timeout on network than towards ADCM
>>     httpClientPolicy.setReceiveTimeout( TimeUnit.SECONDS.toMillis(
>> timeoutInSeconds + 10 ) );
>>     httpClientPolicy.setAutoRedirect( false );
>>     httpConduit.setClient( httpClientPolicy );
>>
>>     return t;
>> }
>>
>>
>> --
>> --
>> David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
>>
>

-- 
--
David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen

Reply via email to