The pool is being used to pool connections in a mid-tier system to a backend system.
Client requests to the system have a configured timeout specified as an elapsed time with respect to the client application.
Requests may spend some elapsed time in internal work queues and/or may borrow connections multiple times to service the single request.
When calling the borrowObject method the mid tier system requires the wait time to be only a portion of request time remaining.
The maxWait time for the GenericObjectPool is currently a global value for all borrowObject operations.
The current implementation requires only minor changes to support a per borrowObject maxTime.