this is required by the spec. Timer events are transactional. THe process of throwing an EJBException from our @Timeout method is equivalent to a transaction rollback.
I am not sure if I understood you correctly. Does it mean that every time I create timer event in my @Timeout method, and the method fails the transaction is rolled back and so all timer events created in it?
BTW I created BEAN managed EJB and it works correctly if I rollback after exception manualy.