Package org.apache.tomcat.dbcp.dbcp2.datasources

## Class SharedPoolDataSourceFactory

- java.lang.Object
- - org.apache.tomcat.dbcp.dbcp2.datasources.SharedPoolDataSourceFactory

All Implemented Interfaces:
  `javax.naming.spi.ObjectFactory`

    public class SharedPoolDataSourceFactory
    extends java.lang.Object

A JNDI ObjectFactory which creates `SharedPoolDataSource`s

Since:
  2.0

### Constructor Summary

Constructors
`SharedPoolDataSourceFactory()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`static void` `closeAll()` Closes all pools associated with this class.
`protected static java.lang.Object` `deserialize​(byte[] data)` Deserializes the provided byte array to create an object.
`protected InstanceKeyDataSource` `getNewInstance​(javax.naming.Reference ref)` Creates an instance of the subclass and sets any properties contained in the Reference.
`java.lang.Object` `getObjectInstance​(java.lang.Object refObj, javax.naming.Name name, javax.naming.Context context, java.util.Hashtable<?,​?> env)` Implements ObjectFactory to create an instance of SharedPoolDataSource or PerUserPoolDataSource
`protected boolean` `isCorrectClass​(java.lang.String className)`

### Methods inherited from class java.lang.Object

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

### Constructor Detail

#### SharedPoolDataSourceFactory

    public SharedPoolDataSourceFactory()

### Method Detail

#### isCorrectClass

    protected boolean isCorrectClass​(java.lang.String className)

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

#### getNewInstance

    protected InstanceKeyDataSource getNewInstance​(javax.naming.Reference ref)

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.

#### closeAll

    public static void closeAll()
                         throws java.lang.Exception

Closes all pools associated with this class.

Throws:
  `java.lang.Exception` - 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()`, `ListException`

#### getObjectInstance

    public java.lang.Object getObjectInstance​(java.lang.Object refObj,
                                              javax.naming.Name name,
                                              javax.naming.Context context,
                                              java.util.Hashtable<?,​?> env)
                                       throws java.io.IOException,
                                              java.lang.ClassNotFoundException

Implements ObjectFactory to create an instance of SharedPoolDataSource or PerUserPoolDataSource

Specified by:
  `getObjectInstance` in interface `javax.naming.spi.ObjectFactory`
Throws:
  `java.io.IOException`
  `java.lang.ClassNotFoundException`

#### deserialize

    protected static final java.lang.Object deserialize​(byte[] data)
                                                 throws java.io.IOException,
                                                        java.lang.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:
  `java.lang.ClassNotFoundException` - If a class cannot be found during the deserialization of a configuration parameter.
  `java.io.IOException` - If an I/O error occurs during the deserialization of a configuration parameter.