Create an instance that can be served by the pool and wrap it in a {@link PooledObject} to be managed by the pool.
@param key the key used when constructing the object
@return a {@code PooledObject} wrapping an instance that can be served by the pool.
@throws Exception if there is a problem creating a new instance, this will be propagated to the code requesting an object.
See Implementation
Create an instance that can be served by the pool and wrap it in a {@link PooledObject} to be managed by the pool.
@param key the key used when constructing the object
@return a {@code PooledObject} wrapping an instance that can be served by the pool.
@throws Exception if there is a problem creating a new instance, this will be propagated to the code requesting an object.