Problem mit ObjectInputStreams

D

derDude

Gast
Hallo,

ich bastle zurzeit auf Basis des Chat Servers im FAQ Bereich eine Client - Server Architektur. Welche über ObjectIn- und ObjectOutputstreams kommuniziert.

Dabei werden dem Server Objekte gesandt in denen Methoden enthalten sind die er ausführen soll. Dabei kommt es sporadisch zu Fehlern.

Serverseitig kommt es beim lesen des Input Streams zur java.lang.ClassCastException. Das lesen sieht folgender massen aus:
Java:
...
while (true) {
   Object o = in.readObject();
   if (o != null) {
      this.ObjectHandling(o);
   }
}
...

Das schreiben Client seitig:
Java:
	public String writeObject(Object o) {
		try {
			this.out.writeObject(o);
			this.out.flush();
			.....

Und Client seitig kommt es auch sporadisch zur EOF-exception ebenfalls beim lesen. Die Methoden sind äquivalent was die Methoden aufrufe bei den In- bzw. Outputstreams angeht.

Ich hoffe Ihr könnt mir weiter helfen. Wie gesagt ich konnte bisher noch keine Regelmäßigkeit feststellen.

Vielen Dank, schonmal
 

vladimir

Aktives Mitglied
Es sieht mir nach falschem Kasten von Objekten, die Meldung sagt es schon!
derDude hat gesagt.:
java.lang.ClassCastException
Kann es sein dass der Server und Client auf falsche Klassen kastet.
Die serialisierten Objekte sind besonderes empfindlich, wenn Du Änderungen an den Klassen vornimmst musst Du aufpassen! Die Klassen müssen absolut identisch sein!
 
Zuletzt bearbeitet:
D

DerDude

Gast
Hi,

danke erstmal für die Antwort, die Klasse(n) sind definitiv identisch da sich Server und Client und somit auch die Protokoll klassen in einem Workspace befinden gibt es nur eine Instanz der jeweiligen Klasse. Desweiteren passiert immer in der gleichen Klasse die ClassCastException obwohl in dieser Klasse gar kein TypCast statt findet.

Hier mal die Klasse, laut Fehlermeldung versucht er das Suchwort als ArtikelList zu Casten wird aber nie gemacht.
Java:
public class ArtikelList extends EdpRequestExecuter {

	private static final long serialVersionUID = 5594251250415309121L;

	private String suchwort = "";

	public ArtikelList(String such) {
		this.suchwort = such;
	}

	@Override
	protected void run() {
		try {
			query.startQuery("2:1", "", "such=`" + suchwort, "such");
			Vector<String> nummern = new Vector<String>();
			for (int i = 0; i < 20 && query.getNextRecord(); i++) {
				nummern.add(query.getField(1));
				if (query.getField(1).equals(suchwort))
					break;
			}
			query.breakQuery();
			this.user.putObjectOut(new ArtikelListAntwort(nummern));
			return;
		} catch (InvalidQueryException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.user.putObjectOut(new EdpError("Fehler bei Listen anfrage"));
		return;
	}

}
 

vladimir

Aktives Mitglied
Sehe auf anhieb erstmal kein Fehler. Ich würd das ganze mal debugen! Setze ein Breakpoint kurz vor dem Exception wurf. Untersuche mal die Objekte die da übergeben werden. Vieleicht entdekst Du da noch was.
 
M

maki

Gast
die Klasse(n) sind definitiv identisch da sich Server und Client und somit auch die Protokoll klassen in einem Workspace befinden gibt es nur eine Instanz der jeweiligen Klasse.
Nutzen denn Server & Client wirklich auch die Klassen aus dem Workspace oder einer davon etwa eine veraltete Jar?

Letzteres führt zu Problemen wenn keine serialVersionUID angegeben ist, dennd er Complier erzeugt bei jedem kompilieren eine neue, würde bedeuten dass Server & Client nicht mit derselben Klasse arbeiten.

Oder es gibt mehrere ClassLoader die dieselben Klassen laden, das führt auch zu deinem erwähnten Problem/Exception.
 
Zuletzt bearbeitet von einem Moderator:
D

derDude

Gast
Hiho,

ich bin mir 100% sicher das sie die selbe bzw die aktuellste Fassung der Klasse nutzen. Ich habe diverse ausgaben eingebaut und diese Erscheinen auch. Der Fehler tritt wie gesagt sporadisch auf.

Hier ein Beispiel:

Server und Client sind frisch übersetzt und laufen. Ich trage im Client ein Suchwort für einen Artikel ein lasse die Abfrage ausführen alles funktioniert. Irgend wann und unabhängig von der Anzahl der Abfragen tritt die ClassCastException auf.

Nochmal zum Verständniss. Der Client erzeugt das Objekt per Konstruktor gibt ihm das Suchwort mit und das Objekt wird versandt . Der Server führt dann die run-Methode aus und liefert die Ergebnisse zurück an den Client.

Danke nochmal.
 

FArt

Top Contributor
Klassen, die physikalisch gleich sind und u.U. auch vom selben physikalischen Klassenpfad geladen wurden sind ungleich (und verursachen somit eine ClassCastException wenn gegenseitig Intanzen davon zugewiesen werden sollen), wenn sie von verschiedenen ClassLoadern geladen wurden.

Wären die Klassen bzgl. Marshalling/Unmarshalling inkompatibel, gäbe es andere Fehler.
 
D

derDude

Gast
Hiho,

ich versuche nun seit geraumer Zeit die Exception wieder auszulösen, das Problem ist das sie nur sehr sporadisch auftritt ich kann bis jetzt nicht sagen wann genau (dann würde ich ja den Fehler kennen.) Ich bin für weiter Tipps sehr dankbar.
 
D

derDude

Gast
Hi ho,

ich habe nun geraume Zeit herum probiert und konnte die Exception nicht wieder herbei führen ohne Quelltext Änderungen ... Nun habe ich ein anderes Problem wenn ich größere Objekte versenden möchte (~ 1MB) funktioniert dies nicht. Es wirkt so als ob der Server dabei stecken bleibt. Jemand eine Idee ? Der Quelltext beleibt gleich. Danke!
 
D

derDude

Gast
Heute kam sie wieder ...

Java:
java.lang.ClassCastException: cannot assign instance of de.finetech.edpclient.fertterminal.protokoll.artikel.ArtikelList to field de.finetech.edpclient.fertterminal.protokoll.artikel.ArtikelList.suchwort of type java.lang.String in instance of de.finetech.edpclient.fertterminal.protokoll.artikel.ArtikelList
	at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(Unknown Source)
	at java.io.ObjectStreamClass.setObjFieldValues(Unknown Source)
	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at de.finetech.edpserver.utils.EdpUser.run(EdpUser.java:62)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Socket Problem mit den WebSocket Antworten der Discord API Netzwerkprogrammierung 0
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
C RMI Produzent-Verbraucher-Problem - Code review Netzwerkprogrammierung 12
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
S Problem bei dem Bluetoothverbindungsaufbau Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
M Netty - TCP Problem Netzwerkprogrammierung 4
L Socket Problem mit Server Netzwerkprogrammierung 1
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
M Socket CDI, Websocket reference Problem ! Netzwerkprogrammierung 2
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
G apache httpClient Problem. Netzwerkprogrammierung 5
H Problem mit ObjectStreams Netzwerkprogrammierung 3
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
D Socket BufferedWriter/Reader Problem Netzwerkprogrammierung 1
Maxim6394 Problem mit Socks5 Implementierung Netzwerkprogrammierung 0
C Handle Connection Problem Netzwerkprogrammierung 3
E HttpUrlConnection Cookie Problem Netzwerkprogrammierung 0
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
E einfaches Problem: Session-Handling bei Servlets Netzwerkprogrammierung 5
G Problem mit einem FileWatcher Netzwerkprogrammierung 7
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
B Client/Server Connection Problem Netzwerkprogrammierung 2
G Problem mit STATIC-Verständnis Netzwerkprogrammierung 8
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
J Facelets Include Rendered Problem Netzwerkprogrammierung 2
J Socket Problem mit C++/Java Netzwerkprogrammierung 20
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 7
B Socket Problem mit Netzwerkchat Netzwerkprogrammierung 21
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
Maxim6394 ipv6 Problem Netzwerkprogrammierung 2
Maxim6394 Proxyserver Performance Problem Netzwerkprogrammierung 11
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 5
B RMI und Problem mit rmic-Tool Netzwerkprogrammierung 3
C FTP storeFileStream Problem Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
D JavaMail - Mailsabrufen Problem (imap) Netzwerkprogrammierung 12
J HTTP Übersetzung yahoo babelfish - Zeichensatz-Problem Netzwerkprogrammierung 6
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
M Problem beim Datenempfang Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
D Thread problem Netzwerkprogrammierung 3
T Servlets JSP: Tomcat Problem Netzwerkprogrammierung 4
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
P RMI Stub Problem Netzwerkprogrammierung 3
D Socket UDP Übertragungs Problem Netzwerkprogrammierung 7
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
D Socket Problem mit InputStreamReader Netzwerkprogrammierung 3
N CRC32 CheckSum Problem bei UDP Netzwerkprogrammierung 2
V Java Mail Api - IMAP Problem Netzwerkprogrammierung 6
P RMI Problem Netzwerkprogrammierung 4
I Problem bei Outputstreamerzeugung in anderer Klasse als Socket Netzwerkprogrammierung 5
S Socket Problem mit Objektübertragung Netzwerkprogrammierung 16
Shoox Reader / Writer Problem Netzwerkprogrammierung 2
S Problem mit 2 Serversockets unter Win XP Netzwerkprogrammierung 7
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
M RMI - Connection Problem Netzwerkprogrammierung 7
J Socket Client - Server Problem Netzwerkprogrammierung 4
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
T Problem bei Findung der richtigen Architektur Netzwerkprogrammierung 3
AlexSpritze Authentication Problem bei WebServices Netzwerkprogrammierung 4
J Socket Problem -Proxies Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
F Konzept Problem Netzwerkprogrammierung 12
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
W RMI Problem Netzwerkprogrammierung 4
M Problem mit Server Netzwerkprogrammierung 5
N Socket Java server c# client problem Netzwerkprogrammierung 7
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
R RMI Hibernate Problem Netzwerkprogrammierung 4
Z RMI Problem Netzwerkprogrammierung 11
F RMI problem mit RMI Netzwerkprogrammierung 3
H Object Cast Problem nach Übertragung mit Log4j Netzwerkprogrammierung 5
H Log4j SocketAppender Problem Netzwerkprogrammierung 2
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
P Problem mit JOscarLib Netzwerkprogrammierung 6
0din SMTP Client - readline problem Netzwerkprogrammierung 4
C komisches Problem / ObjectInputStream erstellt sich nicht Netzwerkprogrammierung 5
W vista / win server 2003 netzlaufwerk problem Netzwerkprogrammierung 4
W Problem mit HTTP-Dateiübertragung Netzwerkprogrammierung 6
E Problem: netbeans 6.5 und webanwendung Netzwerkprogrammierung 6
C Problem mit Übertragung einer Klasse in RMI Netzwerkprogrammierung 10
B UDP Problem Netzwerkprogrammierung 25

Ähnliche Java Themen

Neue Themen


Oben