執行時期環境的已知問題和限制

當您使用 Liberty 執行時期環境時,有一些已知的限制。

已知問題和限制的清單:

最低的 Java 支援層次

任何符合標準的 Java™ SE 8、11、17 或 21 執行時期環境 (JRE) 或 Java SDK 都支援 Liberty ,但必須遵循下列特定實作所顯示的最低支援層次。

重要事項:

Java SE 17 是建議的 Java SDK ,因為它提供最新的特性和安全更新項目。 除了安裝 Java SE 17 ,您也可以安裝另一個支援的 Java SDK 版本。 Liberty 在 Open Liberty 網站上 支援的 Java 版本 表格的 Java SE 版本 直欄中列出的任何 Java SE 版本上執行。

  • Java SE 8 的 Liberty 結束支援日期是 2026 年 10 月,修正套件 26.0.0.10。
  • Java SE 11 的 Liberty 支援結束日期是 2026 年 10 月,修正套件 26.0.0.10。
  • Java SE 17 的 Liberty 結束支援日期是 2027 年 10 月,修正套件 27.0.0.10。
  • Java SE 21 的 Liberty 支援結束日期是 2029 年 10 月,修正套件 29.0.0.10。

如需相關資訊,請參閱 移除注意事項

適用於 IBM i 平台重要事項: IBM i 平台僅支援 Java SE 8、Java SE 11 及 Java SE 17。 IBM i尚不支援 Java SE 21。
Java SE 8 執行時期環境
對於 IBM®中的 Java SDK ,最低支援層次是 IBM SDK , Java Technology Edition 第 8 版。 對於來自 Oracle的 JDK ,最低支援層次是 Java 8 更新 25。
適用於 IBM i 平台
  • 對於 IBM i V7R4,最低 JDK 層次是 IBM Java SE 8.0 32 位元 JVM (5770JV1 選項 16) 或 IBM Java SE 8.0 64 位元 JVM (5770JV1 選項 17)。
  • [22.0.0.3 以及更新版本]對於 IBM i V7R5,最低 JDK 層次是 IBM Java SE 8.0 32 位元 JVM (5770JV1 選項 16) 或 IBM Java SE 8.0 64 位元 JVM (5770JV1 選項 17)。

適用於分散式平台在分散式平台上,支援 32 位元或 64 位元 Java。

適用於分散式平台若為 Windows 和 Linux® 系統,您可以使用 Oracle 中的 JDK 或 IBM中的 Java SDK。 如果您在 Windows 或 Linux上開發應用程式,且計劃將那些應用程式部署至在 WebSphere® Application Server Traditional上執行的伺服器,請使用 IBM中的 Java SDK。 如果是 HP 系統和 Mac OS,請使用 Oracle 的 JDK。

Java SE 11 執行時期環境
支援在 Java SE 11 上執行 IBM Semeru Runtimes for Java™ 11。 最低支援層次是 Java 11.0.2 版。 請注意, Java SE 平台在 Java SE 8 和 Java SE 11 之間發生重大變更,因此不保證零移轉。
Java SE 17 執行時期環境
Liberty 21.0.0.10開始,支援在 Java SE 17 上執行。
[23.0.0.10 以及更新版本]Java SE 21 執行時期環境
Liberty 23.0.0.10開始,支援在 Java SE 21 上執行。

安裝目錄名稱和路徑不能包非 ASCII 字元

近來的 JVM 沒有充分支援在 -jar-javaagent 指令中使用非 ASCII 字元。 在您的安裝目錄名稱和路徑中,請只使用 ASCII 字元。

檔案集限制

下列限制適用於檔案集:
  • 檔案集不會遞迴探索基本目錄的子目錄。 比方說,不支援下列指示:
    <fileset id="testFileset" dir="\temp" includes="**\a.jar"/> 
    <fileset id="testFileset" dir="\temp" includes="a\a.jar"/>
    <fileset id="testFileset" dir="\temp" includes="*\a.jar"/>
    <fileset id="testFileset" dir="\temp" includes="a\b\a.jar"/>
    

