Configure 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. 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 we 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 your 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:
When configuring an EJB Timer/Scheduler, remember that the default scheduler uses the simple file-based Apache Derby database by default so that we can quickly get a functioning environment up and running. DO NOT use the Derby database for production use. Moreover, the default Derby database does not support a clustered job scheduler, nor a clustered batch container.
Tasks
- 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 we complete this action we create a custom scheduler instance. Next, configure the timer service to use that custom instance.
- In the administrative 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 your 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 your data source JNDI name from the menu list to change the data source. Use any supported database, such as DB2 or Oracle) select your 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 your chosen Datasource Alias.
- Enter your chosen Table Prefix to have several server processes use the same database, but different tables.
- Enter a Poll Interval value in milliseconds. See information about configuring the timer service.
- Click Apply.
- Click OK.
- Change all of the server processes to use the same database we chose from the Data source JNDI name menu list earlier.
Configure the timer service using scripting Use schedulers Configure schedulers EJB timer service settings