如何使用公共池创建连接池?

时间:2012-12-08 09:08:15

标签: java networking ssl httpurlconnection apache-commons

我有这样的代码:

URL url = new URL(endPoint);
connection = (HttpURLConnection) url.openConnection();

在一种方法中。 endPoint用于更改每个方法调用(在所有endPoint之后是方法参数)。由于所有endPoint都启用了ssl,我认为执行openConnection()是一个昂贵的问题。

我想过创建一个连接池。我使用了commons-pool jar。我在这里编码如下:

class AuthenticationFactory extends BasePoolableObjectFactory<HttpURLConnection> {

    public HttpURLConnection makeObject() {
        return (HttpURLConnection) new URL("someting").openConnection();
    }

    public void passiveObject(HttpURLConnection conn)
    {
        conn.close();
    }

}

makeObject创建新连接,passiveObject关闭现有连接。但我很震惊。如何在不知道makeObject的情况下打开endPoint内的连接。

我是否错过了连接池的概念?

请帮助我。

1 个答案:

答案 0 :(得分:1)

我不明白你想做什么。首先,HttpURLConnection使用引擎盖下的池来重用现有的TCP连接,这是您通常想要的。 此外,对于ssl连接,即使重用连接也没有意义,因为每个连接对每个客户端都是唯一的(因为它是安全的......)