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:

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

FileOutputStream fos = nowy 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 = nowy FileDataSource (f);

DataHandler img_out = new DataHandler(fos_out);


return funkcja img_out;