有没有办法进行http连接池?

时间:2012-12-10 19:30:10

标签: java httpconnection

java中有没有办法在不使用httpclient,http-commons等第三方API的情况下进行http连接池。?

在我的情况下,我想打开一个与特定servlet的URL的连接&我的查询字符串更改,但每当我打开一个connection.it打开一个新连接,因为我已经看到了 'netstat -anp | grep portno'我不想要的?

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");
}

这里只有参数1&参数2更改,但整个网址保持不变。

2 个答案:

答案 0 :(得分:2)

当创建这些对象的成本很高时,您会对对象进行池化,例如,创建数据库连接的成本很高,因此池化是有意义的。在不使用第三方框架的情况下,仍然可以池化HTTP连接,毕竟池只是以前创建的类实例的集合。

至少要创建一个管理HTTP连接池的类,您至少需要执行以下操作:

  1. 从池中检索实例(正在使用的对象)
  2. 将实例放回池中(对象不再使用)
  3. 游泳池大小
  4. 您可能还需要将以下内容视为可能值得在池中使用的功能:

    1. 重新连接已失效的实例
    2. 最大空闲时间,记住空闲连接仍然消耗资源
    3. 在抛出异常之前可以使用连接的时间
    4. 验证连接的方法是有效的,例如对于数据库连接,执行简单的SQL
    5. 还有许多其他事情需要考虑,但如果您自己构建,则需要考虑您的具体要求。您应该尝试一下,如果遇到问题,请向SO寻求有关您具体问题的帮助。

答案 1 :(得分:1)

您可以使用JDK的{​​{3}}部分。它使用引擎盖下的TCP连接池