Gleichzeitiges Bearbeiten von Objekten herausfinden

andyx1975

Aktives Mitglied
Hallo,

ich habe mit SmartGWT eine Webapplikation geschrieben, die von mehreren Benutzern verwendet wird. Jetzt möchte ich verhindern, dass 2 Benutzer ein Objekt gleichzeitig öffnen und bearbeiten können. Wie realisiere ich dass am besten? Einen DB Eintrag mit den gesperrten Objekten ist wohl nicht zielführend, weil wenn der Benutzer den Browser schließt bleibt das Objekt gesperrt. Kennt jemand einen guten Ansatz bzw. ein gutes Framework, das mir weiterhilft und in die GWT/SmartGWT Welt passt?

Danke
Andy
 

Templarthelast

Bekanntes Mitglied
Er Ansatz mit der Datenbank funktioniert schon, allerdings musst du entwender das Verlassen der Seite oder ähnliches event per Javascript abfangen oder überprüfen ob der Browser antwortet und falls nach einer gewissen Zeit das Objekt wieder freigeben.
 

freez

Top Contributor
Ergänzend dazu: der Eintrag in der DB könnte ja auch 2 Spalten mit User und Zeitstempel sein. Wenn der Zeitstempel älter als x Minuten ist, dürfen andere User wieder bearbeiten. Als Zeitrahmen kann du ja auch das SessionTimeout der Weboberfläche nehmen. Du musst nur sicherstellen, dass der Zeitstempel auch mal aktualisiert wird, wenn der User noch am Bearbeiten ist. Wie du es im Detail machst, hängt von deinen Anforderungen ab.

PS: Verlassen der Seite per JavaScript funktioniert natürlich nur solange, wie der User eine Verbindung zum Server hat. ggfs. kann man aber auch durch polling den Zeitstempel in der DB aktualisieren. beachte aber: Wenn der User die Bearbeitung offen hält und dann erst mal 2 Stunden Mittagessen geht, können andere nicht den Datensatz bearbeiten.
 
Zuletzt bearbeitet:

andyx1975

Aktives Mitglied
Hey Danke für euer Feedback... Wie kann ich prüfen ob der Browser antwortet? Hat jemand ein Code Beispiel hierzu? Danke und Gruß

Gesendet von meinem HTC One X mit Tapatalk 2
 

freez

Top Contributor
Ich kenne mich mit SmartGWT nicht aus, aber kurz nach Polling gegoogelt:

lmgtfy

Da sollte was zu finden sein. Solange der Browser pollt, ist er auf der Seite noch online.
 

andyx1975

Aktives Mitglied
Super... Vielen Dank... Habt mir weiter geholfen... Habe es jetzt doch über die dB geregelt. Danke für die Tips

Gesendet von meinem HTC One X mit Tapatalk 2
 

andyx1975

Aktives Mitglied
Ok ich habe noch was nach zu liefern.... im Falle von GWT bzw. SmartGWT funktioniert das Abfangen ob der Browser geschlossen wurde viel einfacher... einfach den folgenden Code verwenden:

Java:
// release all user locks when Browser will be close by user
        final CloseHandler closeHandler = new CloseHandler()
        {
            public void onClose( final CloseEvent closeEvent )
            {
                //TODO write your code here
            }
        };
        com.google.gwt.user.client.Window.addCloseHandler( closeHandler );
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben