Manage shared libraries
Shared libraries are files used by multiple applications. Each shared library consists of a symbolic name, a Java class path, and a native path for loading Java Native Interface (JNI) libraries. Use shared libraries to reduce the number of duplicate library files on the system.
The applications use the same library files. The applications already are deployed on a server or you currently are deploying the applications.
Suppose that we have fthe applications that use the same library file, my_sample.jar. Instead of having four copies of my_sample.jar on the system after the fthe applications are deployed, we can define a shared library for my_sample.jar and have the four deployed applications use that one my_sample.jar library file.
If we are adding a new JAR to the shared libraries defined for our system, always remember to restart the JVM so that this shared library addition for the new JAR becomes known to the system.
Isolated shared libraries provide another way to reduce the number of library files. Isolated shared libraries each have their own class loader, enabling a single instance of the classes to be shared across the applications. Each application can specify which isolated shared libraries that it wants to reference. Different applications can reference different versions of the isolated shared library, resulting in a set of applications sharing an isolated shared library. With isolated shared libraries, some applications can share a single copy of Library A, Version 1 while other applications share a single copy of Library A, Version 2, for a total of two instances in memory.
Use the administrative console, we can define shared libraries for the library files that multiple applications use and then associate the libraries with specific applications or modules or with an application server. Guidelines for associating shared libraries are as follows:
- Associate a shared library file with an application or module to load the classes represented by the shared library in a local class loader, which can be an application-wide or module-wide class loader.
- Associate an isolated shared library file with an application or module to load the classes represented by the shared library in a separate class loader created for that shared library.
- Associate a shared library file with a server to load the classes represented by the shared library in a server-wide class loader. This class loader is the parent of the application class loader, and the WebSphere Application Server extensions class loader is its parent. Associating a shared library file with a server associates the file with all applications on the server.
- Do not associate an isolated shared library file with a server if we want a separate class loader for a shared library. If we associate the shared library with a server, the product ignores the isolation setting and still adds files in the shared library to the application server class loader. That is, associating an isolated shared library file with a server associates the file with all applications on the server. The product does not use an isolated shared library when you associate the shared library with a server. Associate an isolated shared library with an application or module.
Instead of using the administrative console to associate a shared library with an application, we can use an installed optional package. We associate a shared library to an application by declaring the dependent library .jar file in the MANIFEST.MF file of the application. Refer to the J2EE 1.4 specification, section 8.2 for an example.
Tasks
- Use the administrative console to define a shared library.
- Create a shared library.
On a single-server product, we can define a shared library at the cell, node, or server level.
On a multiple-server product, we can define a shared library at the cell, node, server, or cluster level.
Define a library at one of the these levels does not automatically place the library into a class loader. We must associate the library with an application, module, or server before the product loads the classes represented by the shared library into a local or server-wide class loader.
- Associate each shared library with an application, module, or server.
- Associate a shared library with an application or module that uses the shared library file.
If we enabled the Use an isolated class loader for this shared library setting when creating the shared library, associate the isolated shared library with an application or module to use a separate class loader for the shared library.
- Associate a shared library with an application server so every application on the server can use the shared library file.
- Use an installed optional package to declare a shared library for an application.
- Remove a shared library.
- Click Environment > Shared libraries in the console navigation tree to access the Shared libraries page.
- Select the library to be removed.
- Click Delete.
The list of shared libraries is refreshed. The library file no longer displays in the list.
Subtopics
- Create shared libraries
- Shared library collection
- Shared library settings
- Associate shared libraries with applications or modules
- Associate shared libraries with servers
- Installed optional packages
- Use installed optional packages
- Library reference collection
- Library reference settings
Related:
Class loaders Configure native libraries in shared libraries Shared library settings