WebSphere MQ 資源配接器和一般 JCA 支援的相關限制

您可以使用 wmqJmsClient-1.1wmqJmsClient-2.0 特性,或使用一般 JCA 支援,在 WebSphere Application Server Liberty 內使用 WebSphere MQ 資源配接器。

您可以搭配使用 WebSphere MQ 資源配接器 7.5 版與 Liberty 8.5.5 版以及更新版本。 如果您想要使用以 JMS 2.0 資源配接器為基礎的 WebSphere MQ 資源配接器 8.0版,您必須確定您使用的是與 JMS 2.0 資源配接器相容的最新 Liberty 版本。

附註:
  • 當使用 Liberty 8.5.5.2時, wmqJmsClient-1.1 特性必須與 IBM MQ 資源配接器 7.5.0.5 版或更新版本搭配使用。
  • 當使用 Liberty 8.5.5.6版時, wmqJmsClient-2.0 特性必須與 IBM MQ 資源配接器 8.0.0.3 版或更新版本搭配使用。

如果要進一步瞭解 WebSphere MQ 資源配接器與 Liberty之間的版本相容性資訊,請參閱 取得 WebSphere MQ 資源配接器的參照

如果您使用一般 JCA 支援,適用的限制如下:
  • 如果要在 z/OS®上執行 IBM WebSphere MQ 資源配接器,您必須使用 wmqJmsClient-1.1wmqJmsClient-2.0 特性。
  • 使用一般 JCA 時,不會將追蹤和記載整合在 Liberty 追蹤系統內。 追蹤會寫入至個別的檔案,並且必須設定系統內容來加以啟用。 啟用追蹤的程序與為 Java 標準環境配置 JMS 追蹤機能的 WebSphere MQ 類別相同。 請參閱 Java 標準環境追蹤段落
  • Liberty不支援適用於 Java 的 IBM MQ 類別。 它們不得與 IBM MQ Liberty 傳訊特性或一般 JCA 支援一起使用。 如需相關資訊,請參閱 在 J2EE/JEE 環境中使用 WebSphere MQ Java 介面

Liberty 使用 IBM MQ 傳訊

Liberty 使用 IBM MQ 作為傳訊提供者時, JMS 連線儲存區可用連線的重複使用準則不同於 WebSphere Application Server traditional中的重複使用準則。 具體而言,如果 JMS 應用程式對 Connection Factory 使用儲存器鑑別,且數個已鑑別使用者使用相同的連線儲存區,則 Liberty 的重複使用速率遠低於 WebSphere Application Server Traditional 的重複使用速率。 Liberty 重複使用速率較低,因為已鑑別使用者所建立的可用連線無法由 Liberty 中其他已鑑別使用者重複使用,且可能導致頻繁重新產生連線。 如果 Liberty 的重複使用率不滿足效能需求,您可以搭配使用應用程式鑑別與 properties.wmqJmsusernamepassword 內容。

共用階段作業應用程式限制

當您使用共用階段作業環境定義應用程式延伸或 ibm-application-ext.xml中的 <shared-session-context value="true"/> 時,儲存在階段作業中的所有物件都必須在與應用程式相關聯的共用程式庫中可用,以便階段作業可以失效。 此外,使用 IBMApplicationSession 介面的共用階段作業應用程式在 Liberty 中不受支援。

IBM Cloud Private 中執行的 Liberty 應用程式

當您在 IBM Cloud® Private中部署 Liberty 應用程式時,存在下列限制:
  • 自動調整僅以 CPU 使用率為依據,不以自訂度量為依據。
  • 「入口」只支援基本配置和註釋(例如:單一環境定義根目錄)。
  • 當您存取應用程式時,如果該應用程式會在 HTTP 通訊協定上使用「入口」,可能會遇到問題。 如果您存取的應用程式位於 http://proxy_host/,會將您重新導向至埠 80,這是不正確的,因而無法存取應用程式。 請將埠 80 從 URL 移除,來修正問題。
  • 目前, Liberty Helm 圖表僅支援單一抄本的交易日誌持續性。

