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

另請參閱 Developer Tools 已知限制。
已知問題和限制的清單:
- 一般限制:
- 最低的 Java 支援層次
- 安裝目錄名稱和路徑不能包非 ASCII 字元
- 在執行時期變更 JDBC 資料來源可能會導致 JPA 失敗
- 有賴於 getRealPath 傳回結果的應用程式必須部署為展開的應用程式,而不是 WAR 檔
- WebSphere Application Server traditional Script 不會與 Liberty 搭配運作
- 檔案集限制
當您取消發佈共用程式庫時,在伺服器停止之前,無法將它刪除
- java:global 查閱限制
- 應用程式未在內嵌的 Liberty 伺服器中啟動
- WebSphere MQ 資源配接器和一般 JCA 支援的相關限制
- dropins 目錄中的應用程式不可能版本化
- 群體、動態遞送和調整特性無法與 cdi-1.2 特性搭配使用
- 共用階段作業應用程式必須將階段作業物件儲存在共用程式庫中
- Liberty 特性專用限制:
- 「管理中心」特性的限制
- appClient-1.0 特性限制
- appSecurity-2.0 特性限制
- Bean 驗證特性的限制
- concurrent-1.0 特性限制
- 動態快取特性限制
- Enterprise JavaBeans (EJB) 特性限制
- jacc-1.5 特性限制
- jpa-2.1 特性限制
- jsf-2.2 特性限制
- jsp-2.2 特性限制
- logstashCollector-1.0 特性限制
- logmetCollector-1.0 特性限制
- monitor-1.0 特性限制
- requestTiming-1.0 特性限制
- restConnector-1.0 特性限制
- scim-1.0 特性限制
- sipServlet-1.1 特性限制
- wmqJmsClient-1.1 特性限制
- wmqJmsClient-2.0 特性限制
- 在執行時期修改 dataSource、jdbcDriver、connectionManager 和 JDBC 供應商內容,可能會造成 JPA 失敗
最低的 Java 支援層次
- Java SE 6 執行時期環境
- 對於 IBM 的 Java SDK,最低的支援層次是 6.0 (J9 2.6) SR 1。對於 Oracle 的 JDK,最低的支援層次是 Java 6 Update 26。
IBM i V7R3 不支援 Java SE 6。
- Java SE 7 執行時期環境
- 對於 IBM 的 Java SDK,最低的支援層次是 IBM Runtime Environment, Java Technology Edition 7.0.4.1。對於 Windows 和 Linux 上 Oracle 的 JDK,最低的支援層次是 Java SDK/JRE/JDK 7.0.17。對於 Mac OS X 上 Oracle 的 JDK,最低的支援層次是 Java SDK/JRE/JDK 7.0 Update 15。
- Java SE 8 執行時期環境
- 對於 IBM 的 Java SDK,最低的支援層次是 IBM SDK,Java Technology Edition 第 8 版。對於 Oracle 的 JDK,最低的支援層次是 Java 8 Update 25。
在分散式平台上,支援 32 位元或 64 位元的 Java。
若為 Windows 和 Linux 系統,您可以使用 Oracle 的 JDK 或 IBM 的 Java SDK。
如果您在 Windows 或 Linux 上開發應用程式,且打算將這些應用程式部署在執行於 WebSphere Application Server traditional 的伺服器中,請使用 IBM 的 Java SDK。
如果是 HP 系統和 Mac OS,請使用 Oracle 的 JDK。

