• Hallo, ich habe da ein Problem wenn ich versuche meine Interface Implementierung zu binden. Der Server wirft mir dann folgende Exception:

    Code
    java.rmi.MarshalException: error marshalling arguments; nested exception is:      java.io.NotSerializableException: java.util.concurrent.ThreadPoolExecutor

    Kann sich jemand vorstellen warum das bei einer java.util Klasse passiert?
    Schließlich liegt diese Klasse werder in meiner server.codebase, in der ich nur eine .jar mit zwei Interfaces liegen habe, noch in der Datei, die ich mit dem policy file am server freigebe (diese beinhaltet die .class Dateien der Implementierungen der beiden Interfaces).
    Die Interfaces selbst verwenden aber schon noch andere, eigene Klassen. Ist das der Grund für meine Probleme?

    MfG

  • Das Marshalling ist ja dazu da, die Daten, die über's Netzwerk übertragen werden sollen, in eine Form zu bringen, die über's Netzwerk transferiert werden kann. Dazu bedient sich RMI des Mechanismus der Serialisierung. Jedes Objekt, das übertragen werden soll, muss dazu serialisierbar sein (das Interface Serializable implementieren), dazu zählen auch die Instanzvariablen eines solchen Objekts. Die Meldung klingt jetzt so als würdest du ein Objekt übertragen wollen, in dem du ein Feld vom Typ ThreadPoolExecutor hast, und der ist nicht serialisierbar. Du kannst versuchen, den ThreadPoolExecutor in einer anderen Klasse unterzubringen, oder ihn mit dem Schlüsselwort "transient" zu markieren, dann wird er nicht serialisiert, musst aber darauf gefasst sein, dass du ihn auf der Gegenseite nicht zur Verfügung hast.

    Wenn du Remote-Objekte übergibst, musst du weiters darauf achten, dass die alle exportiert sind.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!