org.apache.ojb.broker.core
Class PersistenceBrokerFactoryDefaultImpl

java.lang.Object
  extended byorg.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl
      extended byorg.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl
All Implemented Interfaces:
Configurable, PersistenceBrokerFactoryIF
Direct Known Subclasses:
PersistenceBrokerFactorySyncImpl

public class PersistenceBrokerFactoryDefaultImpl
extends PersistenceBrokerFactoryBaseImpl

This is the default implementation of the PersistenceBrokerFactoryIF interface.

This implementation use a pool of PersistenceBroker instances [abbr. PB]. Each pooled PB instance (the implementation class was specified in OJB configuration file) is wrapped by PoolablePersistenceBroker class before add to pool.

When calling createPersistenceBroker(org.apache.ojb.broker.PBKey) or PersistenceBrokerFactoryBaseImpl.defaultPersistenceBroker() the pooled-PB instance (PoolablePersistenceBroker) on its part was wrapped with PersistenceBrokerHandle handle.

When a client do a PB.close() call on the handle the wrapped PoolablePersistenceBroker will be closed and returned to pool. All further method calls on the handle (except PB.isClosed() and PB.isInTransaction()) result in an exception.

Each different PBKey (based on PBKey.equals(...) method) get its own PB-pool.

Version:
$Id: PersistenceBrokerFactoryDefaultImpl.java,v 1.7 2004/01/09 19:29:37 arminw Exp $
Author:
Thomas Mahler, Armin Waibel
See Also:
PersistenceBrokerFactoryBaseImpl

Nested Class Summary
(package private)  class PersistenceBrokerFactoryDefaultImpl.PBKeyedPoolableObjectFactory
          This is a KeyedPoolableObjectFactory implementation, manage the life-cycle of PersistenceBroker instances hold in an KeyedObjectPool.
 
Constructor Summary
PersistenceBrokerFactoryDefaultImpl()
           
 
Method Summary
 int activePersistenceBroker()
          Not implemented!
 PersistenceBroker createPersistenceBroker(PBKey pbKey)
          Return broker instance from pool.
 java.util.Properties getPoolConfiguration()
          could be used for monitoring TODO: is this useful?
 void releaseAllInstances()
          release all broker instances pooled by the factory.
 void setPoolConfiguration(java.util.Properties prop)
          could be used for runtime configuration TODO: is this useful?
protected  PersistenceBroker wrapBrokerWithPoolingHandle(PersistenceBroker broker, org.apache.commons.pool.KeyedObjectPool pool)
          Each real pooled PersistenceBroker instance was wrapped by a pooling handle when a new instance was created.
protected  PersistenceBroker wrapRequestedBrokerInstance(PersistenceBroker broker)
          Wraps the requested pooled broker instance.
 
Methods inherited from class org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl
configure, createNewBrokerInstance, createPersistenceBroker, defaultPersistenceBroker, getDefaultKey, setDefaultKey
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PersistenceBrokerFactoryDefaultImpl

public PersistenceBrokerFactoryDefaultImpl()
Method Detail

createPersistenceBroker

public PersistenceBroker createPersistenceBroker(PBKey pbKey)
                                          throws PBFactoryException
Return broker instance from pool. If given PBKey was not found in pool a new pool for given

Specified by:
createPersistenceBroker in interface PersistenceBrokerFactoryIF
Overrides:
createPersistenceBroker in class PersistenceBrokerFactoryBaseImpl
Parameters:
pbKey -
Returns:
Throws:
PBFactoryException

wrapBrokerWithPoolingHandle

protected PersistenceBroker wrapBrokerWithPoolingHandle(PersistenceBroker broker,
                                                        org.apache.commons.pool.KeyedObjectPool pool)
Each real pooled PersistenceBroker instance was wrapped by a pooling handle when a new instance was created.

Parameters:
broker - real PersistenceBroker instance
pool - use KeyedObjectPool
Returns:
wrapped broker instance
See Also:
PoolablePersistenceBroker

wrapRequestedBrokerInstance

protected PersistenceBroker wrapRequestedBrokerInstance(PersistenceBroker broker)
Wraps the requested pooled broker instance. The returned handle warps a pooled broker instance to avoid corruption of already closed broker instances.

Parameters:
broker -
Returns:
See Also:
PersistenceBrokerHandle

releaseAllInstances

public void releaseAllInstances()
Description copied from interface: PersistenceBrokerFactoryIF
release all broker instances pooled by the factory. each broker instance is closed before release.

Specified by:
releaseAllInstances in interface PersistenceBrokerFactoryIF
Overrides:
releaseAllInstances in class PersistenceBrokerFactoryBaseImpl
See Also:
PersistenceBrokerFactoryIF.releaseAllInstances()

activePersistenceBroker

public int activePersistenceBroker()
Description copied from class: PersistenceBrokerFactoryBaseImpl
Not implemented!

Specified by:
activePersistenceBroker in interface PersistenceBrokerFactoryIF
Overrides:
activePersistenceBroker in class PersistenceBrokerFactoryBaseImpl
Returns:
always 0

getPoolConfiguration

public java.util.Properties getPoolConfiguration()
could be used for monitoring TODO: is this useful?


setPoolConfiguration

public void setPoolConfiguration(java.util.Properties prop)
could be used for runtime configuration TODO: is this useful?



Authors: Thomas Mahler and others. (C) 2000 - 2003 Apache Software Foundation
All rights reserved. Published under the Apache License.
http://db.apache.org/ojb
Version: 1.0.rc5, 2003-12-14