若為 IBM i V7R3,最低的 JDK 層次是 IBM Java SE 7.0 32 位元 JVM(5770-JV1 選項 14)或 IBM Java SE 7.0 64 位元 JVM (5770-JV1 選項 15)。
安裝目錄名稱和路徑不能包非 ASCII 字元
近來的 JVM 沒有充分支援在 -jar 和 -javaagent 指令中使用非 ASCII 字元。 在您的安裝目錄名稱和路徑中,請只使用 ASCII 字元。
在執行時期變更 JDBC 資料來源可能會導致 JPA 失敗
如果沒有透過內容來指定資料庫字典類型,當建立第一個實體管理程式並建立資料庫連線時,OpenJPA 會偵測它並進行計算。 後續建立的所有實體管理程式都會使用這個資料庫字典類型。 如果應用程式執行時,JDBC 資料來源有了改變,實體管理程式 Factory 不會偵測這項變更,它會繼續利用舊字典來處理新的資料來源。 如果資料庫變更為不同的供應商,這可能導致失敗。
當您將資料庫變更為不同的供應商,請重新啟動應用程式。
在執行時期修改 dataSource、jdbcDriver、connectionManager 和 JDBC 供應商內容,可能會造成 JPA 失敗
如果您在伺服器執行時,更新 dataSource、jdbcDriver、connectionManager 或任何 JDBC 供應商內容清單(例如 properties.db2.jcc 或 properties.oracle)的配置,您可能會見到 J2CA8040E 失敗。 這些失敗指出,不能將多個 dataSource 元素與單一 connectionManager 相關聯。 即使您的配置只將一個 connectionManager 關聯於 dataSource 元素,也會產生這些失敗。
當您更新任何這些 JDBC 資源的配置時,請重新啟動伺服器。
有賴於 getRealPath 傳回結果的應用程式必須部署為展開的應用程式,而不是 WAR 檔
Java EE 規格指出,如果是從 Web 保存檔 (WAR) 提供內容,getRealPath() 方法會傳回 null 值。 當您將 WAR 檔部署至 Liberty 時,它不會自動將保存檔解壓縮到目錄結構。 因此,應用程式可能會啟動失敗。 如果您的應用程式有賴於 getRealPath() 傳回的結果,您必須將應用程式部署為展開的 Web 應用程式,而不是 WAR 檔。 例如,您可以手動解壓縮 WAR 檔,將展開的應用程式複製到 dropins 目錄中。
WebSphere Application Server traditional Script 不會與 Liberty 搭配運作
您無法利用 WebSphere Application Server traditional 的 bin 目錄下的任何 Script 來管理 Liberty。
檔案集限制
- 檔案集不會遞迴探索基本目錄的子目錄。
比方說,不支援下列指示:
<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"/>

