# Class PerUserPoolDataSourceFactory

java.lang.Object
org.apache.tomcat.dbcp.dbcp2.datasources.PerUserPoolDataSourceFactory

All Implemented Interfaces:
  `ObjectFactory`

public class PerUserPoolDataSourceFactory extends Object
A JNDI ObjectFactory which creates `PerUserPoolDataSource`s.

Since:
  2.0

## Constructor Summary

Constructors
Constructor
Description
`PerUserPoolDataSourceFactory()`
Constructs a new PerUserPoolDataSourceFactory instance.

## Method Summary

Modifier and Type
Method
Description
`static void`
`closeAll()`
Closes all pools associated with this class.
`protected static final Object`
`deserialize(byte[] data)`
Deserializes the provided byte array to create an object.
`protected InstanceKeyDataSource`
`getNewInstance(Reference ref)`
Creates an instance of the subclass and sets any properties contained in the Reference.
`Object`
`getObjectInstance(Object refObj, Name name, Context context, Hashtable<?,?> env)`
Implements ObjectFactory to create an instance of SharedPoolDataSource or PerUserPoolDataSource
`protected boolean`
`isCorrectClass(String className)`
Tests if className is the value returned from getClass().getName().toString().

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### PerUserPoolDataSourceFactory

public PerUserPoolDataSourceFactory()
Constructs a new PerUserPoolDataSourceFactory instance.

## Method Details

### getNewInstance

protected InstanceKeyDataSource getNewInstance(Reference ref) throws IOException, ClassNotFoundException
Creates an instance of the subclass and sets any properties contained in the Reference.

Parameters:
  `ref` - The properties to be set on the created DataSource
Returns:
  A configured DataSource of the appropriate type.
Throws:
  `IOException` - If an I/O error occurs during the deserialization of a configuration parameter.
  `ClassNotFoundException` - If a class cannot be found during the deserialization of a configuration parameter.

### isCorrectClass

protected boolean isCorrectClass(String className)
Tests if className is the value returned from getClass().getName().toString().

Parameters:
  `className` - The class name to test.
Returns:
  true if and only if className is the value returned from getClass().getName().toString()

### closeAll

public static void closeAll() throws ListException
Closes all pools associated with this class.

Throws:
  `ListException` - a `ListException` containing all exceptions thrown by `InstanceKeyDataSource.close()`
Since:
  2.4.0 throws a `ListException` instead of, in 2.3.0 and before, the first exception thrown by `InstanceKeyDataSource.close()`.
See Also:
  - `InstanceKeyDataSource.close()`

### deserialize

protected static final Object deserialize(byte[] data) throws IOException, ClassNotFoundException
Deserializes the provided byte array to create an object.

Parameters:
  `data` - Data to deserialize to create the configuration parameter.
Returns:
  The Object created by deserializing the data.
Throws:
  `ClassNotFoundException` - If a class cannot be found during the deserialization of a configuration parameter.
  `IOException` - If an I/O error occurs during the deserialization of a configuration parameter.

### getObjectInstance

public Object getObjectInstance(Object refObj, Name name, Context context, Hashtable<?,?> env) throws IOException, ClassNotFoundException
Implements ObjectFactory to create an instance of SharedPoolDataSource or PerUserPoolDataSource

Specified by:
  `getObjectInstance` in interface `ObjectFactory`
Throws:
  `IOException`
  `ClassNotFoundException`