appSecurity-2.0 特性限制

appSecurity 特性適用的限制如下:
  • 對於 EJB 應用程式, ibm-ejb-jar-ext.xml 檔的延伸設定不支援 SYSTEM_IDENTITY 的 run-as-mode
  • 單態階段作業 Bean 不支援 getCallerIdentity API。
  • 角色名稱可以由 HttpServletRequest.isUserInRoleEJBContext.isCallerInRole API 或部署描述子中的元素來參照,無需事先利用 @DeclareRoles 註釋或部署描述子中的 <security-role/> 元素來宣告角色名稱。 不過,在 WebSphere Application Server Traditional 中使用之前,必須先宣告角色。

Bean 驗證特性的限制

beanvalidation-1.0 特性適用的限制如下:
  • 不支援在 OSGi 應用程式內進行 Bean 驗證。
beanValidation-1.1 特性適用的限制如下:
  • 不支援在 OSGi 應用程式內進行 Bean 驗證。
  • 在具有 beanValidation-1.0 特性的 validation.xml 檔中提供自訂 ConstraintValidatorFactory 實作的應用程式不會針對 Bean 驗證 1.1 API 進行編譯。
  • 如果 validation.xml 檔不是位於其相關聯的模組中,則只能有一個 validation.xml 檔,且必須在下列任一檔案中將 com.ibm.ws.beanvalidation.allowMultipleConfigsPerApp 內容設為 false
    • jvm.options
      -Dcom.ibm.ws.beanvalidation.allowMultipleConfigsPerApp=false
    • bootstrap.properties
      com.ibm.ws.beanvalidation.allowMultipleConfigsPerApp=false

CDI 特性限制

cdi-1.2 特性適用的限制如下:
  • 對於標註為 @Observes @Initialized(ApplicationScoped.class) 之方法內的 JNDI 查閱,在方法呼叫期間只能使用 java:app 名稱空間。 在 Liberty 18.0.0.1 以及更舊版本中,如果您需要另一個名稱空間,則需將類別移至 WAR 檔。

    若要修正此問題,請升級至 Liberty 18.0.0.2。 如果沒有修正,則除非將類別移至 WAR 檔,否則無法使用任何名稱空間。

cdi-2.0 特性適用的限制如下:
  • cdi-2.0 特性需要至少是 8.0.5.6 層次的 IBM Java。 此 Java 版本含有一項修正,可阻止稱為 ObserverExceptionHandler 的 Weld 介面發生 IllegalAccessException

collectiveController-1.0 特性限制

如果您啟動群體控制器伺服器,然後變更 IP 配置,控制器將不再正確運作。

concurrent-1.0 特性限制

concurrent-1.0 特性適用的限制如下:

如果執行緒環境定義是 securityContext 類型,主體中未使用 JAAS 登入模組來新增的任何自訂資訊將不會傳播。 例如,如果提交者的主體含有 TAI 所新增的自訂「主體」,所傳播的主體將不會包含這個自訂「主體」。

動態快取特性限制

下列動態快取特性無法使用,或可用性受到限制:
  • 不支援快取抄寫。
  • 只有以隨機和大小為基礎的收回技術,才支援高效能磁碟快取模式。
  • cachespec.xml 檔中,不支援 Web 服務用戶端和伺服器端快取及 Portlet 快取。
  • 不支援進行 SingleThreadModel Servlet 的 Servlet 快取。
  • 僅包含 Enterprise JavaBeans (EJB) 的 JAR 檔不支援使用內容檔來定義快取配置。
  • 限制資料堆快取大小僅適用於 32 位元 Java 虛擬機器 (JVM)。

Enterprise JavaBeans (EJB) 特性限制

EJB 特性適用的限制如下:
  • Session Bean 不會連結到 ejblocal 名稱空間,這表示 JNDI 查閱和 ejb-ref 連結名稱必須使用 java:globaljava:appjava:module 名稱。 在 ibm-ejb-jar-bnd.xml 檔中,會忽略 simple-binding-name 和介面 binding-name 元素。
  • 無法配置有狀態 Bean 的鈍化目錄。 檔案會取消於伺服器工作區。

