With tonight's CVS as well as 2.0 FINAL, if an ejbLoad method throws an
EJBException (or any runtime exception), JBoss fails to rollback the
transaction and discard the bean instance per spec. (section 12.3 of the
1.1 spec).
This might be a fairly nasty issue: my initial symptom was having later
requests for the same bean doing the 'LOCKING-WAITING' thing in
EntityInstanceInterceptor, which indicates that the transaction stuff
never let go of the bad bean, either.
Looking into TxCapsule, it looks to me like if an exception is thrown
out of doBeforeCompletion (like this), endResources, afterCompletion,
etc. never get called. Since afterCompletion (on the
InstanceSynchronization inner class in EntitySynchronizationInterceptor)
seems to be where the instance gets disassociated from the transaction.
I'm thinking that TxCapsule needs to be beefed up WRT exception
handling, which could accomplish the rollback. That should also arrange
for the instance that's at fault to not go back into the pool in
afterCommit, but I'm not sure how that would be accomplished.
g'd night!
danch