Non è nel while....infatti lui tenta la lettura, ma poi si trova a non aver più niente da leggere ed entra in eccezione....

per la lettura di file esiste un ciclo molto ultilizzato

codice:
while( ( numByteLetti = iStream.read( buffer ) ) > 0 ) ...
potresti invece fare una cosa simile :

codice:
//Ho rinominato le variabili perchè siano comprensibili a tutti
...
int availableByte = objInputStream.available();
while( objInputStream.available() > 0 ){
   objReaded = objInputStream.readObject();
....
}
available ( mai usata ) se non ho interpretato male nella classe ObjectInputStream ritorna i byte disponibili alla prossima chiamata ( l'ovveride di InputStream - per chia andasse alle API Sun - API SUN ).

Quindi prova...