Actually, you made me reallise that I misread the code.
The contextInTransactionList kept in the StandardDaoManager in non-static 
ThreadLocal.

non-static is the keyword here.

Which means that each DaoManager will have their instances of the context.
But, it also means, that each of DaoManager instance will have a different 
value in every thread.

contextInTransactionList instances = DaoManagerInstances * number of threads in 
which they are used.

Which is exactly what we want.

Thanks for helping me see the light.
Louis


Prashanth Sukumaran wrote:
Hi Louis,

Logically it should not.  Coz., they are two different instances.  Each 
DAOManger will have their
own Connection object when they started respective transactions.  So the commit 
will happen
respectively connection objects. Right.

For ex., when you say startTransaction() deep inside the ibatis code you have

         new JdbcDaoTransaction(dataSource); for a JDBC and similarly for JTA, 
SQLMap etc.

Each of these hold a connection object and hence should not colide with each 
other.

Rgds

Prashanth Sukumaran.

--- Louis Letourneau <[EMAIL PROTECTED]> wrote:


Hello,
 I'm trying to understand the problems/issues of using multiple DaoManagers in 
the same
application.

Say I have 2 jars:
MyApp.jar
TheirLib.jar

Both use Ibatis DAO. So, somewhere in their initialization, each makes a call to
DaoManagerBuilder.buildDaoManager(...) and keeps their DaoManager instance 
somewhere.

If in a thread I call a method that uses the daomanager of MyApp and in the 
same method I use
the daomanager of TheirLib, won't the first commit of the 2 commit everything?

ie:
// Code in MyApp.jar
public void testMethod() {
 daoManager_.startTransaction();
 try{
   doSomethingWithTheAppDaos();
   TheirLibMethod(); <--- Somewhere in here there is a 
theirLibDaoManager.commitTransaction();
   daoManager_.commitTransaction();
 }
 finally {
   daoManager.endTransaction();
 }
}

Since the contexts/transactions are kept in the TLS (thread local storage) 
doesn't multiple
daomanager instances step on eachother (as long as they are used in the same 
thread)?

Thanks
Louis






__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com

Reply via email to