Revisar o uso do objeto javax.activation.DataHandler

No Liberty, cada objeto DataHandler pode ser gravado em um fluxo de saída somente uma vez. Gravar um objeto DataHandler em um objeto OutputStream mais de uma vez resulta em um arquivo vazio. Depois de chamar o método javax.activation.DataHandler.writeTo(OutputStream), não é possível passar o objeto DataHandler para outro método, retorná-lo ou armazená-lo para uso posterior.

Como uma solução alternativa, é possível criar um novo objeto DataHandler e inicializar o objeto DataHandler com o conteúdo que já foi recuperado do objeto DataHandler existente usando o método writeTo. Por exemplo:

< span class="Code"> < span class= "JavaType"> Arquivo < /span> f = < span class="JavaKeyword"> novo < /span> Arquivo ("received_image");
if (f.exists ()) {
f.delete();
}

FileOutputStream fos = new FileOutputStream (f);

// Grave o objeto DataHandler no fluxo de saída.
img_in.writeTo(fos);

// Crie um novo objeto DataHandler e inicialize-o com
// o conteúdo que foi recuperado usando o método writeTo acima.

FileDataSource fos_out = new FileDataSource (f);

DataHandler img_out = new DataHandler(fos_out);


return img_out;