Patent ID: 7823143

Claim:
A method comprising: receiving at an initiating class loader a request for loading a class for a first software application, the class being associated with the first software application and a second software application, the first and second software applications running on an application server of a computer system; narrowing class loaders associated with the first and second software applications to an array of candidate class loaders capable of loading the class such that when the class is loaded for the first software application by one of the array of candidate class loaders, execution of the second software application, if loaded, remains uninterrupted, the array of candidate class loaders capable of including single-parent class loaders and multi-parent class loaders, the multi-parent class loaders being class loaders that each have multiple direct parents, the single-parent class loaders being class loaders that each have a single direct parent, the narrowing including; identifying an ancestor class loader of the initiating class loader as a parent of a single-parent class loader or a multi-parent class loader; in response to the identifying, ascertaining that the ancestor class loader has not been added to the array; in response to the ascertaining, detecting that the ancestor class loader is capable of loading the class; and in response to the detecting, adding the class loader to the array; selecting a first candidate class loader from the array of candidate class loaders to load the class; determining that the first candidate class loader is a multi-parent class loader; and in response to the determining, instructing the first candidate class loader to load the class for the first software application locally without querying a parent of the first candidate class loader.