System and method for using a classloader hierarchy to load software applications
First Claim
Patent Images
1. A system for loading software applications, comprising:
- a server, executing a Java virtual machine that includes a system classloader, for storing and running a plurality of software applications, wherein each of said plurality of software applications includes a plurality of deployable modules and classes associated therewith, and wherein the software applications or modules therein can be customized by a software developer and then deployed to run on the same server;
a control file, that can be edited by the software developer and associated with said plurality of software applications or modules, wherein said control file specifies a hierarchy of application classloaders as children of the system classloader, to be used with the modules in said plurality of software applications, and wherein the hierarchy includes a plurality of nested branches and siblings, including providing each of said plurality of software applications or modules with its own application classloader hierarchy so that the software applications or modules are not aware of classloaders or classes that are assigned to another software application, and wherein the hierarchy is specified by the software developer to provide namespace separation between two or more of the plurality of software applications or between different modules in any one of the software applications and wherein the system classloader includes only application level library classes, and wherein the nested branches of the hierarchy includes classes or modules that are frequently called by modules in said plurality of software applications as siblings within the same branch or same classloader; and
a deployment utility that, upon receiving a request to deploy and run a software application on the server,parses the control file and determines which classloaders are specified therein for the software application being deployed,loads with said software application into the Java virtual machine at the server a selection of said application classloaders corresponding to the hierarchy specified by said control file, including creating sibling classloaders for implementations whose classes are to be loaded separately as specified by the control file, and, if a particular software application or a module in a software application is being redeployed then loading only the application classloaders that are specified in the branches for that particular software application or module, without loading any of the other branches in the hierarchy, andenables the server to host multiple isolated software applications or modules within the Java virtual machine, as defined by the hierarchy;
wherein, upon receiving a call to instantiate an implementation, the system searches within the hierarchy including first searching the calling classloader, and then successively searching parent classloaders above the calling classloader, to locate and instantiate necessary classes or objects.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for allowing individual software modules to be reloaded in memory without forcing other modules to be reloaded at the same time. Such reloadable modules address the problem of not being able to reload a module without reloading all classes in the application. In accordance with one embodiment the root classloader and webapp classloader are reorganized, and the individual modules placed in their own classloader. This allows the developer to define their classloader organization according to their needs. The system can then reload modules or classes without affecting the rest of the application.
29 Citations
22 Claims
-
1. A system for loading software applications, comprising:
-
a server, executing a Java virtual machine that includes a system classloader, for storing and running a plurality of software applications, wherein each of said plurality of software applications includes a plurality of deployable modules and classes associated therewith, and wherein the software applications or modules therein can be customized by a software developer and then deployed to run on the same server; a control file, that can be edited by the software developer and associated with said plurality of software applications or modules, wherein said control file specifies a hierarchy of application classloaders as children of the system classloader, to be used with the modules in said plurality of software applications, and wherein the hierarchy includes a plurality of nested branches and siblings, including providing each of said plurality of software applications or modules with its own application classloader hierarchy so that the software applications or modules are not aware of classloaders or classes that are assigned to another software application, and wherein the hierarchy is specified by the software developer to provide namespace separation between two or more of the plurality of software applications or between different modules in any one of the software applications and wherein the system classloader includes only application level library classes, and wherein the nested branches of the hierarchy includes classes or modules that are frequently called by modules in said plurality of software applications as siblings within the same branch or same classloader; and a deployment utility that, upon receiving a request to deploy and run a software application on the server, parses the control file and determines which classloaders are specified therein for the software application being deployed, loads with said software application into the Java virtual machine at the server a selection of said application classloaders corresponding to the hierarchy specified by said control file, including creating sibling classloaders for implementations whose classes are to be loaded separately as specified by the control file, and, if a particular software application or a module in a software application is being redeployed then loading only the application classloaders that are specified in the branches for that particular software application or module, without loading any of the other branches in the hierarchy, and enables the server to host multiple isolated software applications or modules within the Java virtual machine, as defined by the hierarchy; wherein, upon receiving a call to instantiate an implementation, the system searches within the hierarchy including first searching the calling classloader, and then successively searching parent classloaders above the calling classloader, to locate and instantiate necessary classes or objects. - View Dependent Claims (2, 3, 4, 5, 6, 7, 15, 16, 19)
-
-
8. A method for loading software applications on a server executing a Java virtual machine that includes a system classloader, comprising the steps of:
-
providing a server executing a Java virtual machine for storing and running a plurality of software applications; providing a plurality of software applications, wherein each of said plurality of software applications includes a plurality of deployable modules and classes associated therewith, and wherein the software applications or modules therein can be customized by a software developer and then deployed to run on the same server; providing a control file associated with said software application or modules, wherein said control file can be edited by a software developer and specifies a hierarchy of application classloaders as children of the system classloader, to be used with the modules in said software application, and wherein the hierarchy includes a plurality of nested branches and siblings, including providing each of said plurality of software applications or modules with its own application classloader hierarchy so that the software applications or modules are not aware of classloaders or classes that are assigned to another software application, and wherein the hierarchy is specified by the software developer to provide namespace separation between two or more of the plurality of software applications or between different modules in any one of the software applications, and wherein said application classloaders are children of system classloader and wherein the system classloader includes only application level library classes, and wherein the nested branches of the hierarchy includes classes or modules that are frequently called by modules in said plurality of software applications as siblings within the same branch or same classloader; and upon receiving a request to deploy and run a software application on the server, parsing the control file and determining which classloaders are specified therein for the software application being deployed, retrieving a selection of said application classloaders according to the hierarchy specified by said control file, and loading said modules and classes into the Java virtual machine at the server as part of said software application corresponding to said hierarchy, including creating sibling classloaders for implementations whose classes are to be loaded separately as specified by the control file, and, if a particular software application or a module in a software application is being redeployed then loading only the application classloaders that are specified in the branches for that particular software application or module, without loading any of the other branches in the hierarchy, to enable the server to host multiple isolated software applications or modules within the Java virtual machine, as defined by the hierarchy; wherein, upon receiving a call to instantiate an implementation, the system searches within the hierarchy including first searching the calling classloader, and then successively searching parent classloaders above the calling classloader, to locate and instantiate necessary classes or objects. - View Dependent Claims (9, 10, 11, 12, 13, 14, 17, 18, 20)
-
-
21. A computer readable storage medium, including instructions stored thereon which when read and executed by a computer cause the computer to perform the steps comprising:
-
providing a server executing a Java virtual machine for storing and running a plurality of software applications; providing a plurality of software applications, wherein each of said plurality of software applications includes a plurality of deployable modules and classes associated therewith, and wherein the software applications or modules therein can be customized by a software developer and then deployed to run on the same server; providing a control file associated with said software application or modules, wherein said control file can be edited by a software developer and specifies a hierarchy of application classloaders as children of the system classloader, to be used with the modules in said software application, and wherein the hierarchy includes a plurality of nested branches and siblings, including providing each of said plurality of software applications or modules with its own application classloader hierarchy so that the software applications or modules are not aware of classloaders or classes that are assigned to another software application, and wherein the hierarchy is specified by the software developer to provide namespace separation between two or more of the plurality of software applications or between different modules in any one of the software applications, and wherein said application classloaders are children of system classloader and wherein the system classloader includes only application level library classes, and wherein the nested branches of the hierarchy includes classes or modules that are frequently called by modules in said plurality of software applications as siblings within the same branch or same classloader; and upon receiving a request to deploy and run a software application on the server, parsing the control file and determining which classloaders are specified therein for the software application being deployed, retrieving a selection of said application classloaders according to the hierarchy specified by said control file, and loading said modules and classes into the Java virtual machine at the server as part of said software application corresponding to said hierarchy, including creating sibling classloaders for implementations whose classes are to be loaded separately as specified by the control file, and, if a particular software application or a module in a software application is being redeployed then loading only the application classloaders that are specified in the branches for that particular software application or module, without loading any of the other branches in the hierarchy, to enable the server to host multiple isolated software applications or modules within the Java virtual machine, as defined by the hierarchy; wherein, upon receiving a call to instantiate an implementation, the system searches within the hierarchy including first searching the calling classloader, and then successively searching parent classloaders above the calling classloader, to locate and instantiate necessary classes or objects. - View Dependent Claims (22)
-
Specification