當您取消發佈共用程式庫時,在伺服器停止之前,無法將它刪除
當您將共用程式庫從伺服器中取消發佈時,伺服器不會立即釋出程式庫 JAR 檔。 因此,作業系統不知道檔案已不在使用中,不會讓您刪除檔案。 當您接著停止伺服器時,就會釋出程式庫 JAR 檔,您可以將檔案刪除。
java:global 查閱限制
應用程式中以 java:global 查閱來定義的資源,只能用來存取部署在現行伺服器中的應用程式所宣告的名稱。
應用程式未在內嵌的 Liberty 伺服器中啟動
確定已使用指向 libertyInstallDir/bin/tools/ws-javaagent.jar 的 -javaagent JVM 引數,來啟動會啟動內嵌 Liberty 伺服器的 Java 程序。如果未使用 -javaagent JVM 引數,伺服器執行時期仍會啟動,但應用程式無法啟動,而且不會出現明顯的異常狀況。
WebSphere MQ 資源配接器和一般 JCA 支援的相關限制
您可以利用 wmqJmsClient-1.1 或 wmqJmsClient-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 資源配接器。
- 如果要在 z/OS® 上執行 IBM® WebSphere MQ 資源配接器,必須使用 wmqJmsClient-1.1 或 wmqJmsClient-2.0 特性。
- 追蹤和記載功能沒有透過一般 JCA 整合在 Liberty 追蹤系統中。追蹤會寫入至個別的檔案,並且必須設定系統內容來加以啟用。啟用追蹤的程序,與針對「Java™ 標準環境」配置 WebSphere MQ 類別以使用 JMS 追蹤機能的程序相同。 請參閱 Java 標準環境追蹤段落。
- 在 Liberty 中,不支援適用於 Java 的 IBM MQ 類別。 它們不能與 IBM MQ Liberty 傳訊特性或一般 JCA 支援一起使用。 如需相關資訊,請參閱在 J2EE/JEE 環境中使用 WebSphere MQ Java 介面。
dropins 目錄中的應用程式不可能版本化
對於位於 dropins 目錄中的應用程式,應用程式監視器會利用檔名和副檔名來判斷應用程式類型,以及產生應用程式 ID 和應用程式名稱。因此,不可能藉由檔名或副檔名,來指定應用程式的版本號碼。在正式作業環境中,不建議您使用 dropins 目錄。
群體、動態遞送和調整特性無法與 cdi-1.2 特性搭配使用
collectiveController-1.0、collectiveMember-1.0、 clusterMember-1.0、dynamicRouting-1.0、scalingController-1.0 或 scalingMember-1.0 特性請勿與「環境定義和相依關係注入 1.2」(cdi-1.2) 特性搭配使用。
共用階段作業應用程式必須將階段作業物件儲存在共用程式庫中
當您使用 shared-session-context 應用程式延伸,或在 ibm-application-ext.xml 中使用 <shared-session-context value="true"/> 時,儲存在階段作業中的所有物件必須提供於應用程式相關聯的共用程式庫中,如此才能使階段作業失效。
「管理中心」特性的限制
![[16.0.0.4 以及更新版本]](../ng_v16004.gif)
- 因安全鑑別問題,無法檢視來自遠端機器的工作日誌。
- 在檢視實例日誌時,如果會跨多部主機執行,則預期會發生錯誤。
- 未經過濾的清單只會顯示根據最近更新的實例來排序的結果。
- 當針對 all 執行過濾器時,不會依最近更新的實例來排序結果。
- 不論清單是否已過濾,清單中最多只會顯示 50 筆結果。
- 使用「Java 批次」測試版時,需要將持續資料庫與 batchManagement-1.0 特性搭配使用。
appClient-1.0 特性限制
- 此特性不支援 Java EE 應用程式用戶端,並且只能啟動獨立式用戶端程式。
appSecurity-2.0 特性限制
- 對於 EJB 應用程式,ibm-ejb-jar-ext.xml 檔的延伸設定不支援 run-as-mode SYSTEM_IDENTITY。
- getCallerIdentity API 不支援單態階段作業 Bean。
- 角色名稱可以由 HttpServletRequest.isUserInRole 和 EJBContext.isCallerInRole API 或部署描述子中的元素來參照,無需事先利用 @DeclareRoles 註釋或部署描述子中的 <security-role/> 元素來宣告角色名稱。 不過,角色必須先宣告,才能在 WebSphere Application Server traditional 中使用。
Bean 驗證特性的限制
- 不支援在 OSGi 應用程式內進行 Bean 驗證。
- 不支援在 OSGi 應用程式內進行 Bean 驗證。
- 在 validation.xml 檔中以 beanValidation-1.0 特性提供自訂 ConstraintValidatorFactory 實作的應用程式,不會對 Bean Validation 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
- jvm.options
動態快取特性限制
- 不支援快取抄寫。
- 只有以隨機大小為基礎的收回技術,才支援高效能磁碟快取模式。
- 在 cachespec.xml 檔中,不支援 Web 服務用戶端和伺服器端快取及 Portlet 快取。
- 不支援進行 SingleThreadModel Servlet 的 Servlet 快取。
- 不支援只含 Enterprise JavaBeans (EJB) 的 JAR 檔利用內容檔來定義快取配置。
- 限制資料堆快取大小只適用於 32 位元 Java 虛擬機器 (JVM)。
Enterprise JavaBeans (EJB) 特性限制
- 如果只使用 EJB Lite 特性,則不支援 3.0 版之前的 EJB 模組,因為 EJB Lite 不包含 EJB 起始目錄。這項限制也表示不支援使用 .xmi 檔案格式而非 .xml 檔案格式的連結和延伸。
- Session Bean 不會連結到 ejblocal 名稱空間,這表示 JNDI 查閱和 ejb-ref 連結名稱必須使用 java:global、java:app 或 java:module 名稱。在 ibm-ejb-jar-bnd.xml 檔案中,會忽略 simple-binding-name 和介面 binding-name 元素。
- 無法配置有狀態 Bean 的鈍化目錄。 檔案會取消於伺服器工作區。
jsf-2.2 特性限制
- 當您將 jsf-2.2 特性與 faces-config.xml 檔搭配使用,並指定 2.2 版和名稱空間時,您會收到錯誤。
- 如果 jsf-2.2 與 cdi-1.2、ejb-3.2 和 jpa-2.1 一起啟用,會發生特性衝突。
jsp-2.2 特性限制
- 不支援 useInMemory 配置選項只將翻譯的 JSP 檔儲存在記憶體中。
logstashCollector-1.0 特性限制
下列限制適用於 logstashCollector-1.0 特性:- 資料流失 - 在 Liberty 中產生的部分事件,可能未依預期轉遞至 Logstash。
在下列實務之下,有可能出現資料流失:
- 在 Logstash 伺服器啟動之前,啟動 Liberty 伺服器。建議您在啟動 Liberty 伺服器之前,先啟動 Logstash 伺服器。
- 大量載入狀況。當在 Liberty 中建立事件的速度超出 Liberty 事件管線及任何其他下游消費者的處理能力時,有可能捨棄事件。 當建立事件短時間內比消耗事件快時,Liberty 會利用緩衝區來避免資料流失。
- logstashCollector-1.0 特性已測試過,與 Logstash 2.x 版相容。
logmetCollector-1.0 特性限制
下列限制適用於 logmetCollector-1.0 特性:- 資料流失 - 在 Liberty 中產生的部分事件,可能未依預期轉遞至 logmet。在下列實務之下,有可能出現資料流失:
大量載入狀況。當在 Liberty 中建立事件的速度超出 Liberty 事件管線、logmet 及任何其他下游消費者的處理能力時,有可能捨棄事件。 當建立事件短時間內比消耗事件快時,Liberty 會利用緩衝區來避免資料流失。
- 連線遺失 - 在 Bluemix® 中,logmet 連線經常切斷。
monitor-1.0 特性限制
- 當從 server.xml 檔中移除這個特性時,您必須重新啟動伺服器,JAX-WS 應用程式才能夠運作。
requestTiming-1.0 特性限制
- requestTiming-1.0 特性啟動之後,已證明在以 DayTrader 應用程式進行測量時,對於最大可能的應用程式儲存區產量會帶來 4% 的負面影響。 您的應用程式所受的影響也許會更大或較小,但您應該知道,有時可能會有明顯的效能降低。
restConnector-1.0 特性限制
restConnector-1.0 特性適用的限制如下:
- 對於 restConnector-1.0 特性的使用者或含有 restConnector-1.0 之任何特性 (例如 collectiveMember-1.0 和 collectiveController-1.0)的使用者,如果想執行含有自訂 JAXRS 2.0 執行時期的應用程式,則必須在該伺服器中新增 jaxrs-2.0 特性。
scim-1.0 特性限制
- 搜尋 groups 時,不會擷取 members 屬性。
- 搜尋 users 時,不會擷取 users 的 groups 屬性。
- 無法為 users 的 groups 屬性,設定直接/間接「標準」類型。
- 如果使用者的「標準」類型是工作,則只能定義一個 email 屬性。
- 如果使用者的「標準」類型是工作,則只能定義一個 ims 屬性。
- 無法設定或傳回 SCIM 的延伸綱目屬性,例如 entitlements、roles 和 x509Certificates。
- 在過濾器中,userName 屬性無法與其他某些屬性搭配使用。
- 對於「基本」和 SAF 登錄中的使用者,只能設定 userName、displayName、id、schema、meta.location 和 groups。userName 和 displayName 的值相同。
- 以「基本」和 SAF 登錄列出/查詢時,其運作方式與 ldapRegistry 登錄不同。
- pr、gt、ge、lt、le、and、or 和 () 等運算子不適用於「基本」和 SAF 登錄。此外,對於「基本」和 SAF 登錄,只能在過濾器中使用一個運算子。
- 「基本」和 SAF 是唯讀登錄。
- 建立 user 時,無法設定 groups 屬性。
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 特性限制
- 您必須手動設定 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 傳輸類型。
jpa-2.1 特性限制
- 無法使用替代的 JPA 2.1 提供者。如果您需要 2.1 支援,必須使用內建提供者。
- 無法在應用程式中使用任何 EclipseLink 專用的特性或註釋。只能使用 javax.persistence API。
concurrent-1.0 特性限制
若為 concurrent-1.0 特性,適用的限制如下:
如果執行緒環境定義是 securityContext 類型,主旨中未使用 JAAS 登入模組來新增的任何自訂資訊將不會傳播。舉例來說,如果提交者的主旨含有 TAI 所新增的自訂「主體」,所傳播的主旨將不會包含這個自訂「主體」。
sipServlet-1.1 特性限制
- 對於「效能監視基礎架構 (PMI)」,不支援 SIP 計數器。
- 不支援 SIP 摘要鑑別和 JSR 289 第 17 節的安全一節。
- 不支援叢集作業和 SIP 對話持續性。
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 屬性)。