Grid Library Loading

When a Service Session is set to use a Grid Library, that library is loaded. Loading is the process of setting up all resources in the Grid Library for use by the Service. A library is loaded only once per Engine session.

First, the library loads itself, and then it loads all dependencies. The library loader uses the depth-first, or preorder traversal algorithm when loading libraries. When there are a number of dependencies in a Grid Library, the order in the XML is considered left-to-right with respect to the algorithm. The library search order for lib-path and jar-path is determined by their respective lists. Certain aspects of a load might require a restart, and possibly re-initialization of the state. The following steps are performed by a load of the root library and all dependencies:

1. Checks for conflicts with currently loaded Grid Libraries. If so, it restarts with the requested Grid Library and clears out the current state of any loaded libraries.
2. If new lib-paths have been added for its OS, they append to the current list of lib-paths. The state of loaded libraries includes all libraries already loaded, plus the requested library. Note that specifying a JRE dependency has this effect.
3. If new jar-paths have been added for its OS, the jars and classes are added to the classloader.
4. If new assembly-paths have been added, it adds them to the .NET search path.
5. If new command-paths have been added for its OS, it is added to the search path for Command tasks.
6. If new hooks-paths have been added, any hooks in the path are initialized.
7. If the default is current and a Grid Library is requested, the Engine restarts.