功能部件管理
功能部件是您据以控制装入到特定服务器的运行时环境部件的功能单元。
使用配置文件 server.xml 来声明您想要装入的功能部件。 功能部件集含括在 <featureManager> 元素中,而每项功能部件含括在 <feature> 子元素中。例如:
<server>
<featureManager>
<feature>servlet-3.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
</server>
您可以在服务器配置文件中指定任何功能部件。有些功能部件包含其他功能部件。同一个功能部件可以包含在一个或多个其他功能部件中。在运行时,功能部件管理器会计算支持所请求功能部件集所需的内容的合并列表。
有关可用的主要功能部件的信息,请参阅 Liberty 功能部件。有关适用于每个功能部件的限制的信息,请参阅 运行时环境已知问题和限制。
功能部件配置的动态更改
更改功能部件配置时,功能部件管理器会重新计算所需捆绑软件的列表,停止并卸载不再需要的那些捆绑软件,然后安装并启动任何新增项。所有功能部件因此设计成能与其他动态添加或移除的功能部件配合使用。
![[8.5.5.4 或更高版本]](../ng_v8554.gif)
单体功能部件
因为为 Java™ EE 7 提供了第一组功能部件,所以同一功能部件存在两种版本:
- servlet-3.0
- servlet-3.1
servlet
功能部件是一个单体功能部件,这意味着您只能配置一个版本以在服务器中使用:servlet-3.0 或 servlet-3.1。如果应用程序需要该 servlet 功能部件的不同版本,那么必须在不同服务器中对它们进行部署。许多其他功能部件将该 servlet 功能部件包含为依赖项。在 WebSphere® Liberty 产品中,这些功能部件已更新以与任一版本配合使用。这可确保您可在使用 servlet-3.1 中配置功能部件的完整“堆栈”,但来自其他源的功能部件可能未更新以“容许”servlet-3.1。要启用功能部件以“容许”servlet-3.1,请按如下所示修改功能部件清单:
Subsystem-Content: com.ibm.websphere.appserver.servlet-3.0; ibm.tolerates:="3.1"; type="osgi.subsystem.feature"
如果服务器配置包含单体功能部件的多个版本(通过在 server.xml
文件中直接配置或通过功能部件依赖项)那么该配置处于错误状态或不会装入该功能部件的任一版本。此错误导致产生类似如下的消息:
[ERROR ] CWWKF0033E: 单体功能部件 servlet-3.1 和 servlet-3.0
无法同时装入。所配置功能部件 servlet-3.1 和 servlet-3.0 包含导致冲突的一个或多个功能部件。
要解决此问题,请确保所配置功能部件全部指定或容许该单体功能部件的同一版本。如果对两个功能部件版本有硬件要求,那么必须将某些应用程序移至另一服务器。被取代的功能部件
功能部件上的取代标签指示有新功能部件或功能部件组合可提供比使用所取代功能部件更好的优势。例如,将使用更细粒度的新功能部件,而不是取代的功能部件,以便通过排除可能不必要的内容来减小服务器覆盖区。新功能部件可能无法完全替换所取代功能部件的功能,因此在决定是否要更改配置之前,您必须考虑好情况。取代的功能部件仍保持完全受支持,且适合在您的配置中使用;取代标签仅提供您可能可以改进配置的指示。
很少的情况下,包括其他功能部件的功能部件被不包括所有其他功能部件的功能部件的新版本取代;不包括在新版本中的功能部件被认为是单独的。如果您的应用程序需要使用单独的功能部件的功能,那么必须将此功能部件显式添加至配置。
例如,featureA 和 featureB 具有下列条件:
- featureA-1.0 包括 featureB-1.0
- featureA-2.0 不包括 featureB-1.0(或者任何更高版本的 featureB)
- 将 featureA-1.0 包括在 server.xml 文件中
- 将 featureA-2.0 和 featureB-1.0 包括在 server.xml 文件中