Sprawdź użycie obiektu javax.activation.DataHandler

Na serwerze Liberty każdy obiekt DataHandler może zostać zapisany do strumienia wyjściowego tylko raz. Zapisanie obiektu DataHandler w obiekcie OutputStream więcej niż raz powoduje zapisanie pustego pliku. Po wywołaniu metody javax.activation.DataHandler.writeTo(OutputStream) nie można przekazać obiektu DataHandler do innej metody, zwrócić go ani zapisać w celu późniejszego użycia.

Aby obejść ten problem, można utworzyć nowy obiekt DataHandler i zainicjować go z użyciem treści, która została już pobrana z istniejącego obiektu DataHandler za pomocą metody writeTo. Na przykład:

File f = new File("received_image");
if (f.exists()) {
f.delete();
}

FileOutputStream fos = new FileOutputStream(f);

// Zapisywanie obiektu DataHandler do strumienia wyjściowego.
img_in.writeTo(fos);

// Tworzenie nowego obiektu DataHandler i inicjowanie go z użyciem
// treści pobranej za pomocą powyższej metody writeTo.

FileDataSource fos_out = new FileDataSource(f);

DataHandler img_out = new DataHandler(fos_out);


return img_out;