db-ojb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Clute <andrew.cl...@osn.state.oh.us>
Subject Re: Pluggable IndirectionHandler
Date Sat, 14 Feb 2004 03:54:38 GMT
I agree completely! Delegating the PB.close call if not in a JTA-tx is  
a probably "The Right Thing To Do" (and hopefully pre 1.0). Just that  
alone will fix my problem, since my EJB clients, and my EJB's are in  
the same application VM, so the proxy is not really having to do  
anything special, and it will allow those connections to free up.

As for the plugable IndirectionHandler -- I think it is very worthy --  
but I had missed Andy's thread about his proposal for it (not sure how  
I missed that), and with talk about making it more extensible, I will  
bow out with my changes that are just involved with extending  
IndirectionHandler.

I would ask that either through either Andy's changes or another  
commit, that the patch for CollectionProxy be incorporated (all it was  
was to change the access modifier on two fields to protected from  
private so child classes could set them).

Armin, let me know about this change to PBFactorySync -- I can make the  
change if you want me to. Or if you want to make it, I would be happy  
to test it on my system on Monday.

-Andrew

On Feb 13, 2004, at 7:26 PM, Armin Waibel wrote:
>
>
> <snip from your previous mail>
> > With a normal method on an EJB and using CM-tx, when the EJB method  
> is
> > finished, the EJB container calls commit and
> > PersistenceBrokerFactorSyncImpl is called, and that is the change  
> that
> > OJB has to wrap up it's work, and physically close the database
> > connection.
> </snip>
>
> I think you found a bug. If no tx (cm-tx or bm-tx) the PB.close() call  
> should be passed to the PersistenceBrokerImpl class and on this level  
> ConnectionManager was called to close the underlying Connection.
>
> Currently the PersistenceBrokerSync implementation prevent the  
> delegation of the PB.close() call. Only when  
> Synchronzation#beforeCompletion() was called OJB was forced to close  
> the connection by calling ConnectionManager#releaseConnection().
>
> Think when PB instance was not in a JTA-tx, the Connection should be  
> released on PB.close().
> What do you think?





