Hi,
As per my understanding,
Timer is an active object which allows you to perform
operations like cancel/getNextTimeout/getTimeRemaining etc.
To operate on these methods, it must be in
active transaction.
"setSessionContext/ejbCreate/ejbRemove" are executed in
unspecified transaction.
And for stateless session beans and MDBs "ejbActivate/ejbPassivate" does not make
any sense which also are executed in unspecified transaction.
So Timer methods can not be called from these methods.
In case of "afterCompletion", it is related to stateful session bean and also
this method is the last possible method for stateful session bean transaction
hence can not be used for Timer methods.
Hope this is useful to you.
Regards