The Class Loader Hierarchy
Class loaders in the Enterprise Server runtime follow a delegation hierarchy that is
fully described in
Table 2-1.
Sun GlassFish Enterprise Server Class Loaders
|
|
|
The Bootstrap class loader loads the basic runtime classes
provided by the JVM software. |
|
The Extension class loader loads classes from JAR files
present in the system extensions directory, domain-dir/lib/ext. It is parent to the Public API
class loader. See Using the Java Optional Package Mechanism. |
|
The Public API class loader makes available all classes
specifically exported by the Enterprise Server runtime for use by deployed applications. This includes,
but is not limited to, Java EE APIs and other Sun GlassFish
APIs. It is parent to the Common class loader. |
|
The Common class loader loads JAR
files in the as-install/lib directory, then classes in the domain-dir/lib/classes directory, followed by JAR
files in the domain-dir/lib directory. Using domain-dir/lib/classes or domain-dir/lib is recommended whenever possible,
and required for custom login modules and realms. It is parent to the
Connector class loader. See Using the Common Class Loader. |
|
The Connector class loader is a single class loader
instance that loads individually deployed connector modules, which are shared across all applications. It
is parent to the Applib class loader and the LifeCycleModule class loader. |
|
The LifeCycleModule
class loader is created once per lifecycle module. Each lifecycle module’s classpath is
used to construct its own class loader. For more information on lifecycle modules,
see Chapter 13, Developing Lifecycle Listeners. |
|
The Applib class loader loads the library classes, specified during deployment, for
a specific enabled module or Java EE application; see Application-Specific Class Loading. One instance of this
class loader is present in each class loader universe; see Class Loader Universes. It is parent
to the Archive class loader. When multiple deployed applications use the same library,
they share the same instance of the library. One library cannot reference classes from
another library. |
|
The Archive class loader loads classes from the WAR, EAR, and JAR
files or directories (for directory deployment) of applications or modules deployed to the
Enterprise Server. This class loader also loads any application-specific classes generated by the
Enterprise Server runtime, such as stub classes or servlets generated by JSP pages. |
|