D
Dennis4
Gast
Hallo an alle,
ich sitze seit einiger Zeit an einem Problem mit RMI und dem MVC Prinzip.
Man Stelle sich vor es gäbe drei Klassen, ein Model, ein View und ein Controller. Der Controller fungiert als Bridge zwischen Model und View.
View und Controller liegen auf dem Server und die View liegt auf dem Client.
Der Controller hat Referenzen zum Model und zur View. Der Controller implementiert das PropertyChangeListener Interface und registriert sich beim Model als solches. Treten beim Model Property Veränderung auf wird ein PropertyChangeEvent erzeugt und mit firePropertyChange der Controller benachrichtigt.
Der Controller propagiert das Event weiter and die View, welche sich dann entsprechend den neuen Werten anpasst.
So Weit so Gut. Nun gibt es ein Problem, da der Controller eine Referenz zur View benötigt, wird diese durch RMI serialisiert. Dies möchte oder muss ich aber vermeiden, da ich es nicht sinnvoll finde die Komplette Gui zu serialisieren. Ein weiterer Punkt, es geht auch nicht.
Ich habe die View mit Hilfe von Matisse erzeugt und das von Matisse verwendete GroupLayout implementiert nicht das Serializable interface.
Dementsprechend wirft RMI auch die NotSerializableException.
Gibt es nun eine Möglichkeit die MVC Architektur beizubehalten über RMI? Die einzige Möglichkeit, die ich bisher gefunden habe wäre ein Polling von der Clientseite aus um nach Änderungen zu fragen. Polling find ich aber in diesem Zusammenhang nicht sehr schön und frisst auch mehr Ressourcen.
Ich hoffe damit wird mein Problem klar und hoffe ihr könnt mir helfen.
Sollte es weiter Fragen geben kann ich auch noch schnell ein simples Beispiel implementieren.
Danke im Voraus.
Dennis
ich sitze seit einiger Zeit an einem Problem mit RMI und dem MVC Prinzip.
Man Stelle sich vor es gäbe drei Klassen, ein Model, ein View und ein Controller. Der Controller fungiert als Bridge zwischen Model und View.
View und Controller liegen auf dem Server und die View liegt auf dem Client.
Der Controller hat Referenzen zum Model und zur View. Der Controller implementiert das PropertyChangeListener Interface und registriert sich beim Model als solches. Treten beim Model Property Veränderung auf wird ein PropertyChangeEvent erzeugt und mit firePropertyChange der Controller benachrichtigt.
Der Controller propagiert das Event weiter and die View, welche sich dann entsprechend den neuen Werten anpasst.
So Weit so Gut. Nun gibt es ein Problem, da der Controller eine Referenz zur View benötigt, wird diese durch RMI serialisiert. Dies möchte oder muss ich aber vermeiden, da ich es nicht sinnvoll finde die Komplette Gui zu serialisieren. Ein weiterer Punkt, es geht auch nicht.
Ich habe die View mit Hilfe von Matisse erzeugt und das von Matisse verwendete GroupLayout implementiert nicht das Serializable interface.
Dementsprechend wirft RMI auch die NotSerializableException.
Gibt es nun eine Möglichkeit die MVC Architektur beizubehalten über RMI? Die einzige Möglichkeit, die ich bisher gefunden habe wäre ein Polling von der Clientseite aus um nach Änderungen zu fragen. Polling find ich aber in diesem Zusammenhang nicht sehr schön und frisst auch mehr Ressourcen.
Ich hoffe damit wird mein Problem klar und hoffe ihr könnt mir helfen.
Sollte es weiter Fragen geben kann ich auch noch schnell ein simples Beispiel implementieren.
Danke im Voraus.
Dennis