可以在多个 Java™ EE 应用程序之间共享库。所有应用程序都可以在运行时使用相同的类,或者每个应用程序可以使用从同一个位置装入的那些类的单独副本。
关于此任务
在以下示例中,称为
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> 元素也可以接受具有以逗号分隔的 <fileset> 元素标识列表的 filesetRef 属性。
- 从应用程序引用库,以便这两个应用程序共享库的单一副本。
在
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> 元素可以接受以逗号分隔的库标识列表。