You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Armin Waibel <ar...@code-au-lait.de> on 2003/07/23 10:19:50 UTC
Re: dynamically switch RepositoryDescriptor (setEnablePerThreadChanges)
Hi Olli,
----- Original Message -----
From: <ol...@ppi.de>
To: <oj...@db.apache.org>
Sent: Wednesday, July 23, 2003 9:35 AM
Subject: dynamically switch RepositoryDescriptor
(setEnablePerThreadChanges)
> Hello,
>
> in our application there are (collection) fields
> for which we sometimes want to use proxies and sometimes
> not.
>
> It is possible that different PersistenceBrokers
> simulaneously access different instances of that field
> in different threads, one should use a proxy and the
> other should not.
>
> I have noticed the MetaDataManager.setEnablePerThreadChanges().
> It seems to give us a chance to fulfill that wish, but I am unhappy
> with it, so I would like to ask you if I have understood correctly:
>
> I do the following during initialization
> MetadataManager.getInstance().setEnablePerThreadChanges(true);
>
correct!
> and every time I want to use different settings than
> the default ones, then I do
>
> ---------
> // modify the MetaDataManager to globally
> // use a different RepositoryDescriptor
> MetaDataManager.getInstance().setDescriptor(MY_TEMP_DESCRIPTOR);
> PersistenceBroker pb
> = PersistenceBrokerFactory.defaultPersistenceBroker();
>
> // ugly downcast. refresh() causes pb to get its
> // descriptor-repository from the MetaDataManager
> ((PersistenceBrokerImpl)pb).refresh();
>
Shouldn't be necessary. refresh()-method is automatically
called before a PB instance was obtained from the PB-pool.
> [do all database stuff here ...]
>
> // afterwards, possibly in finally block:
> // reset descriptor in globally
> MetaDataManager.getInstance().setDescriptor(MY_NORMAL_DESCRIPTOR);
>
Not necessary. After using the PB instance with the 'temp repository',
do
PB.close(). If you want to use the 'normal repository' with the same
thread
too do
> MetaDataManager.getInstance().setDescriptor(MY_NORMAL_DESCRIPTOR);
> PersistenceBroker pb
> = PersistenceBrokerFactory.defaultPersistenceBroker();
after closing the 'temp' instance.
> // will invoke refresh() to reset the descriptor
> pb.close();
Do not invoke refresh, only return the PB instance to pool.
> --------
>
> Is that the intended usage of that feature?
yes, except the needless lines.
> There are a couple
> of things that I dislike, so if I am right, I would like
> to discuss a different solution with you.
Great! I like to hear better solutions ;-)
Do you use the latest from CVS?
There are a new methods
addProfile(Object key, DescriptorRepository repository)
loadProfile(Object key)
make use of that feature easier.
regards,
Armin
>
> Olli
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org