>
>> I am starting to base architectural decision on the concept that both
>> COllectionProxy and IndirectionHandler are extensible and plugable,  
>> and
>> I don't want to get too far ahead if that assumption is false.
>
> I touched many classes till now, but I never work on the Proxy  
> classes, that's the reason why I don't barge in ;-)
> AFAIK Andy Malakov made a similar proposal
> http://news.gmane.org/gmane.comp.jakarta.ojb.devel
>
> If you don't get response on dev-list pest (oh, I mean) post again ;-)
>
>
> regards,
> Armin
>
>
>> Thanks
>> -Andrew
>> -----Original Message-----
>> From: Clute, Andrew Sent: Thursday, February 12, 2004 5:43 PM
>> To: 'arminw@apache.org'
>> Subject: RE: New Feature Proposal (WAS: ManagedConnections not being
>> released)
>> In case you do want this, the patch file is attached with the changes.
>> Let me know what you think
>> -Andrew
>>  -----Original Message-----
>> From: Clute, Andrew [mailto:Andrew.Clute@osn.state.oh.us]
>> Sent: Thursday, February 12, 2004 4:34 PM
>> To: OJB Developers List
>> Subject: New Feature Proposal (WAS: ManagedConnections not being
>> released)
>>  I can confirm that my theory down below was the cause of my problem.  
>> My
>> creating my own CollectionProxy that was aware of how to walk back
>> across the wire, inside a CM-tx, to my dataset worked fine.
>> Now, that left open the fact that for 1:1 Proxy's, IndirectionHandler
>> was the only implementation.
>> I have coded a change that will allow for IndirectionHandler to
>> configured, exactly like CollectionProxy. If no entry is defined, then
>> it defaults back to IndirectionHandler. The coding style is the exact
>> same as that for Collection proxy.
>> If this is perceived as being valuable, I would like to contribute the
>> code back. Who should I send the diff files to?
>> -Andrew
>> -----Original Message-----
>> From: Clute, Andrew [mailto:Andrew.Clute@osn.state.oh.us]
>> Sent: Thursday, February 12, 2004 3:06 PM
>> To: OJB Developers List
>> Subject: RE: ManagedConnections not being released
>> Armin,
>> After further investigation, I can confirm it is related to the use of
>> Proxy's.
>> Now, I have theory, and I want to see if this could be possible:
>> With a normal method on an EJB and using CM-tx, when the EJB method is
>> finished, the EJB container calls commit and
>> PersistenceBrokerFactorSyncImpl is called, and that is the change that
>> OJB has to wrap up it's work, and physically close the database
>> connection.
>> However, when using a proxy (even when both client and EJB are in the
>> same VM), it's access to the data is through a new instance of a
>> PersistenceBroker. That is causing a new connection to be opened up,  
>> but
>> because it is not inside a method call to an EJB, there is no 'Commit'
>> phase that happens, and so PBFSync is never called and allowed to  
>> close
>> the database connection.
>> Do think this is accurate?
>> So, the solution to this is for me to create my own collection proxy
>> that can call an EJB to get the data from OJB -- that will mean that  
>> the
>> call for that will be inside an EJB transaction. I am assuming I also
>> going to have to write a custom IndirectionHandler to handle the 1:1
>> proxy's (but that doesn't seem to be pluggable in the OJB.properities
>> file)
>> Thoughts
>> -Andrew -----Original Message-----
>> From: Armin Waibel [mailto:arminw@apache.org]
>> Sent: Thursday, February 12, 2004 1:05 PM
>> To: OJB Developers List
>> Subject: Re: ManagedConnections not being released
>> Hi,
>> Clute, Andrew wrote:
>>> I have the latest from head. I am using Jboss 3.2.3, with CM-tx for  
>>> my
>>> EJB's. I have my connection pool set to a maximum of 30 connections,  
>>> but it fills up real quick. I am closing the PersistenceBroker, and  
>>> I have debuged, and I do see the _conn.close() being called on the  
>>> Jboss
>>> WrappedConnection, but I look and all 30 connections are used.
>>>
>>>
>> hmm, I assume you are using proxy? This is problematic in a 3-tier
>> environment, because how should the proxy be materialized on the  
>> client
>> side? (by the way, try to set useAutoCommit="0") But I don't know  
>> what's
>> the reason for your exhausted con-pool, maybe a side-effect of the  
>> proxy
>> use?
>> regards,
>> Armin
>>> Thoughts? I apologize in advance if this is a stupid configuration  
>>> issue.
>>>
>>> -Andrew
>>>
>>> Here is my OJB repository datasource description:
>>>
>>> <jdbc-connection-descriptor
>>> 	jcd-alias="devsql"
>>> 	default-connection="true"
>>>   	platform="MsSQLServer"
>>>   	jdbc-level="3.0"
>>>   	jndi-datasource-name="java:MsSqlDevDS"
>>>   	useAutoCommit="2"
>>>   	>
>>>   	<object-cache
>>> class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
>>>            <attribute attribute-name="timeout"
>> attribute-value="900"/>
>>>            <attribute attribute-name="autoSync"
>>> attribute-value="true"/>
>>>       </object-cache>
>>>   		
>>>   	<sequence-manager
>>> className="org.apache.ojb.broker.util.sequence.SequenceManagerMSSQLGu 
>>> i
>>> dI
>>> mpl" />
>>>
>>> </jdbc-connection-descriptor>
>>>
>>> Here is my jBoss Datasource descriptor:
>>>
>>> <datasources>
>>>  <local-tx-datasource>
>>>    <jndi-name>MsSqlDevDS</jndi-name>
>>> <connection-url>jdbc:inetdae7:192.168.2.30:1433?<removed></ 
>>> connection-
>>> ur
>>> l>
>>>    <driver-class>com.inet.tds.TdsDriver</driver-class>
>>>    <min-pool-size>5</min-pool-size>
>>>    <max-pool-size>30</max-pool-size>
>>>    <idle-timeout-minutes>1</idle-timeout-minutes>
>>>    <check-valid-connection-sql>select 1</check-valid-connection-sql>
>>>  </local-tx-datasource>
>>> </datasources>
>>>
>>> And here is the error stack:
>>>
>>> 12:29:49,906 ERROR [org.jboss.web.localhost.Engine]
>>> StandardWrapperValve[org.osn.webapp.jcore.doclib.docview_jsp]:
>>> Servlet.service() for servlet org.osn.webapp.jcore.doclib.docview_jsp
>>> threw exception
>>> org.apache.ojb.broker.PersistenceBrokerException:
>>> org.apache.ojb.broker.PersistenceBrokerException:
>>> org.apache.ojb.broker.PersistenceBrokerException: Used  
>>> ConnectionManager instance could not obtain a connection
>>> 	at
>>> org.apache.ojb.broker.accesslayer.CollectionProxy.loadData(Collection 
>>> P
>>> ro
>>> xy.java:158)
>>> 	at
>>>
>> org.apache.ojb.broker.accesslayer.ListProxy.loadData(ListProxy.java: 
>> 187)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.CollectionProxy.getData(CollectionP 
>>> r
>>> ox
>>> y.java:401)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.CollectionProxy.iterator(Collection 
>>> P
>>> ro
>>> xy.java:230)
>>> 	at
>>> org.osn.bom.Document.getCurrentDocumentVersion(Document.java:274)
>>> Caused by: org.apache.ojb.broker.PersistenceBrokerException:
>>> org.apache.ojb.broker.PersistenceBrokerException: Used  
>>> ConnectionManager instance could not obtain a connection
>>> 	at
>>> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery( 
>>> Q
>>> ue
>>> ryReferenceBroker.java:250)
>>> 	at
>>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery 
>>> (
>>> Pe
>>> rsistenceBrokerImpl.java:1012)
>>> 	at
>>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionB 
>>> y
>>> Qu
>>> ery(DelegatingPersistenceBroker.java:312)
>>> 	at
>>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionB 
>>> y
>>> Qu
>>> ery(DelegatingPersistenceBroker.java:312)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.CollectionProxy.loadData(Collection 
>>> P
>>> ro
>>> xy.java:148)
>>> 	... 51 more
>>> Caused by: org.apache.ojb.broker.PersistenceBrokerException: Used  
>>> ConnectionManager instance could not obtain a connection
>>> 	at
>>> org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStateme 
>>> n
>>> t(
>>> StatementManager.java:680)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAcc 
>>> e
>>> ss
>>> Impl.java:315)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(RsQueryO 
>>> b
>>> je
>>> ct.java:113)
>>> 	at
>>>
>> org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java: 
>> 211)
>>> 	at
>>> org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsI 
>>> t
>>> er
>>> atorFactoryImpl.java:97)
>>> 	at
>>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQue 
>>> r
>>> y(
>>> PersistenceBrokerImpl.java:1631)
>>> 	at
>>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery 
>>> (
>>> Pe
>>> rsistenceBrokerImpl.java:1136)
>>> 	at
>>> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery( 
>>> Q
>>> ue
>>> ryReferenceBroker.java:143)
>>> 	at
>>> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery( 
>>> Q
>>> ue
>>> ryReferenceBroker.java:242)
>>> 	... 55 more
>>> Caused by: org.apache.ojb.broker.accesslayer.LookupException:
>>> SQLException thrown while trying to get Connection from Datasource
>>> (java:MsSqlDevDS)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.newCo 
>>> n
>>> ne
>>> ctionFromDataSource(ConnectionFactoryAbstractImpl.java:200)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.looku 
>>> p
>>> Co
>>> nnection(ConnectionFactoryAbstractImpl.java:97)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl.lookup 
>>> C
>>> on
>>> nection(ConnectionFactoryManagedImpl.java:18)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.getConnection 
>>> (
>>> Co
>>> nnectionManagerImpl.java:144)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStateme 
>>> n
>>> t(
>>> StatementManager.java:676)
>>> 	... 63 more
>>> Caused by: org.jboss.util.NestedSQLException: No ManagedConnections  
>>> available within configured blocking timeout ( 5000 [ms] ); - nested
>>> throwable: (javax.resource.ResourceException: No ManagedConnections  
>>> available within configured blocking timeout ( 5000 [ms] ))
>>> 	at
>>> org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(Wrapp 
>>> e
>>> rD
>>> ataSource.java:106)
>>> 	at
>>> org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.newCo 
>>> n
>>> ne
>>> ctionFromDataSource(ConnectionFactoryAbstractImpl.java:189)
>>> 	... 67 more
>>> Caused by: javax.resource.ResourceException: No ManagedConnections  
>>> available within configured blocking timeout ( 5000 [ms] )
>>> 	at
>>> org.jboss.resource.connectionmanager.InternalManagedConnectionPool.ge 
>>> t
>>> Co
>>> nnection(InternalManagedConnectionPool.java:250)
>>> 	at
>>> org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BaseP 
>>> o
>>> ol
>>> .getConnection(JBossManagedConnectionPool.java:496)
>>> 	at
>>> org.jboss.resource.connectionmanager.BaseConnectionManager2.getManage 
>>> d
>>> Co
>>> nnection(BaseConnectionManager2.java:425)
>>> 	at
>>> org.jboss.resource.connectionmanager.TxConnectionManager.getManagedCo 
>>> n
>>> ne
>>> ction(TxConnectionManager.java:318)
>>> 	at
>>> org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateC 
>>> o
>>> nn
>>> ection(BaseConnectionManager2.java:477)
>>> 	at
>>> org.jboss.resource.connectionmanager.BaseConnectionManager2$Connectio 
>>> n
>>> Ma
>>> nagerProxy.allocateConnection(BaseConnectionManager2.java:814)
>>> 	at
>>> org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(Wrapp 
>>> e
>>> rD
>>> ataSource.java:102)
>>> 	... 68 more
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For  
>>> additional commands, e-mail: ojb-dev-help@db.apache.org
>>>
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For  
>> additional
>> commands, e-mail: ojb-dev-help@db.apache.org
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For  
>> additional
>> commands, e-mail: ojb-dev-help@db.apache.org
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For  
>> additional
>> commands, e-mail: ojb-dev-help@db.apache.org
>> ---------------------------------------------------------------------- 
>> --
>> Index: src/java/org/apache/ojb/broker/VirtualProxy.java
>> ===================================================================
>> retrieving revision 1.10
>> diff -u -r1.10 VirtualProxy.java
>> --- src/java/org/apache/ojb/broker/VirtualProxy.java	7 Jan 2004  
>> 11:41:20 -0000	1.10
>> +++ src/java/org/apache/ojb/broker/VirtualProxy.java	12 Feb 2004  
>> 22:18:28 -0000
>> @@ -57,6 +57,7 @@
>>    import org.apache.ojb.broker.accesslayer.IndirectionHandler;
>> +import org.apache.ojb.broker.util.ProxyHelper;
>>   import java.lang.reflect.Constructor;
>>  //#ifdef JDK13
>> @@ -130,7 +131,8 @@
>>          try
>>          {
>>              // the invocation handler manages all delegation stuff
>> -            InvocationHandler handler = new IndirectionHandler(key,  
>> realSubjectsIdentity);
>> +            //InvocationHandler handler = new  
>> IndirectionHandler(key, realSubjectsIdentity);
>> +        	InvocationHandler handler =  
>> ProxyHelper.createIndirectionHandler(key,realSubjectsIdentity);
>>               // the proxy simply provides the interface of the real  
>> subject
>>              Constructor constructor =  
>> proxyClass.getDeclaredConstructor(new Class[]{  
>> InvocationHandler.class });
>> Index: src/java/org/apache/ojb/broker/accesslayer/CollectionProxy.java
>> ===================================================================
>> retrieving revision 1.25
>> diff -u -r1.25 CollectionProxy.java
>> ---  
>> src/java/org/apache/ojb/broker/accesslayer/CollectionProxy.java	14  
>> Jan 2004 00:09:32 -0000	1.25
>> +++  
>> src/java/org/apache/ojb/broker/accesslayer/CollectionProxy.java	12  
>> Feb 2004 22:18:58 -0000
>> @@ -82,9 +82,9 @@
>>      private transient PersistenceBroker m_broker;
>>      private PBKey m_brokerKey;
>>      private Query m_query;
>> -    private Collection m_data;
>> +    protected Collection m_data;
>>      private Class m_collectionClass;
>> -    private int m_size = -1;
>> +    protected int m_size = -1;
>>      /*
>>      arminw
>>      fix a bug, caused by closing PB instances
>> Index:  
>> src/java/org/apache/ojb/broker/accesslayer/IndirectionHandler.java
>> ===================================================================
>> retrieving revision 1.23
>> diff -u -r1.23 IndirectionHandler.java
>> ---  
>> src/java/org/apache/ojb/broker/accesslayer/IndirectionHandler.java	7  
>> Jan 2004 11:41:20 -0000	1.23
>> +++  
>> src/java/org/apache/ojb/broker/accesslayer/IndirectionHandler.java	12  
>> Feb 2004 22:19:19 -0000
>> @@ -92,13 +92,13 @@
>>      /**
>>       * the real subject which this is hidden by the proxy
>>       */
>> -    private Object realSubject = null;
>> +    protected Object realSubject = null;
>>      /**
>>       * represents the identity of the real subject.
>>       * when the real subject is not yet materialized,
>>       * it can be loaded from the underlying db by this identity  
>> object.
>>       */
>> -    private Identity id = null;
>> +    protected Identity id = null;
>>      private transient ArrayList listeners;
>>      /*
>>      arminw:
>> @@ -325,7 +325,7 @@
>>      /**
>>       * retrieve the real subject from the underlying RDBMS
>>       */
>> -    private synchronized void materializeSubject() throws  
>> PersistenceBrokerException
>> +    protected synchronized void materializeSubject() throws  
>> PersistenceBrokerException
>>      {
>>          try
>>          {
>>          Index:  
>> src/java/org/apache/ojb/broker/core/ 
>> PersistenceBrokerConfiguration.java
>> ===================================================================
>> retrieving revision 1.1
>> diff -u -r1.1 PersistenceBrokerConfiguration.java
>> ---  
>> src/java/org/apache/ojb/broker/core/ 
>> PersistenceBrokerConfiguration.java	26 Apr 2003 23:18:25 -0000	1.1
>> +++  
>> src/java/org/apache/ojb/broker/core/ 
>> PersistenceBrokerConfiguration.java	12 Feb 2004 22:19:33 -0000
>> @@ -87,4 +87,10 @@
>>       * @return Class
>>       */
>>      public Class getCollectionProxyClass();
>> +    +    /**
>> +     * Answer the class to be used for IndirectionHandler
>> +     * @return Class
>> +     */
>> +    public Class getIndirectionHandlerClass();
>>  }
>> Index: src/java/org/apache/ojb/broker/util/ProxyHelper.java
>> ===================================================================
>> retrieving revision 1.22
>> diff -u -r1.22 ProxyHelper.java
>> --- src/java/org/apache/ojb/broker/util/ProxyHelper.java	8 Feb 2004  
>> 13:19:47 -0000	1.22
>> +++ src/java/org/apache/ojb/broker/util/ProxyHelper.java	12 Feb 2004  
>> 22:19:48 -0000
>> @@ -65,6 +65,7 @@
>>  import java.util.List;
>>  import java.util.Set;
>>  +import org.apache.ojb.broker.Identity;
>>  import org.apache.ojb.broker.ManageableCollection;
>>  import org.apache.ojb.broker.PBKey;
>>  import org.apache.ojb.broker.PersistenceBroker;
>> @@ -94,6 +95,9 @@
>>  	private static final Constructor setProxyConstructor;
>>  	private static final Constructor collectionProxyConstructor;
>>  	private static Constructor collectionProxyConstructorUserDefined;
>> +	
>> +	private static final Constructor indirectionHandlerConstructor;
>> +	private static Constructor indirectionHandlerConstructorUserDefined;
>>       static
>>  	{
>> @@ -126,6 +130,36 @@
>>              throw new PersistenceBrokerException("Could not build  
>> constructor for collectionProxy class ["+
>>                      collectionProxyClass+"] defined in  
>> configuration", e);
>>          }
>> +        +        /*Custom Indirection Handler*/
>> +        paramType = new Class[]{PBKey.class, Identity.class};
>> +        try
>> +		{
>> +        	indirectionHandlerConstructor =  
>> IndirectionHandler.class.getConstructor(paramType);
>> +        }
>> +        catch (Throwable t)
>> +		{
>> +        	throw new PersistenceBrokerException("Error accessing  
>> constructor for indirection handler class.", t);
>> +        }
>> +
>> +        Class indirectionHandlerClass = null;
>> +        try
>> +		{
>> +        	PersistenceBrokerConfiguration config =
>> +        		(PersistenceBrokerConfiguration)  
>> OjbConfigurator.getInstance().getConfigurationFor(null);
>> +
>> +        	indirectionHandlerClass =  
>> config.getIndirectionHandlerClass();
>> +        	if(indirectionHandlerClass != null)
>> +        	{
>> +        		indirectionHandlerConstructorUserDefined =  
>> indirectionHandlerClass.getConstructor(paramType);
>> +        	}
>> +        }
>> +        catch (Exception e)
>> +		{
>> +        	throw new PersistenceBrokerException("Could not build  
>> constructor for indirectionHandler class ["+
>> +        			collectionProxyClass+"] defined in configuration", e);
>> +        }
>> +             }
>>       /**
>> @@ -318,6 +352,38 @@
>>              throw new PersistenceBrokerException(e);
>>          }
>>      }
>> +    +    /**
>> +     * Create a IndirectionHandler for a given query
>> +     * @param key
>> +     * @param id
>> +     * @return the IndirectionHandler
>> +     */
>> +    +    public static final IndirectionHandler  
>> createIndirectionHandler(PBKey key, Identity id)
>> +	{
>> +
>> +    	Object param[] = {key,id };
>> +    	
>> +        Constructor indirectionConstructor =  
>> indirectionHandlerConstructorUserDefined;
>> +    	if (indirectionConstructor == null)
>> +    	{
>> +
>> +    		indirectionConstructor = indirectionHandlerConstructor;
>> +    	}
>> +    	
>> +    	try
>> +		{
>> +    		
>> +    		return (IndirectionHandler)  
>> indirectionConstructor.newInstance(param);
>> +    	}
>> +    	catch (Throwable e)
>> +		{
>> +    		throw new PersistenceBrokerException(e);
>> +    	}
>> +    }
>> + +          /**
>>       * Answer the class to be used for CollectionProxy
>>            Index:  
>> src/java/org/apache/ojb/broker/util/configuration/impl/ 
>> OjbConfiguration.java
>> ===================================================================
>> retrieving revision 1.31
>> diff -u -r1.31 OjbConfiguration.java
>> ---  
>> src/java/org/apache/ojb/broker/util/configuration/impl/ 
>> OjbConfiguration.java	17 Jan 2004 16:57:34 -0000	1.31
>> +++  
>> src/java/org/apache/ojb/broker/util/configuration/impl/ 
>> OjbConfiguration.java	12 Feb 2004 22:20:08 -0000
>> @@ -104,6 +104,7 @@
>>      private String loggerConfigFile;
>>      private Class persistenceBrokerClass;
>>      private Class collectionProxyClass;
>> +    private Class indirectionHandlerClass;
>>      // limit for number of values in SQL IN Statement
>>      private int sqlInLimit;
>>  @@ -300,6 +301,9 @@
>>           // load CollectionProxy Class
>>          collectionProxyClass = getClass("CollectionProxyClass",  
>> null);
>> +        +        // load CollectionProxy Class
>> +        indirectionHandlerClass =  
>> getClass("IndirectionHandlerClass", null);
>>           // load Locking Timeout
>>          AbstractLockStrategy.DEFAULT_LOCK_TIMEOUT =  
>> getInteger("LockTimeout", 60000);
>> @@ -373,5 +377,10 @@
>>  	{
>>  		return collectionProxyClass;
>>      }
>> +	
>> +	public Class getIndirectionHandlerClass()
>> +	{
>> +		return indirectionHandlerClass;
>> +	}
>>   }


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Mime
View raw message