ABOU LINA wrote:
> That's very good idea using threadLocal :) , thx very much about these
> informations :).
>
My pleasure!
All code for "metadata profiles" (by using ThreadLocale) is handled by
class MetadataManager. If you have problems using "metadata profiles"
look at this class.
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/MetadataManager.java?view=markup
In MetadataManager the use of metadata profiles is explained too
http://db.apache.org/ojb/api/org/apache/ojb/broker/metadata/MetadataManager.html
regards,
Armin
>
>
> On 5/24/06, Armin Waibel <[EMAIL PROTECTED]> wrote:
>>
>> ABOU LINA wrote:
>> > thx for your reply .
>> >
>> > looking the example :
>> >
>> > // get MetadataManager instance
>> (1) > MetadataManager mm = MetadataManager.getInstance();
>> >
>> > // enable per thread mode if not done before
>> > mm.setEnablePerThreadChanges(true);
>> >
>> (2) > // Load additional object metadata by parsing an repository file
>> > DescriptorRepository dr_1 =
>> > mm.readDescriptorRepository("pathOrURLtoFile_1");
>> > DescriptorRepository dr_2 =
>> > mm.readDescriptorRepository("pathOrURLtoFile_2");
>> >
>> (3) > // add profiles
>> > mm.addProfile("global", mm.copyOfGlobalRepository());
>> > mm.addProfile("guest", dr_1);
>> > mm.addProfile("admin", dr_2);
>> >
>> (4) > // now load a specific profile
>> > mm.loadProfile("admin");
>> (5) > broker = PersistenceBrokerFactory.defaultPersistenceBroker();
>> >
>> >
>> > MetaManager is a singleton i think. so in this case we will have a
>> > probleme with
>> > concurence access. if user A loadProfile("guest") and just after
>> > loading guest profile another user B (profile admin)
>> > execute broker =
PersistenceBrokerFactory.defaultPersistenceBroker();
>> > so in this situation
>> > B got a broker with profile admin because MetaManager is a
singleton.
>> >
>> > is right ????
>>
>> If each user (thread) use a different broker instance no. All steps
from
>> (1) to (3) have to be done once at startup of your application.
Thus no
>> concurrency issues are expected.
>>
>> With step (4) the calling thread was associated with a specific
profile
>> (using ThreadLocale). This call have to be done for each thread to
load
>> the correct profile. Take care when using thread-pools (think e.g.
>> Tomcat use it) to reassign the correct profile for each calling user.
>> When OJB returns the broker instance (5) the profile for the current
>> thread was associated.
>>
>> In OJB test-suite we test the use of different metadata profiles in
>> MetadataMultithreadedTest and never detect problems with this feature.
>>
>> Again if user A and B (different threads) use different broker
instances
>> no concurrency issues are expected.
>>
>> regards,
>> Armin
>>
>>
>>
>> >
>> >
>> >
>> >
>> >
>> >
>> > On 5/24/06, Armin Waibel <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Hi,
>> >>
>> >> ABOU LINA wrote:
>> >> > Hi;
>> >> >
>> >> > i have two mapping file : repository1.xml and repository2.xml.
>> >> >
>> >> > the difference between these two file are the value of auto-*
>> >> > [auto-retrieve, auto-update ..] ; at runtime sometimes i need to
use
>> >> > repository1.xml and somtimes the repository2.xml .
>> >> >
>> >> > what is the best and optimal solution about this conf ???
>> >> >
>> >>
>> >> You can use metadata profiles on per thread base.
>> >>
>> >>
>>
http://db.apache.org/ojb/docu/guides/metadata.html#Per+thread+metadata+changes
>>
>> >>
>> >>
>> >>
>> >>
>>
http://db.apache.org/ojb/docu/guides/metadata.html#Object+metadata+profiles
>>
>> >>
>> >>
>> >> This way you can load a specific metadata profiles
(repository1.xmlor
>> >> repository2.xml) for the current thread.
>> >>
>> >> Take care of caching issues, e.g. obj1 from rep1 was used in rep2
>> >> environment will cause undetermined behavior. Thus it's recommended
to
>> >> use the two-level cache or only a session based (per broker) cache.
>> >>
>> >> regards,
>> >> Armin
>> >>
>> >>
>> >> > thx in advance
>> >> >
>> >>
>> >>
---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>
>> >>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]