I found I post my former mail to [EMAIL PROTECTED] and that is not correct. So I forward the mail to the correct list again. Sorry for the inconvenience. ------------------------------ Dear Bill, The transaction did propagate correctly and without problem because it is not a different transaction issue. The question is that the new activated instance (when calling m1()) is not put into the HashMap IMMEDIATELY. It does it in the "finally block" and that is after the invoke chain. So if the implementation of m1() calling m2() thru the entitie's component interface (i.e. calling thru container), the m2() would go thru the EntityMultiInstanceInterceptor again. The interceptor would try to looks that HashMap for the instance. Oops! It would still activate a new instance of the same PK because the instance activated during calling in m1() is not put into the HashMap YET (because the invoke chain is not completed yet.) This is what I think it might be a bug. Henri P.S. It did cause trouble in my code. I saw two instances were consecutiously activated and I read the source code of jboss release 2.4.4. -----Original Message----- From: Bill Burke [mailto:[EMAIL PROTECTED]] Sent: Friday, March 22, 2002 10:10 PM To: Henri Chen; [EMAIL PROTECTED] Subject: RE: Bug in EntitySynchronizationInterceptor.java? I don't think so....Let me go through your comments again just to make sure. I keep a transaction->entity map. Before an instance is created anew, the EntityMultiInstanceInterceptor looks in a HashMap to see if the instance has already been created for this transaction. The transaction should be propagated when you call _ctx.getEJBOejct()->stubx1->m2(). Unless there is some bug someplace and the transaction is not getting propagated. Are you seeing bad behaviour? Or is this just your observation just looking at the code? Bill > -----Original Message----- > From: Henri Chen [mailto:[EMAIL PROTECTED]] > Sent: Friday, March 22, 2002 1:33 AM > To: [EMAIL PROTECTED] > Cc: [EMAIL PROTECTED] > Subject: Bug in EntitySynchronizationInterceptor.java? > > > Dear Bill, > > It might be too late to associate the entity bean with the > transaction until after the invoke chain. > > The following is a senario that might cause trouble: > > * An entity bean XBean with component interface method m1() and m2(). > * Some session bean Y calls XHome.findByPrimaryKey() to get the > component interface stub x1. > * Y calls x1.m1(), the EntityMutltiInstanceInterceptor > automatically activate and load an instance of the XBean. > * The implementation of method m1() in XBean use > _ctx.getEJBObject() to get the stub x1, and calling m2() thru the > container again. > * The EntityMutltiInstanceInterceptor, AGAIN, automatically > activate and load ANOTHER NEW INSTANCE of x1; and then invoke > m2() on this new instance and return. > * The EntitySynchronizationInterceptor associate 2nd instance > into txEntityMap. > * The m1() on the first instance return. > * The EntitySynchronizationInterceptor associate 1st instance > into txEntityMap WITH the same primary key and transaction.(So > basically, the 2nd instance is overwritten and gone) > > The result is that two methods m1() and m2 are called on two > DIFFERENT instances. Therefore, the state of the bean would be > unpredictable because all that have done inside m2() is lost. > > Am I right? > > Henri Chen > > PS. This is based on the jboss 2.4.4 source code, and use commit > Option >B.%,ׯzZ)홨x%In,uޖfz{elqzm?X(~zwXb?,ׯzZ)