Hallo zusammen,
ich habe folgende Thematik:
In meinem Programm existieren zwei Threads die über eine Pipe Daten austauschen wollen. Genauer gesagt wird ein Objekt vom Typ DataBase(selbst erstellt) in einem Thread immer dann neu erstellt, wenn eine gewisse Text Datei neu gespeichert wurde. Das Objekt soll dann nun über die Pipe an den anderen Thread geschickt werden, welcher für die Auswertung zuständig ist. Dabei ist die Textdatei ca. 30 kByte groß.
Meine Vorgehensweise war nun im Sender aus meinem DataBase ein File Array zu erzeugen. Das mach ich so:
Das Array mit 24181 Feldern schicke ich dann über die Pipe an den anderen Thread. Dort kommt es auch an und wird korrekt als neues byte array mit 24181 Feldern zusammen gesetzt.
Wenn ich aber im Auswerter versuche mir aus dem byte array wieder ein DataBase Objekt zu erzeugen bekomme ich eine "java.io.StreamCorruptedException: invalid type code: 00" Exception.
Dabei gehe ich so vor:
Das komische ist, wenn ich den gleichen Code in den ersten Thread kopiere und mir dort aus dem generierten byte array ein DataBase Objekt erstelle, wird keine Exception geworfen und ich bekomme ich Objekt vom Typ DataBase.
An was kann das liegen? kann durch eine Pipe Verbindung falsche Daten übertragen worden?
Ich habe bis jetzt stichproben weise das zusendende mit dem empfangem array verglichen und bis jetzt sieht alles super aus.
Ich kann es mir aber nicht erklären, warum einmal eine Exception geworfen wird und einmal nicht, wenn es sich um das eigendlich gleiche array handelt..
Wär super wenn mir jemand weiter helfen könnte. Bin grad echt etwas am verzweifeln...
Grüße
Andi
ich habe folgende Thematik:
In meinem Programm existieren zwei Threads die über eine Pipe Daten austauschen wollen. Genauer gesagt wird ein Objekt vom Typ DataBase(selbst erstellt) in einem Thread immer dann neu erstellt, wenn eine gewisse Text Datei neu gespeichert wurde. Das Objekt soll dann nun über die Pipe an den anderen Thread geschickt werden, welcher für die Auswertung zuständig ist. Dabei ist die Textdatei ca. 30 kByte groß.
Meine Vorgehensweise war nun im Sender aus meinem DataBase ein File Array zu erzeugen. Das mach ich so:
Java:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(dataBase);
byte[] yourBytes = bos.toByteArray();
Das Array mit 24181 Feldern schicke ich dann über die Pipe an den anderen Thread. Dort kommt es auch an und wird korrekt als neues byte array mit 24181 Feldern zusammen gesetzt.
Wenn ich aber im Auswerter versuche mir aus dem byte array wieder ein DataBase Objekt zu erzeugen bekomme ich eine "java.io.StreamCorruptedException: invalid type code: 00" Exception.
Dabei gehe ich so vor:
Java:
ByteArrayInputStream bis1 = new ByteArrayInputStream(datas);
ObjectInputStream in1 = new ObjectInputStream(bis1);
Object temp = in1.readObject();// Hier kommt die Exception
Das komische ist, wenn ich den gleichen Code in den ersten Thread kopiere und mir dort aus dem generierten byte array ein DataBase Objekt erstelle, wird keine Exception geworfen und ich bekomme ich Objekt vom Typ DataBase.
An was kann das liegen? kann durch eine Pipe Verbindung falsche Daten übertragen worden?
Ich habe bis jetzt stichproben weise das zusendende mit dem empfangem array verglichen und bis jetzt sieht alles super aus.
Ich kann es mir aber nicht erklären, warum einmal eine Exception geworfen wird und einmal nicht, wenn es sich um das eigendlich gleiche array handelt..
Wär super wenn mir jemand weiter helfen könnte. Bin grad echt etwas am verzweifeln...
Grüße
Andi