如果应用程序提供的(或使用的 Liberty 提供的)类在 Liberty 也可用,那么缺省情况下将使用 Liberty 中的类。要更改此设置以便应用程序使用这些类的替代版本,必须在 server.xml 文件或包含的文件中配置应用程序。
关于此任务
如果 Web 应用程序包含的类也存在于服务器运行时环境中,那么您可能想要控制应用程序使用的其中的每个类副本。例如,如果应用程序和服务器运行时环境中存在不同版本的类,那么必须确保使用应用程序中打包的版本。
缺省情况下,Liberty
运行时环境中的类供所有 Java™ EE 应用程序使用。可以使用类装入器配置 delegation 属性来覆盖此行为。此配置特定于某个应用程序,或者特定于选择供应用程序使用的共享库。
示例
在以下示例中,称为 Scholar 的应用程序需要使用它所提供的类(或者它所使用的库提供的类),而不是使用 Liberty 中提供的类副本。
- 如果类已打包在应用程序中,请使用 server.xml 配置文件或包含的文件中的 classloader 元素来覆盖缺省 parentFirst 授权行为:
<application id="" name="Scholar" type="ear" location="scholar.ear">
<classloader delegation="parentLast" />
</application>
这将告知应用程序类装入器只有在应用程序及其关联库中查找类之后才查找 Liberty 类。
- 如果类已打包在共享库中,请将 delegation 属性添加到 classloader 元素来配置类装入器的使用,如下所示:
<application id="" name="Scholar" type="ear" location="scholar.ear">
<classloader delegation="parentLast" commonLibraryRef="mySharedLib"/>
</application>
<library id="mySharedLib">
<fileset dir="${server.config.dir}/myLib" includes="*.jar" />
</library>
还可以将 privateLibraryRef 属性用于应用程序中的专用库。请参阅在多个 Java EE 应用程序之间共享库。