2016-12-09 3 views
0

Ich erstelle eine Java-Anwendung, die ihre Daten in einer SQL Server-Datenbank speichert. Die Anwendung wird auf verschiedenen Computern installiert, die alle über das normale LAN miteinander vernetzt sind, um über das Netzwerk auf den Datenbankserver zugreifen zu können. Ich habe bereits meine Verbindungsklasse erstellt, die perfekt funktioniert.Beschränken des Java-Anwendungszugriffs auf die Datenbank

Ich möchte die Anzahl der Benutzer beschränken, die jederzeit über die Anwendung auf die Datenbank zugreifen können. Wenn ich zum Beispiel die Anzahl der Benutzer auf maximal 10 Benutzer beschränke, erhält ein 11. Benutzer eine Nachricht, dass die maximale Anzahl von Benutzern angemeldet ist und wenn sich ein Benutzer abmeldet (dh, dass 9 Benutzer angemeldet bleiben) Der 11. (der jetzt der 10. sein wird) kann sich einloggen.

Wie kann ich dies mit Java erreichen?

Antwort

0

Bei der Online-Suche habe ich festgestellt, dass SQL Server Sie eine maximale Anzahl von Verbindungen einrichten können.

Damit können Sie leicht die Anzahl der Verbindungen zur DB begrenzen. Danach müssen Sie nur die abgewiesene Verbindung verwalten, wahrscheinlich eine Ausnahme ad advertising den Fehler irgendwie bis Ihre ui.

Referenz: https://msdn.microsoft.com/en-us/library/ms187030.aspx (dies gilt für SQL Server 2016. Für andere Version, nur die Suche für 'Serverkonfigurationsoption SQL Server')

+0

Das wird die Anzahl der Verbindungen zum Server beschränken, nicht eine einzige Datenbank. Berücksichtigen Sie, dass eine einzelne Anwendungsinstanz mehrere Verbindungen erwerben kann, obwohl ein einzelner Endbenutzer sie verwendet. –

+0

Alles richtig, aber wenn der Server für die DB reserviert ist und die Anwendung nicht mehrere Verbindungen gleichzeitig verwendet, gibt es kein Problem. – bracco23

0

Sie könnten eine neue Tabelle erstellen, die 'Session-IDs' enthält. Für jeden angemeldeten Client gibt es also einen Datensatz.

Erstellen Sie dann eine gespeicherte Prozedur, die eine Transaktion startet. Überprüfen Sie innerhalb der Transaktion, ob die maximale Anzahl der Sitzungsdatensätze erreicht ist oder nicht. Wenn ja, geben Sie etwas zurück, das angibt, dass das Maximum erreicht wurde. Wenn nicht, generieren Sie eine neue Sitzungskennung, speichern Sie sie in der Tabelle und geben Sie sie zurück. Dies wird die Anmeldefunktion sein.

Schließlich benötigen Sie eine andere gespeicherte Prozedur, die einen Sitzungsdatensatz löscht. Dies wird die "Abmelden" -Funktion sein.

Verwandte Themen