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

另請參閱 「開發人員工具」已知的問題和限制。
已知問題和限制的清單:
- 一般限制:
- 最低的 Java 支援層次
- 安裝目錄名稱和路徑不能包非 ASCII 字元
- 在執行時期變更 JDBC 資料來源可能會導致 JPA 失敗
- 有賴於 getRealPath 傳回結果的應用程式必須部署為展開的應用程式,而不是 WAR 檔
- WebSphere Application Server 完整設定檔 Script 無法使用Liberty 設定檔
- 檔案集限制
- 置換 Java SDK 的類別
當您取消發佈共用程式庫時,在伺服器停止之前,無法將它刪除
- java:global 查閱限制
- 應用程式未在內嵌的 Liberty 伺服器中啟動
WebSphere MQ 資源配接器和一般 JCA 支援的相關限制
- "dropins" 目錄中的應用程式不可能版本化
- Liberty 特性專用限制:
「管理中心」特性的限制
- appSecurity-2.0 特性限制
- Bean 驗證特性的限制
- 動態快取特性限制
- ejbLite-3.1 特性限制
eventLogging-1.0 特性限制
jpa-2.1 特性限制
- jsp-2.2 特性限制
- monitor-1.0 特性限制
requestTiming-1.0 特性限制
- wmqJmsClient-1.1 特性限制
wmqJmsClient-2.0 特性限制
concurrent-1.0 特性限制
jacc-1.5 特性限制
- 在執行時期修改 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。
- 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 的 JDK。
如果您在 Windows 或 Linux 上開發應用程式,且打算將這些應用程式部署在執行於 WebSphere Application Server 完整設定檔的伺服器中,您應該使用 IBM 的 JDK。
如果是 HP 系統和 Mac OS,請使用 Oracle 的 JDK。

![[8.5.5.2 或更新版本]](../ng_v8552.gif)
![[8.5.5.2 或更新版本]](../ng_v8552.gif)
安裝目錄名稱和路徑不能包非 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 完整設定檔 Script 無法使用Liberty 設定檔
您無法利用 WebSphere Application Server 完整設定檔 在 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"/>
置換 Java SDK 的類別
- 如果您利用 javac,從指令行進行建置,請利用 javac -endorseddirs 選項及 ${wlp.install.dir}/dev/specs 目錄中的 JAR 檔來編譯您的程式碼。
- 如果您利用 Apache Ant 來建置,請利用 javac 作業的 <compilerarg> 子元素及 ${wlp.install.dir}/dev/specs 目錄中的 JAR 檔來編譯您的程式碼。
在建置 Script 中,請指定 -endorseddirs 選項及 ${wlp.install.dir}/dev/specs 目錄來作為個別的 <compilerarg> 元素。
例如:
<javac srcdir="src" destdir="classes"/> <compilerarg value="-endorseddirs"/> <compilerarg value="${wlp.install.dir}/dev/specs"/> </javac>
- 如果您利用 Apache Maven 來建置,請利用 Maven 編譯器外掛程式的 endorseddirs 元素及 ${wlp.install.dir}/dev/specs 目錄中的 JAR 檔來編譯您的程式碼。
例如:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <compilerArguments> <endorseddirs>${wlp.install.dir}/dev/specs</endorseddirs> </compilerArguments> </configuration> </plugin>

