In EJB 3.1, you can have declarative timers that are triggered at deploy time. Right now, timers have to be triggered via an invocation (say from a Servlet context listener). Personally, I would use Quartz-EJB integration right now (which is very nice and easy to use, once you get the hang of Quartz). Also, some app-servers have proprietary EJB based timers/schedulers right now.
Independent Consultant — Author, EJB 3 in Action — Expert Group Member, Java EE 6 and EJB 3.1