j2eeManagement-1.1 特性限制

j2eeManagement-1.1 特性適用的限制如下:

  • 不支援「管理 EJB」的 getListenerRegistry() 方法。 您無法將事件通知接聽器登錄在「管理 EJB」元件中。

jacc-1.5 特性限制

對於 jacc-1.5 特性,會忽略下列配置:
  • 應用程式 ear 檔之 ibm-application-bnd.xml 檔或 ibm-application-bnd.xmi 檔中的授權資訊(authorizations 屬性的 users 和 groups 屬性)。
  • server.xml 檔中的授權資訊 ( application-bnd 元素中 security-role 屬性的 user、group 和 special-subject 屬性)。

jaxb-2.2 特性限制

jaxb-2.2 特性適用的限制如下:
  • 如果應用程式需要 JAXB API 類別且已啟動,且要啟用 jaxb-2.2 伺服器特性,您必須以 --clean 選項重新啟動伺服器,使得應用程式可以呼叫 jaxb-2.2 特性所提供的 JAXB 2.2 API 和實作類別。 否則,您的應用程式可能仍會連結至 Java SDK 中提供的 JAXB API 和實作類別
  • 如果已啟用 jaxb-2.2 伺服器特性,且要在應用程式中使用您自己的 JAXB API 和實作類別,您必須將您自己的 JAXB API 和實作 JAR 檔放到應用程式的 /WEB-INF/lib 目錄中,並配置應用程式的類別載入器以使用 parentLast 委派行為。 否則,jaxb-2.2 特性所提供的 JAXB API 和實作類別一律會生效。 如需在 Liberty 上為您的應用程式配置類別載入器行為的相關資訊,請參閱以替代版本置換提供的 API

jaxws-2.2 特性限制

jaxws-2.2 特性適用的限制如下:
  • 由於 jaxws-2.2 特性與 jaxb-2.2 特性相依,因此 jaxb-2.2 特性的限制也適用於 jaxws-2.2 特性。
  • 如果應用程式需要 JAX-WS API 類別且已啟動,且要啟用 jaxws-2.2 伺服器特性,您必須以 --clean 選項重新啟動伺服器,使得應用程式可以呼叫 jaxws-2.2 特性所提供的 JAX-WS 2.2 API 和實作類別。 否則,您的應用程式可能仍會連結至 Java SDK 中提供的 JAX-WS API 和實作類別
  • Liberty 的 Web 服務連結檔是 ibm-ws-bnd.xml 檔。 不支援 WebSphere Application Server Traditional 的下列 Web 服務連結檔:
    • ibm-webservices-ext.xmi
    • ibm-webservices-bnd.xmi
    • ibm-webservicesclient-ext.xmi
    • ibm-webservicesclient-bnd.xmi
    • ws-security.xml
  • 不支援 Apache Axis2 配置或類別。
  • 不支援實作 javax.xml.ws.Provider<OMElement>javax.xml.ws.Provider<String> 介面的 Web 服務提供者。
  • 對於 Liberty,MIME 附件的 content-id 屬性必須以角括弧括住。 例如,<testID>
  • Liberty 所提供的 wsgen 工具不支援 -inlineSchemas 選項。
  • 如果您想要使用 JAX-WS Web 服務來傳送大量的二進位資料,請啟用 MTOM,以免發生「記憶體不足 (OOM)」錯誤。
  • 對於 Web 服務應用程式,如果服務用戶端和服務提供者不在相同的應用程式中,且服務提供者應用程式中的 WSDL 檔案已變更,您需要手動重新啟動 Web 服務用戶端應用程式,以避免發生 WSDL 定義快取問題。

jpa-2.1 特性限制

