Abstract:
An application server administration framework (ASAF) minimizes the number of manual steps during the installation or modification processes by allowing a user to accomplish the installation or modification by entering values in a property file. A deployment script is invoked that identifies changes in the property files, and invokes appropriate procedures from a procedure script. The procedure script links the property file to one or more component scripts so that the values entered by the administrator are populated to the appropriate component scripts. When the values have been populated to the appropriate component scripts, the deployment script invokes the scripting engine which runs the scripts to make the necessary changes to the configuration files for the application server.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to data processing in general, and to automated deployment of applications to application servers in particular. 
       BACKGROUND OF THE INVENTION 
       [0002]    Application servers, such as IBM&#39;s WebSphere Application Server®, (WAS) support the deployment and management of Web applications ranging from simple Web sites to powerful e-business solutions. In the case of IBM&#39;s WebSphere Application Server®, the platform is a Java 2 Platform, Enterprise Edition (J2EE®) Web application server, similar to other application servers, such as BEA WebLogic® Server and Oracle Application Server. 
         [0003]    WAS provides the application logic enabling client components to interact with data resources and legacy applications. WAS also collaborates with the Web Server by exchanging client requests and application responses. An administrator can define multiple Application Servers where each would be running in its own Java Virtual Machine (JVM). 
         [0004]    Within application servers such as WAS, the application server configuration provides information for starting and managing a server process to handle requests for enterprise applications and their components. WAS uses an administrative console to guide a user through deployment and system administration tasks. Actions taken by the user in the console modify a set of XML configuration files. Administrators can use the console to perform such tasks as adding, deleting, and stopping application servers, deploying new applications to a server, starting and stopping existing applications, and modifying certain configurations. In addition, administrators can use the console to manage variable, shared libraries, database connections, and other configurations that can span multiple application servers, configure product security, and collect data for performance and troubleshooting purposes. 
         [0005]    Existing tools offer ways to administer and manage application server tasks without the need for the graphical user interface of the administrative console. Java Command Language (Jacl) is designed to be a universal scripting language for Java. A Jacl interpreter is written completely in Java and can run on any Java Virtual Machine (JVM). Jacl can be used to create Web content or to control Java applications. WAS contains a utility, wsadmin, that implements and extends the base Jacl interpreter allowing an administrator to make additions, changes, or modifications to the server configuration. 
         [0006]    In the on-demand service environment, many of the application server administration operations (making additions, changes or modifications to the server configuration) require manual, time consuming steps. Moreover, operations require a dedicated administrator with a specific skill set to perform the tasks when that administrator&#39;s skills could be applied to additional responsibilities. For example, to execute a task such as “installing an application,” an administrator must be trained in the existing tool so that he or she understand the controls, becomes familiar with navigation and can follow a series of steps to achieve deploying an Enterprise Archive (EAR) file and start the application. Any small mistake in the detailed process (such as a missed check box or incorrect database version from the installation panel) can cause the installation to fail. In order to enable an application to connect to a database, the administrator would be required to launch the administrative console, login, click the security link in the navigation, and work with such properties as credentials, descriptions, variable entries pointing to the resource provider classes, resource links in the navigation, datasources, database names, connection pool information, and others. 
         [0007]    Therefore, a need exists for a tool to automate complex, manual administrative steps in an application server and thereby minimize the time and training required to execute tasks. 
       SUMMARY OF THE INVENTION 
       [0008]    The invention that meets the need identified above is an application server administration framework (ASAF) that minimizes the number of manual steps during the installation or modification processes by allowing a user to accomplish the installation or modification by entering values in a property file. 
         [0009]    The set up program allows a user to enter data directly into the property files based upon the administrative tasks required. Alternatively, a graphical user interface may be provided so that the user can be prompted to enter data, rather than entering the data directly into the property file. 
         [0010]    The deployment script is invoked by an event trigger. An event trigger may be invoked by a manual user selection, a scheduled event, a graphical user interface, or by an external automation process such as Tivoli Intelligent Orchestrator. When invoked, the deployment script identifies changes in the property files, and invokes appropriate procedures from a procedure script. In addition, the deployment script invokes an error program that performs environmental setting checks, monitors the process, and conducts a final error check. The environmental setting checks involve determining whether the appropriate permissions have been granted, the appropriate paths properly defined, EAR files properly deployed, and other required configurations set. The procedure script links the property file to one or more component scripts so that the values entered by the administrator are populated to the appropriate component scripts. When the values have been populated to the appropriate component scripts, the deployment script invokes the scripting engine which runs the scripts to make the necessary changes to the configuration files for the application server. 
         [0011]    An error detection program performs environmental checks, monitors logs throughout the process, and performs a final check. The error detection program identifies errors and accesses a policy script to automatically fix errors in the implementation process. 
         [0012]    The policy script provides rules to prevent or cure error by controlling the sequence and order of operations, automatically starting or restarting an application or server when necessary, and including other actions that the component script may not know is required. For example, even if a developer or user implements a component script using an improper order of events (as allowed by the application server), the error detection program will discover the error, access the policy script, and either proceed with the correct order or notify the user. 
         [0013]    A simulation program allows operations to be tested on secondary systems to ensure that the change can be successfully executed. 
     
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0014]    The novel features believed characteristic of the ASAF are set forth in the appended claims. The ASAF itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will be understood best by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: 
           [0015]      FIG. 1  depicts an illustration of a system in which the application ration framework may be employed; 
           [0016]      FIG. 2A  depicts an exemplary first memory containing the programs and the invention; 
           [0017]      FIG. 2B  depicts an exemplary second memory containing the programs of a web application server; 
           [0018]      FIG. 3  depicts an illustration of a service oriented architecture; 
           [0019]      FIG. 4  depicts a diagram of a system in which the invention is employed; 
           [0020]      FIG. 5  depicts a flow chart of the set up program; 
           [0021]      FIG. 6  depicts a flow chart of the deployment script; 
           [0022]      FIG. 7  depicts a flow chart of the registration program; 
           [0023]      FIG. 8  depicts a flow chart of the error detection program; and 
           [0024]      FIG. 9  depicts a flow chart of the simulation program. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
       [0025]    The principles of the ASAF are applicable to a variety of computer hardware and software configurations. The term “computer hardware” or “hardware,” as used herein, refers to any machine or apparatus that is capable of accepting, performing logic operations on, storing, or displaying data, and includes without limitation processors and memory; the term “computer software” or “software,” refers to any set of instructions operable to cause computer hardware to perform an operation. A “computer,” as that term is used herein, includes without limitation any useful combination of hardware and software, and a “computer program” or “program” includes without limitation any software operable to cause computer hardware to accept, perform logic operations on, store, or display data. A computer program may, and often is, comprised of a plurality of smaller programming units, including without limitation subroutines, modules, functions, methods, and procedures. As used herein, a computer program is compiled, immutable and executable by itself. As used herein, a “script” is an uncompiled and mutable text file that is invoked by a program, but that is not executable by itself. As used herein, “environment” means the operating system and any related middleware or software upon which a particular web server application depends. Thus, the functions of the ASAF may be distributed among a plurality of computers, computer programs, and scripts. 
         [0026]    Additionally, the ASAF is described below with reference to an exemplary network of hardware devices, as depicted in  FIG. 1 . A “network” comprises any number of hardware devices coupled to and in communication with each other through a communications medium, such as the Internet. A “communications medium” includes without limitation any physical, optical, electromagnetic, or other medium through which hardware or software can transmit data. For descriptive purposes, exemplary network  100  has only a limited number of nodes, including workstation computer  105 , workstation computer  110 , server computer  115 , and persistent storage  120 . Network connection  125  comprises all hardware, software, and communications media necessary to enable communication between network nodes  105 - 120 . Unless otherwise indicated in context below, all network nodes use publicly available protocols or messaging services to communicate with each other through network connection  125 . 
         [0027]    ASAF  210  typically is stored in a memory, represented schematically as memory  200  in  FIG. 2A . The term “memory,” as used herein, includes without limitation any volatile or persistent medium, such as an electrical circuit, magnetic disk, or optical disk, in which a computer can store data or software for any duration. A single memory may encompass and be distributed across a plurality of media. Thus,  FIG. 2  is included merely as a descriptive expedient and does not necessarily reflect any particular physical embodiment of memory  200 . As depicted in  FIG. 2 , though, memory  200  includes templates  295 , property files  250 , deployment script  220 , procedure script  230 , component scripts  240 , error detection program  260 , set up program  280 , and policy script  270 . Optionally, memory  200  contains simulation program  290 .  FIG. 2B  depicts second memory  400  containing application server program  410 , scripting engine  414 , interface program  420  and configuration files  412  for the application server (such as server  115  in  FIG. 1 ). A “scripting engine” resides within the application server and executes scripts when invoked. A “policy script” is a script that checks other scripts for syntax and for adherence to applicable rules. A “deployment script” is a script that invokes and manages the ASAF process. A “procedure script” includes procedures that combine complex tasks. A “component script” instructs ASAF which procedures will be carried out when the deployment script runs. A “template” is a sample component script that a developer can modify for a particular component of an application. A “property file” is a text file that contains properties needed by a component script or a procedure script. 
         [0028]    An on-demand operating environment is based upon the concepts of a service oriented architecture (SOA). In an SOA, every application or resource is modeled as a service that implements a specific, identifiable function (or set of functions). In an on-demand environment, the services often implement specific business functions, but also may implement interfaces or other operating functions. 
         [0029]    Services in SOAs communicate with each other by exchanging structured information, typically through messages or documents. The services&#39; capabilities are defined by interfaces declaring messages they can produce or consume, policy annotations declaring a quality of service required or provided, and choreography annotations declaring behavioral constraints that must be respected in service interactions. The actual implementation of any specific service is hidden from the service requester, which allows new and existing applications to be quickly combined into new contexts. 
         [0030]      FIG. 3  provides an overview of SOA  300 . At the system level, components of the environment are system objects such as servers, storage, and data. At the application level, components are dynamically integrated application modules that constitute sophisticated, yet much more flexible applications. At the business level, the components are business objects, defined for particular vertical industries or more generally, as they apply horizontally across industries. 
         [0031]    Typically, a specific on-demand business service relies on many other services in its implementation. All interactions between services flow through an Enterprise Service Bus (ESB) such as ESB  302 . ESB  302  facilitates mediated interactions between service end points. ESB  302  supports event-based interactions, as well as message exchange for service request handling. For both events and messages, mediations can facilitate interactions by, for example, locating services that provide requested capabilities, or by handling interface mismatches between requesters and providers that are compatible in terms of their capabilities. ASAF  210  is suitable for inclusion with Infrastructure Services  310  and Configure Services  332 . 
         [0032]      FIG. 4  depicts web application administration system  400  showing the relationship of ASAF  210  to web application server  410 . Web application server  410  is connected to configuration files  412 . Interface  420  is connected to configuration files  412  and deployment script  220 . ASAF  210  has error detection element  430 , set up element  440 , and automation engine  450 . Error detection element  430  has error detection program  260  and policy script  270 . Set up element  440  has property files  250  and templates  295 . Automation engine  450  has deployment program  220 , procedures script  230 , and component scripts  240 . 
         [0033]      FIG. 5  depicts a flowchart of set up program  280 . Set up program  280  begins ( 502 ) when a user desires to access property files  250  (see  FIG. 2  and  FIG. 4 ). A determination is made whether manual entry or a graphical user interface will be used ( 510 ). The user enters the values for the operation required ( 540 ). If another entry is to be made, set up program  280  goes to step  550 , and if not, stops ( 560 ). Persons skilled in the art will realize that, for the property files and for the graphical user interface, the structure, presentation, optional contextual help information, and available tasks can be determined by various levels of developers and users. 
         [0034]      FIG. 6  depicts a flow chart for deployment script  220 . Deployment script  220  starts upon a manual initiation or a scheduled initiation ( 602 ), and determines whether a change has been detected in one of the property files ( 610 ). If no change is detected, deployment program  220  goes to step  634 . If a change has been detected, deployment script  220  invokes error detection program  260  ( 612 ), and then accesses a procedure from procedure script  230  ( 614 ). The particular procedures accessed will be determined by the nature of the change detected and the procedures called for in the property file. The procedure accessed will link the property file where the change was detected to a component script ( 616 ). Deployment script  220  populates the changed value from the property file to the component script ( 618 ), invokes scripting engine  414  ( 620 ), executes scripting engine  414  ( 630 ), and updates configuration files  412  for application server  410  (see  FIG. 4 ) ( 632 ). A determination is made whether another change has been detected ( 634 ). If so, deployment script  280  goes to step  612 , and if not, stops ( 640 ). 
         [0035]      FIG. 7  depicts a flow chart of registration program  700 . Registration program  700  begins when an application server contacts the server containing ASAF  210 . The application server registers ( 710 ) and selects whether or not to use ASAF  210  ( 720 ). If selected, deployment script  220  is invoked ( 730 ). A determination is made whether another application selection is to be made ( 740 ). If not, service interface ends ( 750 ). ASAF  210  may be registered for use with Infrastructure Services  310  and Configure Services  332  (see  FIG. 3 ). 
         [0036]      FIG. 8  depicts a flow chart of error detection program  260 . Error detection program  260  begins ( 802 ), determines the necessary pre-requisites ( 810 ), and then determines whether the necessary pre-requisites are present ( 820 ). If not, error detection program accesses policy script ( 822 ), and error detection program  260  determines whether the error has been corrected ( 824 ). If not, an error message is displayed ( 826 ). If the error is corrected, or if the pre-requisites were present, error detection program  260  monitors the log file ( 830 ). Error detection program  260  determines whether a key word is present in the log file ( 840 ). If so, a determination is made whether the key word indicates an error ( 842 ). If an error is found, error detection program  260  accesses the policy script ( 844 ), and determines whether the error has been corrected ( 846 ). If not, an error message is displayed ( 848 ). If at step  842  no error was found, or if at step  846  the error was corrected, then a determination is made whether there is another key word ( 850 ). If so, error detection program goes to step  842 , and if not, goes to step  852 . If at step  840 , no keywords were found, or if at step  850  there are no more keywords, then a determination is made whether to continue ( 852 ). If so, error detection program  260  goes to step  830 , and if not, stops ( 860 ). 
         [0037]      FIG. 9  depicts a flow chart of simulation program  290 . Simulation program  290  starts ( 902 ) and determines whether a secondary system is available ( 910 ). If not, a message is displayed ( 912 ), and simulation program  290  goes to step  924 . If a secondary system is available, then deployment script  220  (see  FIG. 6 ) is run on the secondary system ( 914 ), and the results are examined ( 916 ). A determination is made whether the deployment script ran successfully ( 918 ). If not, an error message is displayed ( 920 ), and if so, the deployment script is run on the primary system ( 922 ). Simulation program  290  determines whether there is another deployment to simulate ( 924 ), and, if so, returns to step  910 , or if not, stops ( 930 ). 
         [0038]    A preferred form of the invention has been shown in the drawings and described above, but variations in the preferred form will be apparent to those skilled in the art. The preceding description is for illustration purposes only, and the invention should not be construed as limited to the specific form shown and described. The scope of the invention should be limited only by the language of the following claims.