There is a resource leak in WBEMClientCIMXML.transmitRequestWorker(). If there is a Socket exception in the call to connection.connect() it is after the HttpClient object as been allocated/acquired from the pool. But the error path for those exceptions does not release the HttpClient object back to the pool. After throwing the WBEMEception, knowledge of the HttpClient object is lost. It would appear that the catch blocks for connection.connect() need to call connection.disconnect() in order to release the HttpClient object.