Claims
- 1. A software system supporting distributed web applications, comprising:
first and second cache storage locations; a coordinating cacheunit adapted to receive a cacheable entry and to respond to a request for the cacheable entry by transmitting that cacheable entry if it is present in the first cache, or by first executing the cacheable entry and placing it in the first cache if it is not already present in the first cache; and a requesting cacheunit adapted to retrieve the cacheable entry if it is present in the second cache, or to request the cacheable entry from the coordinating cacheunit if it is not present in the second cache.
- 2. The software system as recited in claim 1, wherein a cacheable entry comprises a command or a server page.
- 3. The software system as recited in claim 1, wherein the requesting cacheunit retrieves the cacheable entry, or requests it from the coordinating cacheunit, in response to a request from a client.
- 4. The software system as recited in claim 2, wherein if the cacheable entry is a server page that is not present in the first or second cache, the coordinating cacheunit allows the requesting cacheunit to execute the server page and place it in the second cache before placing it in the first cache.
- 5. The software system as recited in claim 1, wherein the coordinating cacheunit is adapted to pull the cacheable entry from the first cache to the second cache upon being requested by the requesting cacheunit.
- 6. The software system as recited in claim 1, wherein the coordinating cacheunit is adapted to push the cacheable entry from the first cache to the second cache upon the cacheable entry being executed by the coordinating cacheunit, without being requested by the requesting cacheunit.
- 7. The software system as recited in claim 2, wherein a server page comprises a Java Server Page (JSP).
- 8. The software system as recited in claim 1, wherein the coordinating cacheunit and requesting cacheunit comprise Java Virtual Machines (JVMs).
- 9. The software system as recited in claim 8, wherein the JVMs are implemented in a group of web servers, operably coupled over a network.
- 10. The software system as recited in claim 9, wherein a mechanism may be used to broadcast cached entries to at least one cacheunit within each of the group of web servers.
- 11. The software system as recited in claim 1, wherein the cacheable entry has a cache ID that associates the entry with a unique cacheunit.
- 12. A method for coordinating execution of a cacheable entry in a first cacheunit having a first cache, comprising:
associating a coordinating cacheunit, having a second cache, with the cacheable entry; searching for the cacheable entry in the first cache; if the cacheable entry is not found in the first cache, requesting the cacheable entry from the coordinating cacheunit and searching for the cacheable entry in the second cache; if the cacheable entry is found in the second cache, transmitting the cacheable entry to the first cacheunit; and if the cacheable entry is not found in the second cache, executing the cacheable entry in the coordinating cacheunit, placing it in the second cache, and transmitting it to the first cacheunit.
- 13. The method as recited in claim 12, wherein a cacheable entry comprises a command or a server page.
- 14. The method as recited in claim 13, wherein a server page comprises a Java Server Page (JSP).
- 15. The method as recited in claim 12, wherein searching for the cacheable entry and requesting the cacheable entry from the coordinating cacheunit, are done in response to a request from a client.
- 16. The method as recited in claim 12, wherein the coordinating cacheunit and first cacheunit comprise Java Virtual Machines (JVMs).
- 17. The method as recited in claim 16, further comprising implementing the JVMs as a group of web servers, operably coupled over a network.
- 18. The method as recited in claim 14, further comprising, if the cacheable entry is a JSP that is not present in the first or second cache, allowing the first cacheunit to execute the cacheable entry, place the cacheable entry in the first cache, and then convey the cacheable entry to the second cache.
- 19. The method as recited in claim 12, further comprising the coordinating cacheunit pulling the cacheable entry from the first cache to the second cache upon being requested by the first cacheunit.
- 20. The method as recited in claim 12, further comprising the coordinating cacheunit pushing the cacheable entry from the first cache to the second cache upon the cacheable entry being executed by the coordinating cacheunit, without being requested by the first cacheunit.
- 21. The method as recited in claim 17, further comprising using a mechanism to broadcast cached entries to at least one cacheunit within each of the group of web servers.
- 22. The method as recited in claim 12, further comprising assigning each cacheable entry a cache ID, that denotes a unique cacheunit.
- 23. A computer product, comprising a web server and a software system, wherein the web server includes a processor, memory, mass storage and a network interface, and the software system is adapted to coordinate execution of a cacheable entry in acacheunit.
- 24. A computer program product in a computer readable medium for use in coordinating execution of a cacheable entry in a first cacheunit having a first cache, the computer program product comprising:
instructions for requesting the cacheable entry from a coordinating cacheunit and searching for the cacheable entry in a second cache associated with the coordinating cacheunit if the cacheable entry is not found in the first cache; and instructions for executing the cacheable entry in the coordinating cacheunit, placing the cacheable entry in the second cache, and transmitting the cacheable entry to the first cacheunit if the cacheable entry is not found in the second cache.
- 25. The computer program product as recited in claim 24, further comprising instructions for transmitting the cacheable entry to the first cacheunit if the cacheable entry is found in the second cache.
RELATED APPLICATIONS
[0001] This application is related to the following copending U.S. Patent Applications, filed on even date herewith: “Command Caching”, “JSP Composition in a Cache for Web Applications with Dynamic Content”, “Cofetching in a Command Cache”, “Integrated JSP and Command Cache for Web Applications with Dynamic Content”, “Automatic Invalidation Dependency Capture in a Web Cache with Dynamic Content”, “Detecting and Handling Affinity Breaks in Web Applications”, and “Batching of Invalidations and New Values in a Web Cache with Dynamic Content”, all by George P. Copeland, Michael H. Conner and Greg Flurry.