Class loader is an object responsible for loading classes and its an abstract class itself.
Whenever we make a java project , we have a .java file which after compilation becomes a platform independent byte code i.e .class. Then JVM loads this .class in memory and execute it.
So, there are three java loaders:
Whenever we make a java project , we have a .java file which after compilation becomes a platform independent byte code i.e .class. Then JVM loads this .class in memory and execute it.
So, there are three java loaders:
- Bootstrap Class Loader : It Loads internal JDK classes from jre/lib
- Extension Class Loader : It loads jar from jre/lib/ext
- Application/System Class Loader: It loads classes from classpath or defined path
Ways of loading classes:
- Delegation Principle: Any request to load class will be given preference to parent class, if parent cant load then only the child gets to respond. (as you can see in picture above)
- Uniqueness: At any point of time only one type/copy of class is available to be loaded,. so , if a class is loaded by parent it wont be loaded by its child.
- Visibility: Child classes have visibility of all classes loaded by parent.
Configuring Classloader in Websphere
- Click to access an application server settings page.
- Specify the application class-loader policy for the application server.The application class-loader policy controls the isolation of applications that run in the system (on the server). An application class loader groups enterprise bean (EJB) modules, shared libraries, resource adapter archives (RAR files), and dependency Java archive (JAR) files associated to an application. Dependency JAR files are JAR files that contain code which can be used by both enterprise beans and servlets. The application class-loader policy controls whether an application class loader can be shared by multiple applications or is unique for each application.
Use the application server settings page to specify the application class-loader policy for the server:
Option | Description |
---|---|
Single | Applications are not isolated from each other. Uses a single application class loader to load all of the EJB modules, shared libraries, and dependency JAR files in the system. |
Multiple | Applications are isolated from each other. Gives each application its own class loader to load the EJB modules, shared libraries, and dependency JAR files of that application. |
- Specify the application class-loader mode for the application server.The application class loading mode specifies the class-loader mode when the application class-loader policy is Single.On the application server settings page, select either of the following values:
Option | Description |
---|---|
Classes loaded with parent class loader first | Causes the class loader to delegate the loading of classes to its parent class loader before attempting to load the class from its local class path. Classes loaded with parent class loader first is the default value for class loading mode.
This value is also known as parent first.
|
Classes loaded with local class loader first (parent last) | Causes the class loader to attempt to load classes from its local class path before delegating the class loading to its parent. Using this policy, an application class loader can override and provide its own version of a class that exists in the parent class loader. |
- Specify the class-loader mode for the class loader.
- On the application server settings page, click Java and Process Management > Class loader to access the Class loader page.
- On the Class loader page, click New to access the settings page for a class loader.
- On the class loader settings page, specify the class loader order.The Classes loaded with parent class loader first value causes the class loader to delegate the loading of classes to its parent class loader before attempting to load the class from its local class path.The Classes loaded with local class loader first (parent last) value causes the class loader to attempt to load classes from its local class path before delegating the class loading to its parent.
- Click OK
This is cleared a lot of things for me regarding classloader. I hope it helps you too.