G
Hi All,
ich habe ein Problem wenn ich eine Klasse auf dem Server serialisiere
und auf dem client wieder deserialisiere.
Es geht um folgende Klasse (hab den Code nicht vorliegen, deswegen versuche ich es aus dem Gedächtnis):
[url]public class SeverityLevel implements Serializable, Comparable {
private final static SeverityLevel DEBUG = new SeverityLevel("DEBUG",0);
private final static SeverityLevel WARN = new SeverityLevel("WARN",1);
private final static SeverityLevel ERROR = new SeverityLevel("ERROR",2);
private SeverityLevel( String severity, int level ) {
this.level = level;
this.severity = severity;
}
...
}[/url]
Auf client-Seite fliegt eine InvalidClassException, bzw. es kommt eine Meldung das der Zugriff nicht erlaubt ist: AccessDenied
Es ist beim Serialisieren ja so das Konstanten (static) nicht mit-serialisiert werden, aber auf client-Seite ist die Klasse ja schon geladen, sonst würde überhaupt nichts gehen, deshalb kann es das nicht sein.
Der Default-Konstruktor (ohne Argumente) der beim Deserialisieren benötigt wird, befindet sich in Object (der ersten nicht Serialisierbaren Klasse), daran sollte es auch nicht liegen, aber woran dann.
Die Klasse SeverityLevel dient ja, wie zu erkennen nur als typisierte Marker-Klasse, von der es immer nur 3 Instanzen gibt. Der Fehler tritt jetzt auf, wenn ich eine der 3 Instanzen in einer anderen Serialisierbaren Klasse verwende und diese dann auf client-Seite laden will.
Der Fehler tritt lokal übrigens (JUnit-Tests) nicht auf, das bedeutet wenn ich das Serialiseren selbst mit ObjectInput/ObjectOutput übernehme. Für die Verbindung von Server zu Client übernimmt dann der ORB die Arbeit und die Klassen sind in einer Exception verpackt.
Hat jemand irgendwelche Ideen ?
Danke
Gamba