Configuring a timer service for network deployment
We can configure the EJB timer service for timers that can persist through application server shutdowns and restarts.
A database instance must exist before you complete either of the processes that are documented in this topic. For example, we might have a DB2 or Oracle instance. We must configure the Timer Service to use that database.
WebSphere Application Server implements the EJB Timer Service. Based on the business needs, we can use persistent timers or non-persistent timers. Persistent timers are helpful if you are creating a timer for a time-based event that requires assurance of timer existence beyond the life cycle of the server to persist through server shutdowns and restarts. Previously started persistent timers automatically start when the server starts, and they require a database instance.
Non-persistent timers do not use a data store and are canceled when the application server is stopped or fails to remain in an active state. Non-persistent timers exist only on the server where they are created. In a clustered environment, if the EJB application automatically creates a non-persistent timer and this application is mirrored on multiple servers, each server has its own non-persistent timer that runs within that server environment. Programmatically created non-persistent timers only run in the cluster member where it was created.
Both persistent and non-persistent timers require a work manager. Persistent timers use the work manager used by the scheduler service. Non-persistent timers use the default work manager of the server by default but can be configured to use a different work manager through EJB timer scripting. Non-persistent timers do not use the scheduler service.
Configure a persistent timer in a network deployment environment is mostly about using the same data source.
We can configure the timer service to share the same database across multiple servers. However, each server must use its own unique database table. Complete one of the following processes to configure the timer service to share the same database across multiple servers:
- Configure a scheduler instance for the cluster, then configure the timer service to use that scheduler instance.
- Configure a scheduler instance for the cluster. When you complete this action we create a custom scheduler instance. Next, configure the timer service to use that custom instance.
- In the console, click Servers >Application Servers > servername > EJB Container Settings > EJB timer service settings. The timer service settings panel is displayed.
- Select Use custom scheduler instance.
- Select the Scheduler JNDI name from the list.
- Click Apply.
- Click OK.
- Configure the timer service default scheduler instance for each server to use the same data source.
- Select Use internal EJB timer service scheduler instance. To customize the pre-configured instance:
- Select the data source JNDI name from the menu list to change the data source. We can use any supported database, such as DB2 or Oracle) select the Data source JNDI name from the menu list. The default database listed cannot be shared because it is configured for one server only, and it uses the single server version of Apache Derby, which can only be accessed by one server process at a time.
- Enter the chosen Datasource Alias.
- Enter the chosen Table Prefix to have several server processes use the same database, but different tables.
- Enter a Poll Interval value in milliseconds. For more details see information about configuring the timer service.
- Click Apply.
- Click OK.
- Change all of the server processes to use the same database you chose from the Data source JNDI name menu list earlier.
Related tasks
Configure the timer service Use schedulers Configure schedulers
EJB timer service settings