The most common way to use ResourcePool
is to subclass it and override the methods createResource
and destroyResource
. The createResource
method creates a new instance of your expensive resource. The destroyResource
method is called when the resource pool decides that the resource is no longer needed, and is called to give you a chance to perform any cleanup procedures required for that resource.
You also have the option of overriding verifyResourceValidity
. This is called to make sure that a resource is still available for use—for example, it can detect if a previously opened connection was closed since the last time it was used.
The following example shows how one might subclass ResourcePool
:
import atg.service.resourcepool.*; public class MyPool extends ResourcePool { public MyPool () { } public Object createResource () throws ResourcePoolException { return new ReallyExpensiveObject (); } public void destroyResource (Object resource) { ((ReallyExpensiveObject) resource).close (); } }
Notice that createResource
throws ResourcePoolException
. If your object creation procedure results in an error, you must throw a ResourcePoolException
to report that error.