jpa-2.1 特性適用的限制如下:
  • 如果您必須使用替代的 JPA 2.1 持續性提供者,請改用 jpaContainer-2.1 特性。
  • EclipseLink 專用的特性和註釋會顯露成協力廠商 API 套件。 如果要啟用這些,您必須配置類別載入器,以進行協力廠商類別載入。

logstashCollector-1.0 特性限制

下列限制適用於 logstashCollector-1.0 特性:
  • 資料流失-在 Liberty 中產生的部分事件可能未如預期轉遞至 Logstash。 在下列實務之下,有可能出現資料流失:
    1. 在 Logstash 伺服器啟動之前,先啟動 Liberty 伺服器。 建議您先啟動 Logstash 伺服器,再啟動 Liberty 伺服器。
    2. 大量載入狀況。 如果在 Liberty 中建立事件的速度比 Liberty 事件管線、Logstash 及任何其他下游消費者處理事件的速度還快,則可能會捨棄事件。 當事件建立短暫比事件耗用快時, Liberty 會使用緩衝區來避免資料流失。
  • logstashCollector-1.0 特性已測試過,並且相容於 Logstash 2.x 版和 Logstash 5.x 版。

monitor-1.0 特性限制

monitor-1.0 特性適用的限制如下:
  • 當從 server.xml 檔移除該特性時,您必須重新啟動伺服器,JAX-WS 應用程式才能運作。

openapi-3.0 特性限制

openapi-3.0 特性適用的限制如下:

  • 當您在 http://Liberty_host:http_port/api/docshttps://Liberty_host:https_port/api/docshttps://Liberty_host:https_port/ibm/api/docs 中使用 Microsoft Internet Explorer 11 檢視文件時,它會傳回未適當格式化的 YAML 文件。 暫行解決方法是使用瀏覽器,例如 Mozilla Firefox 或 Google Chrome 瀏覽器。
  • openapi-3.0 不支援多種語言的 OASProvider 配置。 請指定只會傳回一筆結果的提供者。
  • 目前並非所有的 JAX-RS 和 OpenAPI 註釋都有支援。
  • 在伺服器執行期間,如果變更了驗證屬性的值,則需要重新啟動先前載入的應用程式,以便讓那些應用程式的新驗證設定生效。
  • 不會驗證 OpenAPI 文件中的下列部分:
    • 元件
    • 鑑別器
    • 編碼
    • 延伸
    • 標頭
    • 鏈結
    • schema
    • 範圍
    • xml

restConnector-1.0 特性限制

restConnector-1.0 特性適用的限制如下:

  • 對於 restConnector-1.0 特性的使用者或含有 restConnector-1.0 之任何特性(例如 collectiveMember-1.0 collectiveController-1.0)的使用者,如果想執行含有自訂 JAXRS 2.0 執行時期的應用程式,則必須在該伺服器中新增 jaxrs-2.0 特性。
您可以改用 restConnector-2.0 特性。

scim-1.0 特性限制

scim-1.0 特性適用的限制如下:
  • 在您搜尋 groups 時,不會擷取 members 屬性。
  • 在您搜尋 users 時,不會擷取 usersgroups 屬性。
  • 無法針對 usersgroups 屬性設定 直接/間接 的標準類型。
  • 只能定義標準類型為 work之使用者的一個 email 屬性。
  • 只能定義標準類型為 work之使用者的一個 ims 屬性。
  • 無法設定或傳回 SCIM 的延伸綱目屬性,例如 entitlementsrolesx509Certificates
  • 在過濾器中,userName 屬性無法與其他某些屬性搭配使用。
  • 對於「基本」和 SAF 登錄中的使用者,只能設定 userNamedisplayNameidschemameta.locationgroups。 userName 和 displayName 的值相同。
  • 以「基本」和 SAF 登錄列出/查詢時,其運作方式與 ldapRegistry 登錄不同。
  • prgtgeltleandor() 等運算子不適用於「基本」和 SAF 登錄。 此外,對於「基本」和 SAF 登錄,只能在過濾器中使用一個運算子。
  • 「基本」和 SAF 是唯讀登錄。
  • 建立 user 時,無法設定 groups 屬性。

