org.mortbay.jetty.plus

Class AbstractDataSourceService

Implemented Interfaces:
LifeCycle, Service
Known Direct Subclasses:
DefaultDataSourceService

public abstract class AbstractDataSourceService
extends AbstractService

AbstractDataSourceService Base class for DataSource Service implementations. This class provides support for plugging DataSources and DataSource Connection pooling implementations into JettyPlus. A DefaultDataSourceService subclass provides a Connection pooling implementation courtesy of XAPool project http://xapool.experlog.com. If you wish to incorporate a different connection pooling implementation, then subclass this class an implement the addDataSource(name, connectionpoolingdatasource) method.

Nested Class Summary

static interface
AbstractDataSourceService.DataSourceMap
static class
AbstractDataSourceService.DataSourceObjectFactory
DataSourceObjectFactory ObjectFactory for references to DataSources bound in JNDI.

Field Summary

protected Map
dsMap
Map of jndiNames to DataSource objects.

Fields inherited from class org.mortbay.jetty.plus.AbstractService

_jndi, _name, _started

Constructor Summary

AbstractDataSourceService()
Constructor.

Method Summary

DataSource
addConnectionPoolDataSource(String jndiName, ConnectionPoolDataSource cpds)
Add a JDBC2/3 compliant source of poolable connections.
void
addDataSource(String jndiName, DataSource ds)
Add a DataSource implementation to JettyPlus.
abstract DataSource
createPooledDataSource(String jndiName, ConnectionPoolDataSource cpds)
Implement this method to create your pool implementation.
DataSource
getDataSource(String jndiName)
Get a DataSource implementation from the list of registered DataSources.
protected Reference
getDataSourceReference(String jndiName, DataSource ds)
Create a Reference for a DataSource.
void
start()
Start the Service.

Methods inherited from class org.mortbay.jetty.plus.AbstractService

getJNDI, getName, isStarted, setJNDI, setName, start, stop

Field Details

dsMap

protected Map dsMap
Map of jndiNames to DataSource objects.

Constructor Details

AbstractDataSourceService

public AbstractDataSourceService()
Constructor.

Method Details

addConnectionPoolDataSource

public DataSource addConnectionPoolDataSource(String jndiName,
                                              ConnectionPoolDataSource cpds)
            throws Exception
Add a JDBC2/3 compliant source of poolable connections. The pool implementation is pluggable in JettyPlus. To use a particular pool implementation (eg XAPool, DBCP etc), subclass this class and implement the method createPooledDataSource() to instantiate the pool. A DefaultDataSourceService is provided that uses XAPool to plug in a Pool implementation. The DataSource returned by this method must be capable of interacting with the pool implemenation, as the DataSource will be bound into JNDI and will be accessed by webapps doing a lookup on java:comp/env/
Parameters:
jndiName -
cpds -
Returns:

addDataSource

public void addDataSource(String jndiName,
                          DataSource ds)
            throws Exception
Add a DataSource implementation to JettyPlus. Note that the particular javax.sql.DataSource implementation may implement many other features, such as internal connection pooling. If this is the case, and you want to take advantage
Parameters:
jndiName - then name the client uses to lookup the DataSource relative to java:comp/env
ds - the javax.sql.DataSource implementation

createPooledDataSource

public abstract DataSource createPooledDataSource(String jndiName,
                                                  ConnectionPoolDataSource cpds)
            throws Exception
Implement this method to create your pool implementation. The method must return a javax.sql.DataSource that will be bound into JNDI for client lookups on java:comp/env
Parameters:
jndiName -
cpds -
Returns:

getDataSource

public DataSource getDataSource(String jndiName)
Get a DataSource implementation from the list of registered DataSources.
Parameters:
jndiName - the name of the DataSource from addDataSource()
Returns:
the DataSource object

getDataSourceReference

protected Reference getDataSourceReference(String jndiName,
                                           DataSource ds)
Create a Reference for a DataSource. The Reference will be bound into JNDI. Lookups on the Reference will return the instance of the DataSource as stored in the dsMap.
Parameters:
jndiName -
ds -
Returns:

start

public void start()
            throws Exception
Start the Service. Called by org.mortbay.jetty.plus.Server.start(). This will bind all of the registered DataSources into the global java: namespace in JNDI.
Specified by:
start in interface Service
start in interface LifeCycle
Overrides:
start in interface AbstractService

Copyright © 2004 Mortbay Consulting Pty. Ltd. All Rights Reserved.