Seite 3 von 3

Re: Vierte Programmieraufgabe

Verfasst: 11. Jan 2010 03:04
von Fl4sh
Ahh, ich Idiot... ;) Danke! :)

(Hoffentlich) Letzte Frage: Sollen die States und Recordings an den Initiator per Unicast oder Multicast geschickt werden?

Re: Vierte Programmieraufgabe

Verfasst: 11. Jan 2010 03:07
von RomanMertyn
Fl4sh hat geschrieben:Ahh, ich Idiot... ;) Danke! :)
Nicht so streng mit sich sein.
Fl4sh hat geschrieben: (Hoffentlich) Letzte Frage: Sollen die States und Recordings an den Initiator per Unicast oder Multicast geschickt werden?
Hmm...... Wie viele Knoten sind eigentlich an der Informationen interessiert?

Re: Vierte Programmieraufgabe

Verfasst: 11. Jan 2010 09:21
von Xaero
Hallo ich habe ein Frage:
Ich habe eine Klasse TypedMessage geschrieben, die von org.jgroups.Message erbt.
Jetzt wenn ich diese TypedMessage über channel.send(m) verschicke und beim Empfänger bei receive(...) wieder auf TypedMessage casten möchte, gibt es immer einen Fehler.
java.lang.ClassCastException: org.jgroups.Message cannot be cast to message.TypedMessage
Wisst ihr woran das liegt?

Re: Vierte Programmieraufgabe

Verfasst: 11. Jan 2010 11:06
von Tigger
Also ich habe einfach die ganz normalen Messages verwendet. Da kannst du belibige Objekte reinstecken und wieder zurückcasten. Hat bei mir Problemlos funktioniert.

Re: Vierte Programmieraufgabe

Verfasst: 12. Jan 2010 00:28
von MisterD123
Xaero du versendest eine TypedMessage, die wird von JGroups gefressen, in ihre bestandteile zerlegt, verteilt, und auf der anderen seite wieder neu zusammengesetzt vermute ich - ist also auf der anderen seite dann eine neue Message, nicht deine abgeschickte message rekonstruiert, und somit eine echte Message und keine TypedMessage. Folglich ist auch kein Cast mögich.

Umgehung: Erstell dir ein Event-Interface dessen Implementoren das machen, wass deine TypedMessages grade machen, und caste das Object das jede Message mit sich liefert dann immer auf Event. Das funktioniert.

Re: Vierte Programmieraufgabe

Verfasst: 12. Jan 2010 17:26
von Xaero
Ich habe ein Frage:
Sind die Channels bei euch auch immer leer, wenn ihr einen Snapshot macht?
Also keine weiteren Nachrichten fließen, außer den Marker-Msgs?

Re: Vierte Programmieraufgabe

Verfasst: 12. Jan 2010 18:02
von MisterD123
oft, aber nicht immer. die channels von dem iniziierenden prozess aus sind immer leer, in den anderen ist manchmal etwas drin - du musst halt schauen, dass deine prozesse ein gutes stück schneller arbeiten als jgroups die nachrichten ausliefert.

Re: Vierte Programmieraufgabe

Verfasst: 14. Jan 2010 01:28
von RomanMertyn
Eine(!) mögliche Lösung des Zustellungsproblem:
1. "FLUSH" Protokolschicht zum Stack hinzufügen
2. Channels nach dem senden von Multicast(!)-Nachrichten flushen.

Re: Vierte Programmieraufgabe

Verfasst: 14. Jan 2010 13:33
von MisterD123
Das hatte ich auch schon einmal ausprobiert mit der udp-flush.xml als konfiguration.. bei mir hats nicht funktioniert, teilweise warf der flush exceptions und die nachrichten haben sich dann trotzdem überholt. allerdings hab ich mich auch nicht wirklich intensiv damit beschäftigt, nur so als spielerei mal und es hat auf anhieb nicht so gut ausgesehen als dass ichs weiter versucht hätte.

Re: Vierte Programmieraufgabe

Verfasst: 14. Jan 2010 16:52
von RomanMertyn
Gerade erste Lösung mit dem Flush getestet. Funktioniert perfekt.

Die Lösungen mit B-Multicast werden jedoch auch akzeptiert und mit voller Punktzahl bewertet, vorausgesetzt natürlich, dass die restliche Anforderungen alle erfühlt sind.