javadev javadev - 17 days ago 7
Java Question

Dynamic parameters for @Schedule method in an EJB 3.x

I'm new to the @Schedule annotations in J2EE6

I want to run a job using EJB 3.x with Glassfish 3.1.

The javax.ejb.Schedule seems to be a good choice for us, so we could think of our custom time as something like:

@Singleton
public class CustomTimer {
@EJB
SettingsFacade settingsFacade;

@Schedule(second="someSecondParameter", minute="someMinuteParameter",hour="someHourParameter", persistent=false)
public void executeTimer(){
//Code executing something against database using the settingsFacade
}
}


Here, we want the parameters to be got from database, so they are changed every month. Any clean solution for this?

Answer

No, there is no solution with @Schedule, because annotation attributes in general should be compile time constants.

When more flexibility is needed, programmatic timers can be used. Also then polling database for changed configuration and removing existing and creating new timers must be implemented.