可以在多个 Java™ EE 应用程序之间共享库。 所有应用程序都可以在运行时使用相同的类,或者每个应用程序可以使用从同一个位置装入的那些类的单独副本。
Open Liberty Web 站点上提供了有关 Liberty 的类装入器配置的最新文档。
有关此任务
在以下示例中,称为
Alexandria 的库由两个文件组成:
- alexandria-scrolls.jar 和
- commons-lang.jar
称为
Scholar 的应用程序以及称为
Student 的应用程序正在称为
Academy 的服务器上运行,并且都需要访问此库。
过程
- 在
${WLP_USER_DIR} 目录下的 servers/Academy 目录中创建 mylib/Alexandria 目录。
例如:wlp/usr/servers/Academy/mylib/Alexandria。
- 将 alexandria-scrolls.jar 和 commons-lang.jar 文件复制到新文件夹中。
- 配置应用程序的类装入,以便装入
Alexandria 库。
在
server.xml 文件或随附的文件中,通过添加下列代码来定义库:
<library id="Alexandria">
<fileset dir="${server.config.dir}/mylib/Alexandria" includes="*.jar" scanInterval="5s" />
</library>
注: <library> 元素还可以采用 filesetRef 属性以及以逗号分隔的 <fileset> 元素标识列表。
- 从应用程序引用库,以便这两个应用程序共享库的单一副本。
在
server.xml 文件或包含的文件中,添加下列代码:
<application id="scholar" name="Scholar" type="ear" location="scholar.ear">
<classloader commonLibraryRef="Alexandria" />
</application>
<application id="student" name="Student" type="ear" location="student.ear">
<classloader commonLibraryRef="Alexandria" />
</application>
注: <commonLibraryRef> 元素可以采用以逗号分隔的库标识列表。
- 可选: 配置另一个应用程序以从同一 JAR 文件装入其自己的类集。
例如,如果另一个称为
Spy 的应用程序需要其自己的类副本,那么可以使用磁盘上的相同物理文件。 在
server.xml 文件或包含的文件中,添加下列代码:
<application id="spy" name="Spy" type="war" location="spy.war">
<classloader privateLibraryRef="Alexandria" />
</application>
注: <privateLibraryRef> 元素可以采用以逗号分隔的库标识列表。