2009-08-20 79 views

回答

1

这不是真正的连接池,而是本文讨论的HTTP保持活动机制。如果您可以以任何方式检查网络流量,那么检测该请求的简单方法就是检查请求。如果它使用的是HTTP/1.1,并且没有“Connection:close”,或者它使用的是HTTP/1.0,并且看到“Connection:Keep-Alive”,那么它在请求的范围内工作。

否则它几乎是一个实现细节。您可以使用调试器来检查实现的内部状态,并查看它是否似乎有一些可启用保持活动的字段集。你需要看看这个来源。

另外你的文档建议你可以看看System.getProperty(“http.keepAlive”)。如果它为空或“真”,那么似乎启用了保持活动状态。

1

对于包含在Sun JDK 5中的Sun的HTTP协议处理程序,您可以检查类sun.net.www.http.HttpClient。成员KeepAliveCache kac保存持久连接。如果你的连接在HashTable中,它将被重用。

根据您的使用模式,HTTP处理程序中的Keepalive支持可能存在问题。当连接停留在缓存中时,没有线程响应状态更改,因此连接变得陈旧。重用时可能会发生IOException。所以我们通常禁用Keepalive。

如果你真的需要池连接,更好的选择是Apache HttpClient与池多线程连接管理器。