IP Library Granted Patent US 9,384,103
Granted Patent B2
US 9,384,103 · App. 11/749,046 · Granted Jul 5, 2016

EJB cluster timer

Inventors: Matthew Shinn (San Francisco, CA); Naresh Revanuru (Fremont, CA); Dean Bernard Jacobs (Berkeley, CA); Prasad Peddada (Fairfield, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F11/2035G06F11/203G06F11/2046
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,384,103
App. No.
11/749,046
Granted
Jul 5, 2016
Kind
B2
Abstract

Multiple application server instances can be arranged in a cluster that implements a distributed EJB timer system. A high availability database can store EJB timer info. The EJB timer jobs can be distributed among the application server instances of the cluster that implement the distributed EJB timer system. In case of a failure of an application server instance, the EJB timer info can be used to reassign the EJB timer jobs associated with the failed application server instance.

Claims (46)

1. A computer implemented system comprising:

one or more computers, each including a microprocessor;

an application server cluster executing on the one or more computers and including a plurality of application server instances, wherein the cluster implementing a distributed Enterprise Java Bean (EJB) timer system and providing an EJB timer application program interface (API) receives requests for timer jobs to be processed by the cluster, each timer job created by implementing a class and including an EJB timer configured to trigger an execution of an EJB deployed on the cluster when the corresponding EJB timer expires, and wherein information for the EJB timers is serialized and stored in a database which additionally stores classloader information of the classes implemented by the timer jobs; and

a timer master that executes as a singleton service on one of the plurality of application server instances, each of which application server instances requests timer jobs from the timer master, wherein the timer master is configured to

retrieve the information for the EJB timers from the database and deserialize the information,

use the deserialized information to distribute the timer jobs among the application server instances,

perform, for each timer job to be distributed, the steps of

identifying, from the plurality of application server instances, an application server instance configured to execute the particular EJB associated with that timer job,

retrieving, from the database, classloader information of the class implemented by that timer job,

placing the classloader information of the implemented class on the identified application server instance to load the class thereon, wherein the placing utilizes the retrieved classloader information to load the corresponding EJB timer, and

upon failure of the identified application server instance, use the information for the loaded EJB timer on the identified application server instance to reassign the distributed timer job from the identified application server instance, to another of the application server instances.

2. The computer implemented system of claim 1 , wherein the application server instance that hosts the timer master maintains a lease for the timer master in a lease table in a database.

3. The computer implemented system of claim 2 , wherein upon failure of the application server instance currently hosting the timer master, another application server instance in the cluster is reassigned to host the timer master.

4. The computer implemented system of claim 3 , wherein the assignment of another application server instance to host the timer master functionality is performed by a migration master.

5. The computer implemented system of claim 1 , wherein the timer master schedules jobs in addition to the timer jobs.

6. The computer implemented system of claim 1 , wherein each of the application server instances is configured to view all of the scheduled timer jobs via the database.

7. The computer implemented system of claim 1 , wherein the cluster contains an additional application server instance in addition to the plurality of application server instances.

8. A non-transitory computer readable storage medium including instructions stored thereon, which when read and executed by one or more computers cause the one or more computers to perform the steps comprising:

configuring an application server cluster executing on the one or more computers and including a plurality of application server instances, wherein the cluster implementing a distributed Enterprise Java Bean (EJB) timer system and providing an EJB timer application program interface (API) receives requests for timer jobs to be processed by the cluster, each timer job created by implementing a class and including an EJB timer configured to trigger an execution of an EJB deployed on the cluster when the corresponding EJB timer expires, and wherein information for the EJB timers is serialized and stored in a database which additionally stores classloader information of the classes implemented by the timer jobs; and

configuring a timer master that executes as a singleton service on one of the plurality of application server instances, each of which application server instances requests timer jobs from the timer master, wherein the timer master is configured to

retrieve the information for the EJB timers from the database and deserialize the information,

use the deserialized information to distribute the timer jobs among the application server instances,

perform, for each timer job to be distributed, the steps of

identifying, from the plurality of application server instances, an application server instance configured to execute the particular EJB associated with that timer job,

retrieving, from the database, classloader information of the class implemented by that timer job,

placing the classloader information of the implemented class on the identified application server instance to load the class thereon, wherein the placing utilizes the retrieved classloader information to load the corresponding EJB timer, and

upon failure of the identified application server instance, use the information for the loaded EJB timer on the identified application server instance to reassign the distributed timer job from the identified application server instance, to another of the application server instances.

9. A method of providing an EJB cluster timer, comprising:

providing an application server cluster executing on the one or more computers and including a plurality of application server instances, wherein the cluster implementing a distributed Enterprise Java Bean (EJB) timer system and providing an EJB timer application program interface (API) receives requests for timer jobs to be processed by the cluster, each timer job created by implementing a class and including an EJB timer configured to trigger an execution of an EJB deployed on the cluster when the corresponding EJB timer expires, and wherein information for the EJB timers is serialized and stored in a database which additionally stores classloader information of the classes implemented by the timer jobs; and

providing a timer master that executes as a singleton service on one of the plurality of application server instances, each of which application server instances requests timer jobs from the timer master, wherein the timer master is configured to

retrieve the information for the EJB timers from the database and deserialize the information,

use the deserialized information to distribute the timer jobs among the application server instances,

perform, for each timer job to be distributed, the steps of

identifying, from the plurality of application server instances, an application server instance configured to execute the particular EJB associated with that timer job,

retrieving, from the database, classloader information of the class implemented by that timer job,

placing the classloader information of the implemented class on the identified application server instance to load the class thereon, wherein the placing utilizes the retrieved classloader information to load the corresponding EJB timer, and

upon failure of the identified application server instance, use the information for the loaded EJB timer on the identified application server instance to reassign the distributed timer job from the identified application server instance, to another of the application server instances.

10. The method of claim 9 , wherein the application server instance that hosts the timer master maintains a lease for the timer master in a lease table in a database.

11. The method of claim 10 , wherein upon failure of the application server instance currently hosting the timer master, another application server instance in the cluster is reassigned to host the timer master.

12. The method of claim 11 , wherein the assignment of another application server instance to host the timer master functionality is performed by a migration master.

13. The method of claim 9 , wherein the timer master schedules jobs in addition to the timer jobs.

14. The method of claim 9 , wherein each of the application server instances is configured to view all of the scheduled timer jobs via the database.

15. The method of claim 9 , wherein the cluster contains an application server instance in addition to the plurality of application server instances.

16. The computer implemented system of claim 1 , wherein the cluster contains an additional application server instance in addition to the plurality of application server instances.

17. The computer implemented system of claim 1 , wherein the system enables scheduled jobs to be submitted to be run within the cluster.

18. The method of claim 9 , wherein scheduled jobs can be submitted to be run within the cluster.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2010
From: BEA SYSTEMS, INC.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 025192/0244 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2010
From: SHINN, MATTHEW; REVANURU, NARESH; JACOBS, DEAN BERNARD; PEDDADA, PRASAD
To: BEA SYSTEMS, INC.
Reel/Frame 024559/0625 →
Continuity (3)
Provisional Application 60747364 · May 16, 2006
Provisional Application 60909179 · Mar 30, 2007
Related Publication 20070288481A1 · Dec 13, 2007