sipServlet-1.1 特性限制

sipServlet-1.1 特性在「階段作業起始通訊協定 (SIP)」支援方面,具有下列限制:
  • 對於「效能監視基礎架構 (PMI)」,不支援 SIP 計數器。
  • 不支援 SIP 摘要鑑別和 JSR 289 第 17 節的安全一節。
  • 不支援叢集作業和 SIP 對話持續性。

socialLogin-1.0 特性限制

socialLogin-1.0 特性適用的限制如下:
  • 對於 socialLogin-1.0,預設社交媒體選取表單在 Windows Server 2012 作業系統上的 Internet Explorer 中可能無法正常運作。 當您選擇提供者,並提交選單時,Internet Explorer 可能會提交顯示的按鈕文字作為預設值,而不是提交配置給該按鈕的 HTML 值。 如果要避開此限制,可使用不同的 Web 瀏覽器。 Internet Explorer 以外的瀏覽器就能正常地與預設選單搭配運作。

ssl-1.0 和 transportSecurity-1.0 特性的限制

對於 ssl-1.0transportSecurity-1.0 特性,適用的限制如下:

  • Java SE 11 引進新的 TLS 通訊協定版本 TLSv1.3。 這個新的通訊協定版本無法與現有的 Liberty 特性舊版相容,因此在進行 Java SE 及/或 Liberty 程式碼變更以配合 TLSv1.3的使用之前,將會廣域停用。 如果使用 IBM Semeru Runtimes for Java™ 11 或更新版本,也會包含 TLSv1.3 通訊協定。 如需使用 OpenSSL 搭配 IBM Semeru Runtimes for Java™ 11 來進行加密加速的相關資訊,請參閱 Semeru Runtimes 安全移轉手冊
  • 當啟用 ssl-1.0 特性時,您會利用 SSLContext.getDefault() 方法來獲得 Liberty 預設 SSLContext 類別。 不過,當啟用 transportSecurity-1.0 時, SSLContext.getDefault() 方法會傳回 Java Secure Socket Extension (JSSE) SSLContext 類別。 因此,從一項特性變更為另一項特性可能需要您更新應用程式碼。 當啟用 transportSecurity-1.0 特性時,如果要取得預設 Liberty SSLContext 類別,請使用 JSSEHelper.getInstance().getSSLContext(null, null, null) 方法,而不是 SSLContext.getDefault() 方法。

wmqJmsClient-1.1 特性限制

wmqJmsClient-1.1 特性適用的限制如下:
  • 您必須在 Windows 環境變數中手動設定 PATH 變數,以指向 IBM MQ 安裝 bin 目錄。 當應用程式使用 BINDING 連線模式時,您必須設定這個路徑。
  • Liberty 不支援適用於 Java 的 IBM MQ 類別。 它們不得與 IBM MQ Liberty 傳訊特性或一般 JCA 支援一起使用。 如需相關資訊,請參閱 在 J2EE/JEE 環境中使用 WebSphere MQ Java 介面
  • wmqJmsClient-1.1 特性不支援 IBM MQ 資源配接器的 BINDINGS_THEN_CLIENT 傳輸類型。
  • wmqJmsClient-1.1 特性不包含「進階傳訊安全 (AMS)」特性。

wmqJmsClient-2.0 特性限制

wmqJmsClient-2.0 特性適用的限制如下:
  • 您必須在 Windows 環境變數中手動設定 PATH 變數,以指向 IBM MQ 安裝 bin 目錄。 當應用程式使用 BINDING 連線模式時,您必須設定這個路徑。
  • Liberty 不支援適用於 Java 的 IBM MQ 類別。 它們不得與 IBM MQ Liberty 傳訊特性或一般 JCA 支援一起使用。 如需相關資訊,請參閱 在 J2EE/JEE 環境中使用 WebSphere MQ Java 介面
  • wmqJmsClient-2.0 特性不支援 IBM MQ 資源配接器的 BINDINGS_THEN_CLIENT 傳輸類型。