Technische Fragen
Allgemein
Wieso stürzt ein Java-GUI manchmal ab, wenn sich etwas im Space ändert?
Swing-GUIs in Java sind im Allgemeinen nicht thread-safe, daher können bei asynchronen Änderungen, die nicht durch eine User-Interaktion ausgelöst werden (wie z.B das Feuern einer Notifikation), Probleme auftreten. Verwenden Sie in solchen Fällen am besten SwingUtilities.invokeLater oder ähnliche Hilfsmittel.
MozartSpaces
Warum lässt sich eine Space-Applikation nicht starten?
Einige häufige Gründe dafür sind:
- Verschiedene Prozesse versuchen, auf dem selben Port einen Space zu starten. Jede Applikation, die eine neue Instanz von Capi erzeugt, startet implizit einen eigenen Space, auch wenn sie dort keine eigenen Container erzeugt.
- Es werden unterschiedliche jar-Versionen von MozartSpaces für die verschiedene Peers (bzw. Standalone-Server) verwendet. Bitte verwenden Sie immer nur das aktuellste MozartSpaces-2.2-...-all.jar von der MozartSpaces-Homepage.
Sind verteilte Transaktionen, die Operationen auf mehrere Spaces beinhalten, möglich?
In der momentanen Version sind nur Transaktionen auf einem einzelnen Core möglich. Dieser kann lokal im eigenen embedded Space oder remote liegen.
Warum kommt eine Exception, wenn man ein eigenes Objekt in den Space schreiben will?
Die Instanz einer Klasse, die in den Space geschrieben werden soll, muss das Serializable-Interface implementieren und außerdem im Classpath des Prozesses liegen, auf dessen Space man das Objekt schreiben will.
Wie kann man mit Aspekten die Argumente bzw. Returnwerte einer Operation ändern?
Die Aspekte erhalten die entsprechenden Parameter als Objekt-Referenzen. Mit den von der entsprechenden Klasse unterstützten Methode können diese Objekte direkt manipuliert werden. Beispiel: Eine post-Read-Methode bekommt das Resultat in der List entries und kann diese mit herkömmlichen List-Methoden ändern (remove, add, clear,...).
Warum hängt ein Peer bei der Ausführung eines Aspekts?
Es muss darauf geachtet werden, dass sich der Aspekt nicht direkt oder indirekt selbst rekursiv aufruft.
Known Issues:
Siehe MozartSpaces Trac
XcoSpaces
Warum bekomme ich Fehlermeldungen, wenn ich meine eigene Klasse als Datenobjekt im Space verwende?
Die Klasse muss sowohl beim schreibenden als auch beim lesenden Prozess bekannt sein, also entsprechend im Projekt eingebunden sein. Außerdem muss die Klasse serialisierbar sein.
JavaSpaces
Wieso verschwinden Entries, Notifikationen, etc. plötzlich aus dem Space?
Überprüfen Sie die Leases, die sie beim Erzeugen zurückbekommen. Jedes Objekt im Space hat nur eine begrenzte Lebensdauer. Diese können Sie zwar per Argument vorschlagen, die endgültige Entscheidung liegt aber an der Space-Implementierung.
Warum schlägt die Verbindung mit dem JavaSpace fehl?
Typische Problemursachen sind hier Firewalls und das Fehlen einer zugewiesenen IP-Adresse.