2012-12-08 40 views
0

我有一个这样的代码:在一个方法如何使用公共泳池创建连接池?

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

。用于更改每个方法调用的endPoint(毕竟endPoint是params的方法)。由于所有的endPoint是ssl启用,我觉得做openConnection()是一个昂贵的。

我想创建一个连接池。我用了commons-pool罐子。我已经编写高达这里是这样的:

class AuthenticationFactory extends BasePoolableObjectFactory<HttpURLConnection> { 

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

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

} 

makeObject创建新的连接和passiveObject关闭现有之一。但我感到震惊。如何在不知道我的endPoint的情况下打开makeObject内部的连接。

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

请帮助我。

回答

1

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