1

httpclient、http-commonsなどのサードパーティAPIを使用せずにhttp接続プールを実行する方法はJavaにありますか?

私の場合、特定のサーブレットのURLで接続を開きたいのですが、クエリ文字列が変更されますが、接続を開くたびに、'netstat -anp | 私が欲しくないgrepportno'?

String sendMessageUrl="http\://ip\:portno/contextpath/servlet/Servletname?parameter1\=&parameter2\=";
URL testURl=new URL(sendMessageUrl.replaceAll("&", name+"&")+surname);  
HttpURLConnection httpConnection=(HttpURLConnection)testURl.openConnection();
httpConnection.connect();
if(httpConnection.getResponseCode()==200)
{
   System.out.println("Success");
}

ここでは、URL全体が同じままであることを除いて、parameter1とparameter2のみが変更されます。

4

2 に答える 2

2

オブジェクトを作成するのにコストがかかる場合は、オブジェクトをプールします。たとえば、データベース接続の作成にはコストがかかるため、プーリングは理にかなっています。サード パーティのフレームワークを使用しなくても、HTTP 接続をプールすることは可能です。結局のところ、プールは以前に作成されたクラスのインスタンスのコレクションにすぎません。

HTTP の接続プールを管理するクラスを作成するには、少なくとも次のことを行う必要があります。

  1. プールからインスタンスを取得します (使用中のオブジェクト)
  2. インスタンスをプールに戻します (オブジェクトは使用されなくなります)。
  3. プールのサイズ

プールで価値のある機能として、次のことも確認する必要がある場合があります。

  1. 古くなったインスタンスを再接続する
  2. 最大アイドル時間。アイドル接続はまだリソースを消費していることに注意してください
  3. 例外をスローする前に接続を使用できる時間
  4. 接続が有効であることを検証する方法。たとえば、db 接続の場合、単純な SQL が実行されます。

考慮すべき点は他にもたくさんありますが、自分で構築する場合の正確な要件によって異なります。試してみてください。問題が発生した場合は、特定の問題について SO に問い合わせてください。

于 2012-12-10T19:50:52.523 に答える
1

のHttpURLConnection部分を使用できますJDK。ボンネットの下でTCP接続プールを使用します

于 2012-12-10T20:21:07.167 に答える