Although not ideal (and if you find a better solution i'd be grateful if you could share it), in my startup code, i enumerate the timers on each particular bean and if any exist i stop and delete them before starting a new one (or you can simply leave them running without starting any more)
As to the errors during re-deploy, i simply catch any errors and re-lookup the bean, again not ideal...
[Message sent by forum member 'jsl123' (jsl123)]
http://forums.java.net/jive/thread.jspa?messageID=237820