當您取消發佈共用程式庫時,在伺服器停止之前,無法將它刪除
當您將共用程式庫從伺服器中取消發佈時,伺服器不會立即釋出程式庫 JAR 檔。 因此,作業系統不知道檔案已不在使用中,不會讓您刪除檔案。 當您接著停止伺服器時,就會釋出程式庫 JAR 檔,您可以將檔案刪除。
java:global 查閱限制
應用程式中以 java:global 查閱來定義的資源,只能用來存取部署在現行伺服器中的應用程式所宣告的名稱。
appSecurity-2.0 特性限制
- 對於 EJB 應用程式,ibm-ejb-jar-ext.xml 檔的延伸設定不支援 run-as-mode SYSTEM_IDENTITY。
- getCallerIdentity API 不支援單態 Session Bean。
- 角色名稱可以由 HttpServletRequest.isUserInRole 和 EJBContext.isCallerInRole API 或部署描述子中的元素來參照,無需事先利用 @DeclareRoles 註釋或部署描述子中的 <security-role/> 元素來宣告角色名稱。 不過,角色必須先宣告,才能在完整設定檔中使用。
應用程式未在內嵌的 Liberty 伺服器中啟動
確定已使用指向 libertyInstallDir/bin/tools/ws-javaagent.jar 的 -javaagent JVM 引數,來啟動會啟動內嵌 Liberty 伺服器的 Java 程序。如果未使用 -javaagent JVM 引數,伺服器執行時期仍會啟動,但應用程式無法啟動,而且不會出現明顯的異常狀況。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
WebSphere MQ 資源配接器和一般 JCA 支援的相關限制
您可以透過 wasJmsClient-1.1 或 wasJmsClient-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 版時,wasJmsClient-1.1 特性必須與 IBM MQ 資源配接器 7.5.0.5 版或更新版本搭配使用。
- 當使用 Liberty 設定檔 8.5.5.6 版,wasJmsClient-2.0 特性必須與 IBM MQ 資源配接器 8.0.0.3 版或更新版本搭配使用
如果要進一步瞭解 WebSphere MQ 資源配接器與 Liberty 設定檔之間的版本相容性資訊,請參閱參照:取得 WebSphere MQ 資源配接器。
- 如果要在 z/OS® 上執行 IBM® WebSphere MQ 資源配接器,必須使用 wasJmsClient-1.1 或 wasJmsClient-2.0 特性。
- 追蹤和記載功能沒有透過一般 JCA 整合在 Liberty 追蹤系統中。追蹤會寫入至個別的檔案,並且必須設定系統內容來加以啟用。啟用追蹤的程序,與針對「Java™™ 標準環境」配置 WebSphere MQ 類別以使用 JMS 追蹤機能的程序相同。 請參閱 Java 標準環境追蹤段落。
"dropins" 目錄中的應用程式不可能版本化
對於位於 "dropins" 目錄中的應用程式,應用程式監視器會利用檔名和副檔名來判斷應用程式類型,以及產生應用程式 ID 和應用程式名稱。因此,不可能藉由檔名或副檔名,來指定應用程式的版本號碼。在正式作業環境中,不建議您使用 "dropins" 目錄。
「管理中心」特性的限制
Bean 驗證特性的限制
- 不支援在 OSGi 應用程式內進行 Bean 驗證。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
- 不支援在 OSGi 應用程式內進行 Bean 驗證。
- 在 validation.xml 檔中以 beanValidation-1.0 特性提供自訂 ConstraintValidatorFactory 實作的應用程式,不會對 Bean Validation 1.1 API 進行編譯。
動態快取特性限制
- 不支援快取抄寫。
- 只有以隨機大小為基礎的收回技術,才支援高效能磁碟快取模式。
- 在 cachespec.xml 檔中,不支援 Web 服務用戶端和伺服器端快取及 Portlet 快取。
- 不支援進行 SingleThreadModel Servlet 的 Servlet 快取。
- 不支援只含 Enterprise JavaBeans (EJB) 的 JAR 檔利用內容檔來定義快取配置。
- 限制資料堆快取大小只適用於 32 位元 Java 虛擬機器 (JVM)。
ejbLite-3.1 特性限制
- 不支援 3.0 版之前的 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 的鈍化目錄。 檔案會取消於伺服器工作區。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
eventLogging-1.0 特性限制
- 如果將 eventLogging-1.0 特性從正在執行的伺服器移除,會使得已部署的 Web 應用程式重新啟動。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
jpa-2.1 特性限制
對於 jpa-2.1 特性,透過 CORBA/RMI-IIOP 進行的 JPA 實體交換,會要求通訊兩端參與者啟用相同的 JPA 特性層次。
jsp-2.2 特性限制
- 不支援 useInMemory 配置選項只將翻譯的 JSP 檔儲存在記憶體中。
monitor-1.0 特性限制
- 當從 server.xml 檔中移除這個特性時,您必須重新啟動伺服器,JAX-WS 應用程式才能夠運作。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
requestTiming-1.0 特性限制
- 如果將 requestTiming-1.0 特性從正在執行的伺服器移除,會使得已部署的 Web 應用程式重新啟動。
- requestTiming-1.0 特性啟動之後,已證明在以 DayTrader 應用程式進行測量時,對於最大可能的應用程式儲存區產量會帶來 8% 的影響。 您的應用程式所受的影響也許會更大或較小,但您應該知道,有時可能會有明顯的效能降低。
wmqJmsClient-1.1 特性限制
- 您必須手動設定 Windows 環境變數中的 PATH 變數,來指向 WebSphere MQ 安裝 bin 目錄。 當應用程式使用 BINDING 連線模式時,您必須設定這個路徑。
- 在 WebSphere MQ 特性中,不包含適用於 Java 的 wmqJmsClient-1.1 類別(通常稱為 Base Java)。這包含在其他應用程式伺服器的資源配接器中,但在 Java Enterprise Edition 環境中,不建議用於 Base Java API。如需相關資訊,請參閱在 J2EE/JEE 環境中使用 WebSphere MQ Java 介面。
- wmqJmsClient-1.1 特性不支援 WebSphere MQ 資源配接器的 BINDINGS_THEN_CLIENT 傳輸類型。
- 不包含用於 wmqJmsClient-1.1 特性的「進階傳訊安全 (AMS)」特性。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
wmqJmsClient-2.0 特性限制
- 您必須手動設定 Windows 環境變數中的 PATH 變數,來指向 WebSphere MQ 安裝 bin 目錄。 當應用程式使用 BINDING 連線模式時,您必須設定這個路徑。
- 在 WebSphere MQ 特性中,不包含適用於 Java 的 wmqJmsClient-2.0 類別(通常稱為 Base Java)。這包含在其他應用程式伺服器的資源配接器中,但在 Java Enterprise Edition 環境中,不建議用於 Base Java API。如需相關資訊,請參閱在 J2EE/JEE 環境中使用 WebSphere MQ Java 介面。
- wmqJmsClient-2.0 特性不支援 WebSphere MQ 資源配接器的 BINDINGS_THEN_CLIENT 傳輸類型。
concurrent-1.0 特性限制
若為 concurrent-1.0 特性,適用的限制如下:
如果執行緒環境定義是 securityContext 類型,主旨中未使用 JAAS 登入模組來新增的任何自訂資訊將不會延伸。舉例來說,如果提交者的主旨含有 TAI 所新增的自訂「主體」,所延伸的主旨將不會包含這個自訂「主體」。
![[8.5.5.6 或更新版本]](../ng_v8556.gif)
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 屬性)。