我有这样的代码:
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
内的连接。
我是否错过了连接池的概念?
请帮助我。
答案 0 :(得分:1)
我不明白你想做什么。首先,HttpURLConnection
使用引擎盖下的池来重用现有的TCP连接,这是您通常想要的。
此外,对于ssl
连接,即使重用连接也没有意义,因为每个连接对每个客户端都是唯一的(因为它是安全的......)