1 SYSTEM AND METHOD FOR CREATING AND DEPLOYING APPLICATIONS WITH NEW CONTAINER TYPES
This application is a continuation of U.S. patent application Ser. No. 10/961,304 entitled “System and Method for Custom Module Creation and Deployment” by Rob Woolen, filed Oct. 8, 2004, which claims the benefit of U.S. Provisional Patent Application No. 60/570,953 filed May 13, 2004, which applications are incorporated herein by reference.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to systems, methods, and machine readable media for creating and deploying applications in the Java operating system. More specifically, it relates to creating and deploying applications with new container types.
BACKGROUND OF THE INVENTION
Since its inception in 1995, the Java programming language has become increasingly popular. Java, which is an interpreted language, enabled the creation of applications which could be run on a wide variety of platforms. This ability to function across a variety of different client platforms and J ava’s relatively easy implementation of network applications has resulted in its use in endeavors as basic as personal web pages to endeavors as complex as large business-tobusiness enterprise systems.
As Java has become more commonplace, a wide variety of tools and development platforms have been created to assist developers in the creation and implementation of Java applications. These platforms allow users to work with previously generated modules, thus reducing overlapped efforts.
While the conveniences provided by these platforms have enhanced and improved the development process, they have added additional rigidity as well. Developers are often limited to modules or module types having code that was shipped with the platform. The developers are often unable to use their own container types or customized modules without significant additional effort.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an overview of an application deployment environment in accordance with one embodiment of the present invention.
FIG. 2 illustrates a closer view of a deployment system.
FIG. 3 illustrates a closer view of an application in accordance with one embodiment of the present invention.
FIG. 4 illustrates a closer view of a deployment descriptor of an application in accordance with one embodiment of the present invention.
FIG. 5 illustrates a process for creating an application with custom modules in accordance with one embodiment of the present invention.
FIG. 6 illustrates a process for deploying an application with custom modules in accordance with one embodiment of the present invention.
In accordance with one embodiment of the present invention applications are configured with custom modules. A deployment descriptor of an application includes a definition for a new container type and modules of the new container type. A deployment system reads the deployment descriptor and implements the modules of the new container type. The new containers are then available to assist in the deployment of the application.
FIG. 1 illustrates an overview of an application deployment environment in accordance with one embodiment of the present invention. A server storage 105 stores multiple stored applications 110, 115 previous to deployment. The applications are preferably stored as archives for deployment by a deployment system 130. In one embodiment, the applications are stored in the form of Enterprise ARchive (EAR) files. The stored applications 110, 115 include modules containing the functionality of the applications and deployment descriptors that indicate to the deployment system 130 how the applications 110, 115 should be deployed. The modules can include both conventional modules, having module types that are known to the deployment system 130, as well as custom modules including the functionality for new container types.
The deployment system 130 is responsible for deploying the stored applications 110, 115 from the server storage to generate the deployed applications 140, 145. In one embodiment, the deployment system runs when the server is started and automatically deploys a group of preselected applications. In an alternate embodiment, the deployment system allows a system administrator to manually select which applications are deployed. The deployment system checks the deployment descriptors of each of the stored applications 110, 115 to locate the modules used by the application within that application’ s EAR file and to deploy the application. The deployed applications are then available for use by remote clients or any party interacting with the server. In some embodiments, the deployment system includes an application container 140. The application container 140 serves as an intermediary layer between a deployment subsystem of the deployment system 130 and the containers of an application server on which the applications will be deployed. The application container performs application classloading, Java Naming and Directory Interface (JNDI), file management, and parsing of deployment descriptors.
FIG. 2 illustrates a closer view of a deployment system 130. The deployment system includes containers 235, the application container 150, and the deployment subsystem 250. The deployment subsystem includes functionality for extracting archived modules and loading them into system memory. The containers 235 can be standard containers that are designed to manage components such as Enterprise Java Beans (EJBs) or connectors, or custom containers generated through custom modules. The application container 150 defines the interface through which the containers 235 interface with the deployment subsystem. This interface can be extended through custom modules stored within applications. The application container 150 includes a state machine and performs application classloading and JNDI services.