2016-12-09 14 views
0

SQL Serverデータベースにデータを格納するJavaアプリケーションを作成しています。アプリケーションは、ネットワークを介してデータベースサーバーにアクセスできるように、通常のローカルエリアネットワークを使用してネットワーク化される異なるマシンにインストールされます。私はすでに完全に動作する接続クラスを作成しました。Javaアプリケーションのデータベースへのアクセスを制限する

いつでもアプリケーションからデータベースにアクセスできるユーザーの数を制限したいと思います。たとえば、ユーザー数を最大10人に制限すると、11人目のユーザーには、最大ユーザー数がログインしていることと1人のユーザーがログアウトしたことを通知するメッセージが表示されます。 11日(今は10日目になります)のユーザーがログインできるようになります。

どのように私はjavaを使用してこれを達成することができますか?

答えて

0

オンラインで見る私は、SQLサーバーで最大数の接続を設定できることがわかりました。

これは簡単にDBへの接続数を制限することができます。その後、拒否された接続を管理するだけで、おそらくあなたのUIまでエラーを伝播する例外広告をキャッチすることになります。

参考:https://msdn.microsoft.com/en-us/library/ms187030.aspx(これは単に「サーバー構成オプションのSQL Server」を検索、他のバージョンのSQL Server 2016に適用されます)

+0

これは、1つのデータベースではなく、サーバーへの接続数を制限します。単一のエンドユーザーがそれを使用しても、単一のアプリケーションインスタンスが複数の接続を取得する可能性があると考えてください。 –

+0

すべて真ですが、サーバーがDB専用で、アプリケーションが複数の接続を同時に使用していない場合は問題ありません。 – bracco23

0

あなたは「セッション識別子」を含む新しいテーブルを作成することができます。したがって、そこにログインしているクライアントごとに1つのレコードがあります。

次に、トランザクションを開始するストアドプロシージャを作成します。トランザクションの中で、セッションレコードの最大数に達したかどうかをチェックします。その場合は、最大に達したことを示す何かを返します。そうでない場合は、新しいセッション識別子を生成し、それをテーブルに格納して返します。これは「ログイン」機能になります。

最後に、セッションレコードを削除する別のストアドプロシージャが必要になります。これは「ログアウト」機能になります。

関連する問題