已安装的可选包

已安装的可选包 使应用程序能够使用 Java™ 归档 (.jar) 文件中的类,而不必将它们显式包含在类路径中。 已安装可选包是在它的清单文件中包含专用标记的 .jar 文件,这些标记使应用程序服务器可以标识此文件。 已安装可选包在应用程序的清单文件中声明一个或多个共享库 .jar 文件。 在服务器上安装应用程序时,将在应用程序的类装入器中装入由共享库表示的类,从而使这些类可供应用程序使用。

当 Java Platform, Enterprise Edition (Java EE) 应用程序安装在服务器上时,将在其清单文件中指定依赖关系信息。 产品将读取应用程序(.ear 文件)的依赖关系信息,以便自动将应用程序与已安装可选包 .jar 文件相关联。 产品将相关的可选包中的 .jar 文件添加至应用程序类路径。 然后,在已安装可选包中的类就可用于应用程序类。

http://docs.oracle.com/javaee/上的 Java 2 Platform Enterprise Edition (J2EE) 规范 V1.4 的 8.2 节中描述了产品所使用的已安装可选软件包。

此产品支持在共享库 .jar 文件和应用程序 .ear 文件中使用清单文件 (manifest.mf)。 产品不支持 J2SE 规范 (http://docs.oracle.com/javase/1.3/docs/) 中使用的 Java 2 Platform Standard Edition (J2SE) 已安装可选包语义,该语义主要为 applet 环境提供服务。 产品将忽略清单文件中特定于 applet 的标记。

样本 manifest.mf 文件

下面的样本清单文件是引用单个共享库文件 util.jar 的应用程序 app1.ear

app1.ear:
    META-INF/application.xml
    ejb1.jar:
         META-INF/MANIFEST.MF:
             Extension-List: util
             util-Extension-Name: com/example/util
             util-Specification-Version: 1.4
         META-INF/ejb-jar.xml

util.jar:
    META-INF/MANIFEST.MF:
        Extension-Name: com/example/util
        Specification-Title: example.com's util package
        Specification-Version: 1.4
        Specification-Vendor: example.com
        Implementation-Version: build96

清单条目的语法取决于该条目应用于具有定义角色(共享库)的成员,还是应用于具有引用角色(Java EE 应用程序或 Java EE 应用程序中的模块)的成员。

清单条目标记

清单条目使用下列主要标记:

Extension-List
带有变量语法的必需标记。 在引用角色(应用程序的清单)的上下文中,它是用空格定界的列表,为列表中的每一个元素标识和构造了唯一的 Extension-Name、Extension-Specification 标记。 在定义角色(共享库)的上下文中,此标记是无效的。
Extension-Name
提供名称并链接定义成员和引用成员的必需标记。 引用角色中元素的语法是使用 <ListElement> 字符串作为该元素的前缀。 对于 Extension-List 中的每个元素,都有相应的 <ListElement>-Extension-Name 标记。 此标记的定义字符串文字值(先前样本中的 com/example/util1)在等同性测试中用于定义角色和引用角色之间相应的标记进行匹配。
Specification-Version
标识规范版本并链接定义成员和引用成员的必需标记。
Implementation-Version
标识实现版本并链接定义成员和引用成员的可选标记。

有关这些标记的更多信息,请参阅 .jar 文件规范 ( http://docs.oracle.com/javase/1.4.2/docs/)。