Liberty:功能部件管理
功能部件是您据以控制装入到特定服务器的运行时环境部件的功能单元。
使用配置文件 server.xml 来声明您想要装入的功能部件。 功能部件集含括在 <featureManager> 元素中,而每项功能部件含括在 <feature> 子元素中。例如:
<server>
<featureManager>
<feature>servlet-3.0</feature>
<feature>localConnector-1.0</feature>
</featureManager>
</server>
您可以在服务器配置文件中指定任何功能部件。有些功能部件包含其他功能部件。同一个功能部件可以包含在一个或多个其他功能部件中。在运行时,功能部件管理器会计算支持所请求功能部件集所需的内容的合并列表。
有关可用的主要功能部件的信息,请参阅 Liberty 功能部件。有关适用于每个功能部件的限制的信息,请参阅 Liberty:运行时环境已知问题和限制。
功能部件配置的动态更改
更改功能部件配置时,功能部件管理器会重新计算所需捆绑软件的列表,停止并卸载不再需要的那些捆绑软件,然后安装并启动任何新增项。因此,所有功能部件设计为与其他动态添加或移除的功能部件配合使用。
单体功能部件
因为为 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 包含导致冲突的一个或多个功能部件。
要解决此问题,请确保所配置功能部件全部指定或容许该单体功能部件的同一版本。如果对两个功能部件版本有硬件要求,那么必须将某些应用程序移至另一服务器。有关容许单体功能部件的更多信息,请参阅容许单体功能部件。被取代的功能部件
如果某项功能部件被取代,那么说明新的功能部件或功能部件组合可能提供比所取代功能部件更好的优势。例如,可能会使用更细粒度的新功能部件来代替所取代的功能部件,以便通过排除可能不必要的内容来减少服务器占用空间。新功能部件可能无法完全替换所取代功能部件的功能,因此在决定是否要更改配置之前,您必须考虑好情况。已取代的功能部件仍完全受支持,且适合在您的配置中使用,但您可能可以通过使用更新的功能部件来改进配置。
有关已取代的功能部件的更多信息,请参阅已取代的 Liberty 功能部件。