2016-06-26 6 views
1

私はJavaサーバーを備えたWebアプリケーションを持っており、JavaアプリケーションはWebから要求を取得しています。インスタンスにアクセスする要求の数を制限する方法は?

問題は、たびに1つの要求しか処理できないオブジェクトのインスタンスがあり、オブジェクトがそのジョブを終了する前にWeb要求が来ているということです。

これらの要求に対して、「接続プール」を作成するにはどうすればよいですか?または、私はこのオブジェクトインスタンスへのアクセスを制限することができる他の方法はありますか?

私はいくつかの方法で同期宣言を使用していますが、かなりうまくやっていますが、問題は順序付けられていないということです。このメソッドの着信要求の順序を制御するにはどうすればよいですか?

+1

デザインを再考してください。リクエストの制限(可能な場合)は、パフォーマンスに悪影響を及ぼします。 – Henry

+0

基本オブジェクトプールを実装できます。 Apacheには助けるべき[commons pool](https://commons.apache.org/proper/commons-pool/)があります。 –

+1

同期。セマフォー。再設計するので、単一のオブジェクトはありません。広すぎます。 – EJP

答えて

1

synchronizedキーワードを使用すると、すべてのリクエストスレッドによって共有されるメソッドを同期させることができます。 この欠点は、パフォーマンスに影響することです。 同期ブロックを小さく保つためにTRYしてください。

1

これらの要求をコマンドとみなし、キューに格納して1つずつ処理することができます。これは、前述のように、応答時間が長くなるという結果になります。これを少し克服するために、コマンドの処理は非同期で行われるかもしれません。つまり、ユーザーはコマンドを呼び出して、コマンドが正しく受信されたという応答を返します。サーバがコマンドを処理すると、サーバは、コマンドが(正常に)処理されたことをユーザに通知することができる。

これは複雑な解決策になりうることに注意してください。シングルトンを削除/リファクタリングできないかどうかを確認する方がよい場合があります。

関連する問題