Part I Development Tasks and Tools
1. Setting Up a Development Environment
Using the Java Optional Package Mechanism
Using the Endorsed Standards Override Mechanism
Application-Specific Class Loading
Circumventing Class Loader Isolation
Packaging the Client JAR for One Application in Another Application
To Package the Client JAR for One Application in Another Application
3. Using Ant with Enterprise Server
Part II Developing Applications and Application Components
7. Using the Java Persistence API
8. Developing Web Applications
9. Using Enterprise JavaBeans Technology
10. Using Container-Managed Persistence
13. Developing Lifecycle Listeners
Part III Using Services and APIs
14. Using the JDBC API for Database Access
15. Using the Transaction Service
16. Using the Java Naming and Directory Interface
Note that the class loader hierarchy is not a Java inheritance hierarchy, but a delegation hierarchy. In the delegation design, a class loader delegates class loading to its parent before attempting to load a class itself. If the parent class loader cannot load a class, the class loader attempts to load the class itself. In effect, a class loader is responsible for loading only the classes not available to the parent. Classes loaded by a class loader higher in the hierarchy cannot refer to classes available lower in the hierarchy.
The Java Servlet specification recommends that a web module's class loader look in
the local class loader before delegating to its parent. You can make this
class loader follow the delegation inversion model in the Servlet specification by setting
delegate="false" in the class-loader element of the sun-web.xml file. It is safe to do
this only for a web module that does not interact with any other
modules. For details, see class-loader in Sun GlassFish Enterprise Server v3 Application Deployment Guide.
The default value is delegate="true", which causes a web module's class loader to
delegate in the same manner as the other class loaders. You must use
delegate="true" for a web application that accesses EJB components or that acts as
a web service client or endpoint. For details about sun-web.xml, see Sun GlassFish Enterprise Server v3 Application Deployment Guide.
For a number of packages, including java.* and javax.*, symbol resolution is always delegated to the parent class loader regardless of the delegate setting. This prevents applications from overriding core Java runtime classes or changing the API versions of specifications that are part of the Java EE platform.