特性管理
特性是一些功能單元,供您用來控制載入特定伺服器的執行時期環境片段。
請利用配置檔 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 檔中