It can't call the Container managed transaction because the during these methods, container doesn't have a valid transaction. But u can create your own transactions using EJBContext.getUserTransaction();
- You can only call EJBContext.getUserTransaction(); if you are using BMT and the Container has nothing to do here.
- To create your own transaction you have to call methods on UserTransaction and the point is you can't do that! Or is it the case that you can call some methods but not others???

In this point I have the same doubt as Giju: if you can't call methods on it then why the heck can you get a ref to UserTransaction in the first place???
As for activate/passivate Giju, for stateful session beans they are used by the container when a client takes too long between calls. The bean is sent to sleep whith passivate but the client still exists. When the bean wakes up (because the client finally made another call) it can also access the client's info. The client is there all along!
For entity beans activate/passivate do something different. When a bean goes out of the pool to "play the role" of a particular entity (Jhon Malcom, #28) ejbActivate is called. At this stage it doesn't know who the client is, it's just focused on becoming Jhon Malcom. When the bean finishes it's performance and goes back to the pool, ejbPassivate is called. The bean doesn't know who the client was anymore and it doesn't care. It just needs to stop playing Jhon Malcom, go back to the pool and be just a bean again. See pages 348-355 of HFEJB.