Sometimes when ejbTimeout returns, there is no error for persist(D), but the data is not stored in the database.
--> sounds like flush has not been performed, which is indeed strange
Sometimes I've seen a transaction start, but not complete. After this, I cannot modify the row I'm trying to persist in D from outside GF until I exit GF.
--> row is indeed locked until transaction is committed or aborted
I don't understand well what is the relation between the MDB delivery and the Timer? I guess that when a message is delivered, A calls B to register a new Timer? Are you passing information in the Timer itself? Or is the row to update a fixed one? Which version of Glassfish are you using? Are you using Oracle Toplink for JPA?
[Message sent by forum member 'ewernli' (erwann.wernli_at_gmail.com)]
http://forums.java.net/jive/thread.jspa?messageID=368416