As a developer you have to choose the best tool for the task at hand (no religious decisions based on vendors should be taken).
When I started to work with Spring Framework in 2006 I learned to implement jobs running at a certain interval by using quartz.As at the time I had only learned EJB 2.0 it seemed a huge feature for me.
The Spring Framework docs shows how you can do this. You can use cron expressions to set a time for execution , a repeat interval and whatever cron under Linux allows you to do.
The problem with this is that it is a bit more complicated and non-standard.
The EJB3 solution is to use the TimerService and call a method on a session bean(or message driven bean) whenever the timer expires. You use the @Timeout annotation for that method.
Here is an example for this. Although it is very easy to set some triggers without much pre-configuration (that's why you have a EJB3 container) it lacks some of the flexibility of Quartz.
I found a copy of EJB3 in Action at work and the author suggests using Quartz for more complicated tasks instead of the EJB3 scheduling support.
I agree on this issue.
Which one would I choose for a new system ? The answer is (consultant fashion): it depends.
Of course if you only have a servlet container (say Tomcat) you will need to go with the Spring/Quartz support (as non standard as it might be) but for a fully blown EJB3 container you can start with the TimerService and replace it as required as the customer requirements change(as non-standard or unprofessional as it might seem to do it).
Eating the Same Foods Repeatedly Is Stupid
8 hours ago