Witam
Tytułowy wyjątek leci mi w sytuacji, gdy akcja (klasa rozszerza org.apache.struts.action.Action) w odpowiedzi zwraca obiekt, a potem plik, jak niżej:
File lvPakietWewnetrzny = new File("jakassciezka.zip");
FileInputStream lvFIS = null;
OutputStream lvOUT = null;
try {
lvOUT = response.getOutputStream();
new ObjectOutputStream(lvOUT).writeObject(
new OpisPakietu(lvPakietWewnetrzny.getName(), null));
lvFIS = new FileInputStream(lvPakietWewnetrzny);
IOUtils.copy(lvFIS, lvOUT);
} finally {
if(lvFIS!=null) try{lvFIS.close();}catch(Exception e){}
if(lvOUT!=null) try{lvOUT.close();}catch(Exception e){}
}
a przechwytywanie tego dalej wygląda tak:
InputStream lvIS = null;
try {
lvIS = urlConnection.getInputStream();
OpisPakietu opis = (OpisPakietu) new ObjectInputStream(lvIS).readObject(); //tu mi wyrzuca wyjątek
//i dalej idzie odczyt pliku...
Klasa OpisPakietu implementuje Serializable, ma tylko dwa pola typu String, IOUtils to klasa z pakietu org.apache.commons.io. Błąd ten leci bardzo rzadko, nawet nie potrafię powtórzyć sytuacji. Gdzieś wyczytałem, że to może być kwestia kodowania pliku, tylko, że najpierw jest czytany obiekt, więc to chyba nie to, w innym miejscu dowiedziałem się, że nagłówek http kończy się właśnie taką sekwencją znaków (0d 0a 0d 0a), tylko dlaczego miałby czytać ostatnie bajty nagłówka? Może ktoś wie, jak rozwiązać ten problem?