Abstract:
A method for accessing an internal dynamic cache of a Websphere-type Application Server (WAS) from an external component that includes the step of establishing a software interface component within the WAS. The software interface component can receive a request from the external component. The request can include an identifier for a cache object and at least one dictate concerning the cache object. The external cache component can lack privileges to directly execute programmatic actions upon the cache object. The software interface component can trigger a programmatic action in accordance with the dictate. The programmatic action can involve the cache object, wherein the programmatic action utilizes the internal dynamic cache and involves the cache object. The programmatic action can be an action performed local to the WAS.

Description:
BACKGROUND  
       [0001]     1. Field of the Invention  
         [0002]     The present invention relates to the field of dynamic caching and, more particularly, to exposing internal dynamic caching services of a Web-based application server to remote components.  
         [0003]     2. Description of the Related Art  
         [0004]     Caching is a technique of temporarily storing frequently accessed data in random access memory (RAM) or in a special area of a hard disk drive, to reduce the time required to read and write data. Server-side caching techniques are often used to improve performance of Web applications. Conventional solutions for caching static content have resulted in excellent performance gains for many Web applications. Unfortunately, these caching solutions are of little to no value in enhancing the performance of Web applications with dynamically generated content. For dynamic content caching to be effective, dynamic content or data, which is by definition subject to change, must be stable over a long enough time for meaningful reuse to occur. If access is frequent, even a short period of stability can provide a significant enough performance increase to warrant data caching.  
         [0005]     International Business Machine (IBM), Corporation of Armonk, N.Y. has developed and refined technologies that enable the caching of dynamic content. The technology has been included in a dynamic content caching solution for Java 2 Enterprise Edition (J2EE) applications running on WebSphere-type Application Server™ (WAS) version 5.0 and higher, where the built in dynamic caching server can be referred to as a dynacache, where a WebSphere-type Application server can include a WebSphere application server in any version or configuration as well as servers derived from or based upon the WebSphere architecture. The dynacache operates within a WAS Java Virtual Machine (JVM) to provide generalized Java object caching for use by various internal components. The dynacache can cache objects directly in WAS memory spaces with the ability to “overflow” objects to disk to avoid over-utilizing RAM. The dynacache memory can be distributed across multiple servers and managed as a single logical memory space. The dynacache can be optionally replicated across a cluster to avoid expensive regeneration on each server when multiple servers are used. As a service, the dynacache can be configured, tuned, and monitored through system management interfaces of the WAS.  
         [0006]     In a simplified form, the dynacache can be conceptualized as a robust Hashtable capable of storing and retrieving Java objects from memory. The dynacache can manage entries by controlling growth using replacement and/or eviction algorithms. Entries within the cache can be managed by a policy based on the class of entry, such as servlet, Java Server Page (JSP), Enterprise Java Bean (EJB), command, and the like. The policy can be expressed in an electronic document, such as an Extensible Markup Language (XML) file (cachespec.xml).  
         [0007]     The dynacache uses a facility called the Data Replication Service (DRS), which is a Java Messaging Service (JMS) based facility, to replicate cached data and propagate invalidate events within a WebSphere cluster. Invalidate events are events that remove an object from a cache and/or mark an object within the cache for removal. Additionally, to support caching performed outside of the J2EE application space, the dynacache can cooperate with a plurality of caches within the WAS through one or more cache adapters to actively trigger invalidations of cached Web content to registered adapters. Registered adaptors include the WebSphere HTTP (Hypertext Transfer Protocol) Plugin, IBM HTTP Server, the Fast Response Cache Accelerator (FRCA) cache, and the WebSphere Edge Server. Accordingly, some level of data sharing and synchronization can be performed between the dynacache and other caches and/or application servers.  
         [0008]     There is currently no way, however, for components that do not run inside the WAS to directly access objects within the dynacache and data embedded within these objects. Objects within the dynacache are typically Java objects that include internal data and private methods for accessing the internal data.  
         [0009]     By way of example, the dynacache can contain compiled speech grammars and a Java Grammar Compiler running inside an EJB can place grammars in the dynacache. An external software component can receive compiled grammar files from the WAS, where the files are generated from information within the dynacache. Even so, the external software component cannot directly access objects within the dynacache to obtain and/or manipulate the speech grammar information contained within the dynacache. This is true regardless of whether the external software component is a J2EE component external to the WAS or a component written in a non-Java language, such as a component written in the “C” programming language.  
       SUMMARY OF THE INVENTION  
       [0010]     The present invention creates an interface to a dynamic cache that is internal to an application server. The interface can expose dynamic cache services to components external to the application server. For example, in one embodiment, the solution provided herein describes an interface to the dynacache of a WebSphere-type Application Server (WAS) that can be used by components outside the WAS.  
         [0011]     More specifically, the solution can create an externally accessible interface to expose the dynacache&#39;s DistributedMap Application Program Interface (API), which is normally a local interface. In a particular embodiment, a Java HTTP servlet can expose the DistributedMap API to permit components written in any programming language to access the dynacache via an HTTP interface. In another embodiment, a stateless session EJB can extend and expose the dynacache API providing dynacache access to Java 2 Enterprise Edition (J2EE) components that are external to the WAS.  
         [0012]     One aspect of the present invention can include a method for accessing an internal dynamic cache of a WAS from an external component. The method can include the step of establishing a software interface component within the WAS. The software interface component can receive a request from the external component. The request can include an identifier for a cache object and at least one dictate concerning the cache object. The external cache component can lack privileges to directly execute programmatic actions upon the cache object. The software interface component can trigger a programmatic action in accordance with the dictate. The programmatic action can involve the cache object, wherein the programmatic action utilizes the internal dynamic cache and involves the cache object. The programmatic action can be an action performed local to the WAS.  
         [0013]     Another aspect of the present invention can include a dynamic caching system that includes a Web-based application server, a remote component, and a software interface object. The Web-based application server can include a dynamic cache into which software objects are placed. The dynamic cache can be a single logical memory space that includes a multitude of physical memory spaces distributed across multiple computing devices. For example, the Web-based application server can be a WAS and the dynamic cache can be a dynacache. The remote component can be a software component external to the Web-based application server that lacks privileges to directly perform actions upon objects within the dynamic cache. The software interface object can be internal to the Web-based application server. The software interface object can receive a request from the remote component and can responsively trigger a programmatic action against an identified software object in the dynamic cache in accordance with the request.  
         [0014]     Moreover, this invention can be implemented as a program for controlling a computer to implement the functions described above, or a program for enabling a computer to perform the process corresponding to each step of the method presented above. This program may be provided by storing the program in a magnetic disk, an optical disk, a semiconductor memory, any other recording medium, or distributed via a network.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0015]     There are shown in the drawings, embodiments that are presently preferred; it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown.  
         [0016]      FIG. 1  is a schematic diagram illustrating a system that includes a software interface object exposing a dynamic cache of a Web-based application server in accordance with the inventive arrangements disclosed herein.  
         [0017]      FIG. 2  is a flow chart illustrating a method for accessing a dynamic cache internal to a Web-based application sever from an external component in accordance with the inventive arrangements disclosed herein.  
         [0018]      FIG. 3  is expository pseudo-code for a software interface object in accordance with the inventive arrangements disclosed herein. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0019]     The subject matter presented herein discloses a software interface object that can permit software components external to a Web-based application server to access a dynamic cache of the Web-based application server even though access to the dynamic cache is typically limited to internal components. In one embodiment, the Web-based application server can be a Websphere-type Application Server (WAS) and the dynamic cache can be a dynacache of the WAS.  
         [0020]      FIG. 1  is a schematic diagram illustrating a system  100  that illustrates the placement of a software interface object relative to a Web-based application server and a remotely located software component in accordance with the inventive arrangements disclosed herein. The system  100  can include an application server  150  communicatively linked to a remote server  140  through an external component  110  that is linked to software interface object G and/or software interface object H. Software interface objects G and H can expose at least one dynamic cache service to the external component  110 . It should be appreciated that the dynamic cache can be distributed across multiple locations within the application server  150 . Accordingly, the dynamic cache can include local cache  176 , local cache  186 , as well as other localized caches disposed throughout the application sever  150 . Particular ones of these local caches can be associated with software interface objects to expose either the local cache objects and/or the dynamic cache to the external component  110 . For example, cache  176  can be associated with software interface object G and cache  186  can be associated with software interface object H.  
         [0021]     It should be noted that the software interface objects G and/or H can be disposed within virtual machines included in the application server  150 , such as dialogue server  170  and/or speech server  180 . The invention is not limited in this regard, however, and the software interface objects G and H can be placed anywhere within the application server  150  that permits access to the internal dynamic cache of the application server  150 .  
         [0022]     The application server  150  can function as a transaction engine that operates as a reliable foundation for handling high volume secure transactions and Web services. In one embodiment, the application server  150  can be a Websphere Application Server (WAS).  
         [0023]     In one arrangement, the application server  150  can include a multitude of component servers, such as telephone server  160 , dialogue server  170 , and speech server  180 , communicatively linked via a multitude of Web servers  152 . Each Web server  152  can include one or more plug-ins  154 , where each plug-in  154  can include routines for conveying data to particular component servers within the application server  150 . In a particular arrangement, component servers of the application server  150  can also be distributed across a network. In such an arrangement, data can be conveyed to each of the component servers via the Web servers  152 . The Web servers  152  can utilize Hypertext Protocol Format (HTTP) for compatibility with IP sprayers and firewalls.  
         [0024]     The telephone server  160 , the dialogue server  170 , and the speech server  180  can be implemented as virtual machines, such as virtual machines complying with the J2EE specification. The telephone server  160  can control the setup, monitoring, and tear down of phone calls. In one arrangement, telephone server  160  can include a web container  160  and an EJB container  164 . Moreover, the telephone server  160  can include a call control servlet (servlet A), a call control EJB (Bean B), and a call control interpreter EJB (Bean C).  
         [0025]     The dialogue server  170  can manage tasks relating to call dialogue for the application server  150 . In one arrangement, the dialogue server  170  can include web container  172  and EJB container  174 . Moreover, the dialogue server  170  can include a voice markup interpreter EJB (Bean D).  
         [0026]     The speech server  180  can handle one or more speech services for the application server  150 . In one arrangement, the speech server  180  can include web container  182  and EJB container  184 . Moreover, the speech server  180  can include automatic speech recognition (ASR) EJB (Bean E) as well as a text-to-speech EJB (Bean F). It should be appreciated that the application server  150  can be arranged in a multitude of fashions and that the invention is not to be limited to the illustrative arrangement presented herein.  
         [0027]      FIG. 2  is a flow chart illustrating a method  200  for accessing a dynamic cache internal to a Web-based application server from an external component in accordance with the inventive arrangements disclosed herein. The Web-based application server can be a WAS and the dynamic cache can be a dynacache of the WAS. The method can begin in step  205 , where a software interface component can be established within a WAS. In step  210 , a request from a component external to the WAS can be received by the software interface component. For example, the request can be conveyed via HTTP through a Web-based communication link between the server upon which the external component is located and the WAS server in which the software interface component is disposed. In step  215 , the software interface component can identify an object within the dynacache and a dictate from information contained within the request.  
         [0028]     In step  220 , the software interface object can locally trigger a programmatic action in accordance with the dictate. Programmatic actions include actions that get or retrieve data from a cache object, put data into a cache object, and/or remove cache objects from the dynacache. Data inserted into the cache objects can be specified by parameters contained within the request. Further, options can be associated with the programmatic actions that can be detailed within the request. For example, an invalidation action, that removes a cache object from the data cache, can specify whether removal is to occur immediately or responsive to a the occurrence of a defined event.  
         [0029]     In one embodiment, the software interface object can access a method of an application program interface (API) associated with the dynacache, such as a Distributed Map API. In such an embodiment, the API method can perform the programmatic action responsive to a trigger from the software interface component.  
         [0030]     In step  225 , a result can be received responsive to the triggered action. Not all programmatic actions need return results. In step  230 , the results can be incorporated into a response parameter and conveyed to the external component.  
         [0031]     The present invention can be realized in hardware, software, or a combination of hardware and software. The present invention can be realized in a centralized fashion in one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software can be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.  
         [0032]      FIG. 3  is expository pseudo-code for a software interface object in accordance with the inventive arrangements disclosed herein. The software interface object can accept dictates for performing actions involving the dynamic cache from an external component. Objects within the dynamic cache upon which actions can be performed can include Java 2 Enterprise Edition (J2EE) components. Actions performed against these J2EE components can include get data actions, put data actions, and invalidate object actions, where an invalidate object action can remove an identified J2EE component from the dynamic cache. The software interface object, being internal to the application server, is able to expose internal capabilities of the dynamic cache to the external component. In one embodiment, the software interface object can utilize an application program interface (API) of the dynamic cache. For example, when the application server is the WAS, the API can be the DistributedMap API.  
         [0033]     In one embodiment, the software interface object can be implemented as a public stateless session Enterprise Java Bean (EJB) executing within a virtual machine of the application server. It should be noted that such an implementation can expose dynamic cache services to external Java components.  
         [0034]     A more generic implementation of the software interface object can place a servlet within the Web-based application server. The servlet can accept requests from external components and can return responsive parameters using a Hypertext Transfer Protocol (HTTP). An HTTP servlet implementation can expose dynamic cache services to external components written in any programming language.  
         [0035]     It should be appreciated that the presented coding example in  FIG. 3  provides just one illustrative method of implementing a software interface object and that the invention is not to be limited in this regard. For example, an otherwise private Java class with access to dynamic cache objects can be extended by a public class, where instantiations of this public class can be a software interface object as defined herein.  
         [0036]     The present invention also can be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.  
         [0037]     This invention can be embodied in other forms without departing from the spirit or essential attributes thereof. Accordingly, reference should be made to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.