Revisar el uso del objeto javax.activation.DataHandler

En Liberty, cada objeto DataHandler se puede escribir una sola vez en una corriente de datos de salida. La escritura repetida de un objeto DataHandler en un objeto OutputStream produce un archivo vacío. Después de llamar al método javax.activation.DataHandler.writeTo(OutputStream), no puede pasar el objeto DataHandler a otro método, devolverlo ni almacenarlo para un uso posterior.

Como solución, puede crear un nuevo objeto DataHandler e inicializarlo con el contenido que ya se ha recuperado del objeto DataHandler existente mediante el método writeTo. Por ejemplo:

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

FileOutputStream fos = new FileOutputStream(f);

// Escribir el objeto DataHandler en la corriente de datos de salida.
img_in.writeTo(fos);

// Crear un nuevo objeto DataHandler e inicializarlo con el
// contenido que se ha recuperado mediante el método writeTo anterior.

FileDataSource fos_out = new FileDataSource(f);

DataHandler img_out = new DataHandler(fos_out);


return img_out;