Using a stateless session bean with ejb timer service would probably be a good choice. Just use a unique object to identify the timer when you create it. Then it's possible to see if there's already something scheduled. I assume that if a timer is used that only expires once it will be in the list of the timers until its transaction has committed.
[Message sent by forum member 'woel' (woel)]
http://forums.java.net/jive/thread.jspa?messageID=295321