Beiträge von Skyleiger

    Hi,

    Ich habe in Java eine Art Cluster-System geschrieben. Cluster bedeutet in diesem Fall, dass ich Pakete zwischen den einzelnen Knoten senden und empfangen kann.

    Das hat bisher sehr gut funktioniert, aber ich stehe jetzt vor einem anderen Problem:


    Ich benutze diese Pakete, um die Daten im Cluster auf dem neuesten Stand zu halten.

    Dazu sendet der Knoten, der eine Änderung hat, einfach ein Broadcast-Paket an alle anderen und diese wenden die Änderungen auf sich selbst an.

    Was aber, wenn die Pakete so gesendet werden, dass z. B. Knoten-1 sich selbst aktualisiert und ein Broadcast-Paket sendet, aber

    Knoten-2 sich ebenfalls aktualisiert und ein Broadcast-Paket sendet, bevor das Paket vom ersten Knoten empfangen wird?

    Das würde ja an sich bedeuten, dass sich beide Knoten (nachdem beide Pakete vom anderen empfangen wurden) in unterschiedlichen "Datenzuständen" befinden.


    Ich würde genau das gerne verhindern, jedoch habe ich gerade einen Knoten im Hirn und mir fällt keine geeignete Lösung ein.


    LG Dominic

    Was ist denn genau damit gemeint? Möchtest du beispielsweise auf Schildern die Texte mittels HTML Tags anzeigen lassen oder möchtest du ein Plugin, welches einen HTML Webserver bereitstellt?

    Hi,

    Nach langer Zeit bin ich auch mal wieder hier vertreten :P


    Nun zu meinem Problem:

    Ich habe Daten welche als Objekte aus der Datenbank geladen werden und anschließend in der Anwendung zwischengespeichert werden. Dafür hab ich eine "Provider"-Klasse, welche die gängigen CRUD Methoden (Add, Remove, Update, Get, etc.) enthält. Zum Beginn der Anwendung werden die Daten aus der Datenbank beispielsweise in einer Liste zwischengespeichert und mit den eben genannten Methoden anschließend mit ihnen gearbeitet.

    Die Objekte an sich können dabei ganz einfach Setter in ihnen abgeändert werden und können dann anschließend mit dem Aufrufen der Update Methode in die Datenbank übertragen werden.
    Nun mein Problem. Sollte mal keine Datenbankverbindung bestehen wirft die Update Methode ein Fehler, jedoch ist das Objekt dann ja bereits lokal abgeändert. Ich frag mich nun, wie man das handhaben kann, dass nun bei einem anschließenden Aufrufen des Getters der "Provider"-Klasse das Objekt in seinem Zustand vor dem fehlgeschlagenen Update zurückgegeben wird.


    Ich könnte mir vorstellen beim Getter in der "Provider"-Klasse immer zunächst eine Kopie des Objekts zurück zu geben und das Original erst beim Aufrufen der Update Methode abzuändern. Das Problem was ich dabei allerdings sehe, ist, dass somit Objekte, welche vorher mittels des Getters ermittelt und beispielsweise in einer Liste an einem anderen Ort gespeichert werden, nicht aktualisiert werden. Ich könnte mir natürlich vorstellen einen Getter für eine Kopie und einen Getter für das Original zu machen, jedoch kommt mir dies eher etwas unsauber vor und habe ich vorher auch noch nie gesehen.


    Ich hoffe das war soweit verständlich, bei Fragen doch bitte einfach Fragen ;)

    Ich danke schon mal in voraus für die Hilfe.


    Liebe Grüße
    Dominic

    Prinzipiell müsstest du ja an sich die versendeten Chat-Pakete an dich (bzw. den Spieler der keine Chatnachrichten mehr bekommen soll) nur blockieren.

    Ich bin mir gerade nicht mehr sicher, ob man dies auch direkt in BungeeCord oder nur auf den Spigot-Servern realisieren kann, aber für beides gibt es sicherlich Tutorials im Netz.

    Mir selbst ist auch nur TS3J bekannt. An sich kannst du ja mal versuchen den kompletten Traffic deines Servers über einen Proxy laufen zu lassen oder den Code von TS3J dementsprechend nach deinen Wünschen anzupassen.

    Wieso versuchst du nicht bei jeder MySQL Abfrage zu überprüfen, ob eine Verbindung besteht und ggf. sich erneut zu verbinden?

    Erst sollte dies fehlschlagen könntest du null zurückgeben.

    Der Code zum Fehler wäre da aber schon hilfreich ;)
    Wenn du Fehlermeldungen lesen könntest, dann würdest du erkennen, dass es sich hierbei um eine ClassCastException handelt und das nicht zwingend bedeutet, dass deine Anwendung die Verbindung zum Redis-Server verloren hat.

    Ich erhoffe mir eine Vereinfachung des Rechte-Systems. Die Verwaltung ist für unerfahrene ziemlich schweißtreibend und hält mich persönlich von einem eigenen TeamSpeak Server ab.


    Desweiteren finde ich die Plattformübergreifende Nutzung, auch auf einem Mobilen Endgerät, sehr wichtig. Es gibt zwar eine TeamSpeak 3 App, für welche man allerdings noch mal extra zahlen muss.