Access to components within applications and modules installed on the server occurs within the context of isolated class loader universes, each of which has its own Application, EJB, Web, and JSP Engine class loaders.
Application Universe – Each Java EE application has its own class loader universe, which loads the classes in all the modules in the application.
Individually Deployed Module Universe – Each individually deployed EJB JAR, web WAR, or lifecycle module has its own class loader universe, which loads the classes in the module.
A resource such as a file that is accessed by a servlet, JSP, or EJB component must be in one of the following locations:
A directory pointed to by the Libraries field or --libraries option used during deployment
A directory pointed to by the library-directory element in the application.xml deployment descriptor
A directory pointed to by the class loader’s classpath; for example, the web class loader’s classpath includes these directories:
module-name/WEB-INF/classes module-name/WEB-INF/lib