Sun Java System Application Server 9.1 版本說明

第 3 章 已知問題和限制

本章介紹 Sun Java System Application Server 9.1 軟體的已知問題以及相關的解決方法。如果摘要敘述未指明特定的平台,則所有平台都可能出現此問題。這些資訊按以下章節進行分類:

管理

本節介紹已知的管理問題以及相關的解決方案。

如果 domain1 不存在,則 package-appclient 程序檔無法使用 (6171458)

說明

依預設,在 $INSTALL/lib/package-appclient.xml 中,asenv.conf 指向的 domain1AS_ACC_CONFIG 變數有一個程序內定值。如果刪除 domain1 並建立新網域,則不會使用新網域名稱更新 AS_ACC_CONFIG 變數,這將導致 package-appclient 程序檔失敗。

解決方案

執行下列動作之一:

  1. 保持 domain1 不變,並在其周圍建立其他網域。

  2. 移除 domain1 並使用新網域名稱替代 $INSTALL/lib/package-appclient.xmldomain1 的程序內定值。

如果 domain1 不存在,則每次建立新的網域時均必須執行此作業。

無法使用其他名稱復原備份的網域 (6196993)

說明

無法使用 backup-domainrestore-domain 指令在同一 Application Server 安裝上執行網域鏡像,因為即使 asadmin restore-domain 指令提供了重新命名網域的選項,您還是無法使用與原始名稱不同的名稱復原網域。重新命名備份的網域看似成功,但嘗試啟動已重新命名的網域卻失敗,因為網域配置中的項目並未變更,並且 startservstopserv 仍使用原始的網域名稱來設定路徑。

解決方案

用於 restore-domain 的網域名稱必須與用於原始 backup-domain 指令的網域名稱相同。Application Server 8.1 中的 backup-domainrestore-domain 指令僅在同一機器上備份和復原同一網域時有效。

不支援同時啟動 Application Server 和其他 JMX 代理程式 (6200011)

說明

在 Application Server 上可以配置 J2SE 1.4.x、5.0 或更高版本。啟動 JMX 代理程式是 J2SE 5.0 平台不可或缺的功能。如果您在伺服器啟動時明確設定系統特性,則會啟動此功能。

範例值包含︰


name="com.sun.management.jmxremote" value="true"
name="com.sun.management.jmxremote.port" value="9999"
name="com.sun.management.jmxremote.authenticate" value="false"
name="com.sun.management.jmxremote.ssl" value="false"

在配置 JMX 特性並啟動伺服器之後,會在 Application Server Virtual Machine 上啟動新的 jmx-connector 伺服器。這一過程的不良副作用是會對管理功能造成不利影響,並且 Application Server 管理主控台和指令行介面可能會產生未預期的結果。問題在於內建 jmx-connector 伺服器與新的 jmx-connector 伺服器之間存在衝突。

解決方案

如果使用 jconsole (或任何其他與 JMX 相容的用戶端),請考慮重新使用在 Application Server 啟動時一起啟動的標準 JMX Connector Server。

該伺服器啟動後,server.log 中會顯示與以下所示類似的行。您可連線至其中指定的 JMXService URL,並在成功提供憑證之後執行相同的管理/配置作業;例如:


[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1|
javax.enterprise.system.tools.admin|_ThreadID=10;|ADM1501: 
Here is the JMXServiceURL for the JMXConnectorServer: 
[service:jmx:rmi:///jndi/rmi://hostname:8686/management/
rmi-jmx-connector]. This is where the remote administrative 
clients should connect using the JSR 160 JMX Connectors.|#]

如需更多資訊,請參閱「Sun Java System Application Server 9.1 Administration Guide」

在 UNIX 上,對 Application Server 啟動和停止程序檔的執行權限限制性過嚴 (6206176)

說明

如果您在以使用者「A」的身份登入時執行 asadmin restore-domain 指令,程序檔會以權限 744 (rwxr--r--) 結束。如果您隨後嘗試以使用者「B」的身份 (即使「B」為超級使用者) 啟動或停止網域,則此操作會失敗,因為僅可對「A」執行這些程序檔。

解決方案

變更程序檔的權限︰


chmod 755 appserv/domains/domain-name/bin/*

負載平衡程式配置檔案不能使用任何 Web 服務的端點 URL 建立 (6236544、6275436)

說明

在使用包含可匯出 Web 服務 URL 之 EJB 模組的應用程式來設定負載平衡程式配置時,此 Web 服務的環境根目錄不包含在所產生的 loadbalancer.xml 檔案中。

解決方案

  1. 編輯 loadbalancer.xml 檔案,按照以下所示增加缺少的 Web 模組:


    <web-module context-root="context-root-name"
    disable-timeout-in-minutes="30" enabled="true"/>
  2. 使用顯示為 EJB 的 Web 服務的環境根目錄名稱替代 context-root-name 值。

Application Server 使用 sun-appserv-admin 重新啟動導致出現 LoginException 錯誤 (6288893)

解決方案

  1. 將現有的 <as_install>/bin/asant 程序檔重新命名為 asant.bak

  2. <as_install>/lib/install/templates/ee (對於 SE/EE 版本) 中的 asant.template 檔案複製到 <as_install>/bin/ 目錄中並重新命名 asant 檔案。

  3. 編輯新複製的 <as_install>/bin/asant 程序檔,並使用 <as_install>/config 替代 %CONFIG_HOME% 記號。

  4. 如果對原始的 asant.bak 檔案進行了任何手動變更,請將這些變更合併至新的 asant 程序檔。

.asadmintruststore 檔案未在 Application Server 文件中介紹 (6315957)

說明

在 Application Server 文件中未說明 .asadmintruststore 檔案。如果伺服器管理員的 home 目錄中不存在此檔案,則升級在此伺服器上代管的某些應用程式時,可能會遇到嚴重錯誤。

解決方案

叢集實例由於連接 JMS 代理程式逾時而無法啟動 (6523663)

說明

Application Server 叢集實例的預設 MQ 整合模式為 LOCAL。當 Application Server 的安裝位置 (PATH) 很長 (顯示為「not short」) 時,imqbrokerscv.exe 便會在叢集實例啟動時當機。此問題屬於 imqbrokersvc 中的記憶體分配問題。

解決方案

叢集實例的 JMS 服務類型必須從預設的 LOCAL 變更為 REMOTE。在該配置中,所有實例都指回 DAS 代理程式。請依照以下說明在 REMOTE 模式中配置叢集。


備註 –

當使用 REMOTE 模式時,所有實例均使用一個代理程式 (DAS),因此在 Application Server 叢集啟動時,不會建立任何代理程式叢集。如需更多資訊,請參閱 http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt 這一頁中第 4.1 節,第 iii 部分中的「Auto-clustering」。上述功能將無法使用!


Procedure使用指令行

開始之前

依據您的環境修改連接埠與密碼檔案。請注意,在以下說明中,叢集名稱為 racluster,DAS 管理連接埠為 5858,DAS JMS 連接埠為 7676

  1. 修改叢集配置,將 JMS 類型變更為 REMOTE


    $AS91_HOME/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    $AS91_HOME/bin/password_file racluster.jms-service.type=REMOTE
  2. 建立與 DAS JMS 主機對應的 JMS 主機。


    $AS91_HOME/bin/asadmin.bat create-jms-host --port 5858 --user admin --passwordfile \
    $AS91_HOME/bin/password_file --target racluster --mqhost localhost --mqport 7676 \
    --mquser admin --mqpassword admin dashost
  3. 將預設 JMS 主機設定為在上一步驟中建立的 DAS JMS 主機。


    $AS91_HOME/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    $AS91_HOME/bin/password_file racluster.jms-service.default-jms-host=dashost

Procedure使用管理 GUI

  1. 移至 [配置] -> [cluster_name-config] -> [Java 訊息服務] -> [JMS 主機]。

  2. 按一下 [新增] 以建立新的 JMS 主機,將其命名為 dashost

  3. 輸入與 DAS 的 JMS 服務對應的配置設定,預設設定如下所示︰

    • 主機名稱︰localhost

    • 連接埠︰7676

    • 管理使用者︰admin

    • 密碼︰admin

    依據您 DAS JMS 服務的需要修改上述設定。

  4. 瀏覽回 [Java 訊息服務] 標籤,然後將 JMS 服務類型變更為 REMOTE (預設為 LOCAL)。

  5. 從 [default-jms-host] 下拉式清單中選擇 [dashost]。

  6. 儲存變更,然後啟動節點代理程式或叢集。

無法在 Netscape 8.1.3、Mozilla 1.7 和 Safari 2.0.4 等瀏覽器中顯示 jmaki 圖表 (6543014)

說明

當嘗試使用某些不支援的瀏覽器顯示 [記錄統計監視] 頁面中的圖表時,可能會丟出以下錯誤︰


Error loading jmaki.widgets.jmaki.charting.line.Widget : id=form1:jmaki_chart11
Script: http://easqelx5.red.iplanet.com:4848/resources/jmaki/charting/ \
line/component.js (line:5437).
Message: area.initialize is not a function

解決方案

使用支援的瀏覽器。請參閱瀏覽器,以取得 Application Server 9.1 支援的瀏覽器清單。

預設連接埠在每個 AS 重大發行版本中都有所變更 (6566481)

說明

預設管理連接埠在過去的三個重大 Application Server 發行版本中均不相同。具體而言,7.x、8.x 和 9.x 中的預設管理連接埠分別為︰

解決方案

這不是錯誤,但也是一個值得注意的問題。預設管理連接埠只是一個建議使用的連接埠。預期未來的 Application Server 發行版本將保留預設的 4848 連接埠。

Apache 和負載平衡程式外掛程式

本節說明 Apache Web Sever 和負載平衡程式外掛程式的已知問題和相關解決方案。

「高可用性管理指南」中有關將 openssl 用於 Apache 的說明不正確 (6306784)

編譯和建置 openssl 時,請執行以下指令:

cd openssl-0.9.7e

config

make

同樣,對於 Apache 1.3,mod_ssl 來源的目錄名稱取決於所使用的 Apache 發行版本。例如,對於 Apache 1.3.33,名稱為 mod_ssl-2.8.22-1.3.33

「高可用性管理指南」未說明如何在 Apache 2.0 中使用憑證 (6307976)

若要執行 Apache 安全性,必須使用憑證。如需有關從憑證授權單位取得憑證的說明,請參閱 modssl FAQ 中有關憑證的資訊。

必須以超級使用者身份啟動 Apache Web Server (6308021)

在 Solaris 上,如果已將 Application Server 安裝在根目錄下,則必須以超級使用者的身份啟動 Apache Web Server。以超級使用者的身份安裝 Java Enterprise System。以超級使用者的身份啟動 Apache 2.0 後,Apache 會切換為您定義的其他使用者並執行。您在 /conf/httpd.conf 檔案中定義了該使用者。若要以超級使用者的身份啟動,在許多系統上您均必須編輯 httpd.conf 檔案,以定義正確的群組。將行:

Group #-1

替代為

Group nobody

有關使用者/群組用法的更多資訊包含在 httpd.conf 檔案中。

應用程式用戶端

本節介紹已知的應用程式用戶端問題以及相關的解決方案。

應用程式用戶端歸檔中封裝的程式庫 JAR 會覆寫清單檔案 (6193556)

說明

如果在您的用戶端 JAR 內部具有頂層 JAR 檔案 (在此情況下為 reporter.jar),則當您部署用戶端 JAR 時,該 JAR 的清單檔案將覆寫用戶端 JAR 的清單檔案。

解決方案

目前尚無解決方案。

ACC 始終嘗試連線至 localhost:3700 (6527987)

說明

應用程式用戶端始終嘗試連線至 localhost:3700。問題在於呼叫用戶端程式碼之前,需要讀取數個系統特性。

解決方案

將以下內容設定為系統特性 (-D 位於 JAVA_CMD 中)。請在應用程式用戶端程式碼中設定它們︰


org.omg.CORBA.ORBInitialHost = server_instance_host
org.omg.CORBA.ORBInitialPort = server_instance_port

無法啟動網域,缺少 sunpkcs11.jar (6571044)

說明

在 64 位元 Linux 上執行時,啟動網域時會出現以下異常。問題在於 jdk1.5.0_11/jre/lib/ext/ 下缺少 sunpkcs11.jar

解決方案

這是 64 位元 Linux 上的已知 JDK 錯誤,將在 JDK 1.5.0_13 中進行修正。

ASQuickStartup 中斷了 SocketChannel.keyFor(),傳回 Null,而非 SelectionKey (問題追蹤代碼 3027)

說明

在數個選擇器上註冊 SocketChannel 時,執行 socketChannel.keyFor(lastRegisteredSelector) 會傳回 Null,而非 SelectionKey

解決方案

此問題與 JDK 錯誤 6562829 相關,預計在 6.0 U3 中修正。Application Server 9.1 中已經提供了解決方法,以便在呼叫 keyFor API 之前展開選擇器。這樣,將繼續使用 keyFor,直至修正了 JDK 錯誤。

隨附的 Sun JDBC 驅動程式

本節介紹已知的附帶的 Sun JDBC驅動程式問題以及相關的解決方案。

PreparedStatement 錯誤 (6170432)

描述 1

如果應用程式在一個作業事件中產生 3000 個以上 PreparedStatement 物件,DB2 可能會遇到以下錯誤︰

[sunm][DB2 JDBC Driver] No more available statements.Please recreate your package with a larger dynamicSections value.

解決方法 1

將以下特性增加到連線區定義中,以使用更大的動態區段值來使驅動程式重新連結 DB2 封裝︰

createDefaultPackage=true replacePackage=true dynamicSections=1000

如需有關配置連線池的詳細資訊,請參閱「Sun Java System Application Server 9.1 Administration Guide」

描述 2

與上述 PrepardStatement 錯誤相關,可能丟出其他錯誤訊息:

[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.

解決方法 2

增大 DB2 伺服器配置參數 APPLHEAPSZ。合適的值為 4096

描述 3

隔離層級 TRANSACTION_SERIALIZABLE。如果應用程式使用隔離層級 TRANSACTION_SERIALIZABLE,並使用上述建議的參數之一,則應用程式在取得連線時可能會掛機。

解決方法 3

若要為連線設定所需的隔離層級,必須在此隔離層級建立相應的連線區。如需有關說明,請參閱「Sun Java System Application Server 9.1 Administration Guide」

Java DB 不會在重新啟動機器或啟動 Application Server 之後啟動 (6515124)

說明

隨附的 Java DB 資料庫不會在重新啟動主機系統或 Solaris 區域,或啟動 Application Server 之後自動重新啟動。這不是錯誤,而是所有隨附應用程式或協力廠商應用程式的預期運作方式。問題在於 Java DB 必須在 Application Server 實例之前啟動。

解決方案

重新啟動主機電腦或 Solaris 區域之後,務必在啟動 Application Server 之前啟動 Java DB,例如︰


/opt/SUNWappserver/appserver/bin/asadmin start-database

如需有關 asadmin 指令選項的更多資訊,請參閱「Sun Java System Application Server 9.1 Quick Start Guide」

說明文件

本節說明已知的文件問題以及相關的解決方案。

Javadoc 不一致 (不同的 ID)

用於多個 AMX 介面與方法的 Javadoc 缺漏或不正確:

隨附的 ANT 丟出 java.lang.NoClassDefFoundError (6265624)

說明

在「主」執行緒中丟出以下異常 java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher

解決方案

不建議將隨附的 ANT 用於 Application Server 以外的軟體。

Id︰

6615557

摘要︰

已本土化線上說明中缺少 [內容] 標籤下的 3 個頁面

說明︰

已本土化線上說明中缺少 [內容] 標籤下的以下 3 個頁面︰

- 資源 -> Java 郵件階段作業 -> 管理 Java 郵件階段作業目標

- 資源 -> 連接器 -> 編輯連線池特性

- 連接器 -> 編輯連線池特性 -> 管理安全對映

解決方法︰

請使用這些頁面的英文版線上說明。

高可用性

本節說明已知的高可用性資料庫 (HADB) 問題以及相關的解決方案。

具有雙網路的 HADB 配置 (無 ID)

在兩個子網路上配置為具有雙網路的 HADB,在 Solaris SPARC 上工作正常。然而,我們發現由於作業系統的問題或同一硬體平台上的網路驅動程式,Solaris x86 與 Linux 平台並不總能正確處理雙網路。這將引起 HADB 的以下問題:

HADB 資料庫建立失敗 (無 ID)

說明

建立新資料庫可能失敗並顯示以下錯誤,表示可用的共用記憶體區段不足:

HADB-E-21054:System resource is unavailable:HADB-S-05512:Attaching shared memory segment with key "xxxxx" failed, OS status=24 OS error message:Too many open files.

解決方案

驗證是否已配置共用記憶體,以及配置是否能夠正常工作。尤其,在 Solaris 8 上,檢視檔案 /etc/system,並檢查變數 shmsys:shminfo_shmseg 的值是否至少為每個主機上節點數目的六倍。

hadbm set 不會檢查資源可用性 (磁碟與記憶體空間) (5091280)

說明

當使用 hadbm set 增加裝置或緩衝區大小時,管理系統會在建立資料庫或增加節點時檢查資源可用性,但不會在裝置或主記憶體緩衝區大小變更時檢查是否有足夠的可用資源。

解決方案

增加任何 devicesizebuffersize 配置屬性之前,驗證所有的主機上是否有足夠的可用磁碟/記憶體空間。

不支援 packagepath 的不同路徑 (5091349)

說明

不可能在不同主機的不同位置使用相同名稱註冊同一套裝軟體,例如:


hadbm registerpackage test --packagepath=/var/install1 --hosts europa11
Package successfully registered.
hadbm registerpackage test --packagepath=/var/install2 --hosts europa12
hadbm:Error 22171: A software package has already been registered with 
the package name test.

解決方案

HADB 不支援資料庫叢集中跨節點的不同路徑。請確定 HADB 伺服器安裝目錄 (--packagepath) 在所有參與的主機上均相同。

createdomain 可能會失敗 (6173886、6253132)

說明

當在具有多個網路介面的主機上執行管理代理程式時,如果所有的網路介面不在同一子網路上,則 createdomain 指令可能失敗:


hadbm:Error 22020: The management agents could not establish a 
domain, please check that the hosts can communicate with UDP multicast.

管理代理程式將 (如果未另行配置) 使用「第一個」介面進行 UDP 多重播送 (java.net.NetworkInterface.getNetworkInterfaces() 結果所定義的「第一個」)。

解決方案

最佳解決方案是告訴管理代理程式要使用的子網路 (在配置檔案中設定 ma.server.mainternal.interfaces,例如 ma.server.mainternal.interfaces=10.11.100.0)。另一種方法是,將子網路間的路由器配置為路由多重播送資料封包 (管理代理程式使用多重播送位址 228.8.8.8)。

嘗試管理代理程式的新配置之前,您必須清除管理代理程式儲存庫。停止網域中的所有代理程式,並刪除儲存庫目錄 (由管理代理程式配置檔案中的 repository.dr.path 識別) 中的所有檔案和目錄。必須先在所有主機上完成此作業,方可使用新配置檔案重新啟動代理程式。

啟動、停止和重新配置 HADB 可能會失敗或當機 (6230792、6230415)

說明

在 Solaris 10 作業系統上,使用 hadbm 指令啟動、停止或重新配置 HADB 可能會失敗或當機,並顯示下列錯誤之一:


hadbm:Error 22009: The command issued had no progress in the last 
300 seconds.
HADB-E-21070: The operation did not complete within the time limit, 
but has not been cancelled and may complete at a later time.

當讀取/寫入 clu_noman_srv 程序使用的檔案 (nomandevice) 不一致時,可能發生此情況。可透過在 HADB 歷史檔案中尋找以下訊息來偵測此問題:


n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
does not respond.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 
104.537454 sec.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
did not start.

解決方案

由於無法手動再現此問題,因此下列的解決方法尚未經過驗證。但是,對受影響的節點執行此指令應該可以解決此問題。


hadbm restartnode --level=clear nodeno dbname

請注意,該節點的所有裝置均會被重新初始化。重新初始化之前,您可能必須停止節點。

管理代理程式終止,並顯示異常 "IPV6_MULTICAST_IF failed" (6232140)

說明

在安裝了數個 NIC 卡並執行 Solaris 8 的主機上啟動時,如果同時包含已啟用 IPv6 和 IPv4 的卡,則會終止管理代理程式,並顯示異常 "IPV6_MULTICAST_IF failed."

解決方案

將環境變數 JAVA_OPTIONS 設定為 -Djava.net.preferIPv4Stack=true,例如:


export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

或者,使用 Solaris 9 或更高版本,其不會出現該問題。

clu_trans_srv 無法中斷 (6249685)

說明

在 64 位元版本的 Red Hat Enterprise Linux 3.0 中存在一個錯誤,可在執行非同步化 I/O 時導致 clu_trans_srv 程序在不可中斷模式中結束。這意味著強制結束 -9 不能解決問題,必須重新啟動作業系統。

解決方案

使用 32 位元版本的 Red Hat Enterprise Linux 3.0。

hadbm 不支援包含大寫字母的密碼 (6262824)

說明

將密碼儲存在 hadb 中時,密碼中的大寫字母會被轉換為小寫字母。

解決方案

不使用含有大寫字母的密碼。

從 HADB 版本 4.4.2.5 降級至 HADB 版本 4.4.1.7 會導致管理代理程式失敗,並顯示不同的錯誤代碼 (6265419)

說明

當降級至舊的 HADB 版本時,管理代理程式可能會失敗,並顯示不同錯誤代碼。

解決方案

雖然可以降級 HADB 資料庫,但是如果已變更了儲存庫物件,則管理代理程式可能無法降級。降級後,必須使用最新版的 HADB 中的管理代理程式。

安裝/移除與 symlink 保留 (6271063)

說明

關於安裝/移除 HADB c 套裝軟體 (Solaris:SUNWhadbc,Linux:sun-hadb-c) 版本 <m.n.u-p>symlink /opt/SUNWhadb/<m> 自建立後將永遠不會變更。因此,可能存在孤立的 symlink

解決方案

如果不使用,請在安裝之前或解除安裝之後刪除 symlink

全域區域和本機區域中的管理代理程式可能會衝突 (6273681)

說明

在 Solaris 10 上,使用 ma-initd 程序檔停止全域區域中的管理代理程式時,也會停止本機區域中的管理代理程式。

解決方案

不同時在全域區域和本機區域中安裝管理代理程式。

當階段作業物件在 MA 處逾時並刪除時,hadbm/ma 應該顯示更準確的錯誤訊息 (6275103)

說明

有時,伺服器上的資源競爭狀態問題可能會導致管理用戶端連線中斷。重新連線後,可能會傳回不正確的錯誤訊息 "hadbm:Error 22184:A password is required to connect to the management agent"

解決方案

有時,伺服器上的資源競爭狀態問題可能會導致管理用戶端連線中斷。重新連線後,可能會傳回不正確的錯誤訊息 "hadbm:Error 22184:A password is required to connect to the management agent"

檢查該伺服器上是否存在資源問題,並採取適當措施 (例如,增加更多資源),然後重試該作業。

非超級使用者不能管理 HADB (6275319)

說明

使用 Java Enterprise System (以超級使用者的身份) 安裝 HADB 後不允許非超級使用者管理 。

解決方案

始終以超級使用者身份登入以管理 HADB。

管理代理程式不應該使用特殊用途的介面 (6293912)

說明

不應將包含 0.0.0.0 之類 IP 位址的具有特殊用途的介面註冊為管理代理程式中的 HADB 節點所使用的有效介面。如果透過使用者使用主機名稱而非 IP 位址發出 hadbm create 指令,在此類介面上設定 HADB 節點,則註冊此類介面可能會導致問題發生。之後節點將無法通訊,並導致 create 指令掛機。

解決方案

當在包含多重介面的主機上使用 hadbm create 時,請始終使用 DDN 表示法明確指定 IP 位址。

在 Windows 上出現重新組合故障 (6291562)

說明

在 Windows 平台上,由於某些配置和負載,作業系統中可能會出現大量的重新組合故障。在具有多於二十個節點的配置平行執行數個表掃描 (select *) 時,曾發生此問題。此問題表現為作業事件頻繁中斷、修復或回復需較長時間才能完成,以及多種系統零件可能會頻繁逾時。

解決方案

若要修正此問題,可將 Windows 登錄變數 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 設定為大於預設值 100 的值。建議您將此值提高到 0x1000 (4096)。如需更多資訊,請參閱 Microsoft 支援頁面中的文章 811003

如果瀏覽器的另一個 Cookie 帶有 / 路徑,則無法維護階段作業狀態 (6553415)

說明

帶有「/」路徑的 Cookie 與在「/」以外的環境根目錄中部署的高可用性 Web 應用程式 (使用記憶體中複製做為其持續性類型) 之 Cookie 相衝突, 使得高可用性 Web 應用程式無法維護任何 HTTP 階段作業狀態。當使用同一個瀏覽器同時存取管理 GUI (在「/」中部署) 和高可用性 Web 應用程式時,通常會發生這種狀況。

解決方案

使用其他瀏覽器存取在「/」中部署的 Web 應用程式。

負載平衡程式無法與 IIS 6 配合使用;<appserver-install>/lib 下缺少 SASL32.DLLZLIB.DLL (6572184)

說明

負載平衡程式需要有 SASL32.DLLZLIB.DLL 檔案,才能與 Windows IIS 6 配合使用。<appsrver-install>/lib 下目前沒有這兩個檔案。

解決方案

將這兩個 DLL 檔案手動複製到 <appserver-install>/lib。可以從以下位置下載這兩個檔案︰


http://download.java.net/javaee5/external/<OS>/aslb/jars/aslb-9.1-MS4-b5.jar

其中 <OS> 表示所需的平台, 它可以是以下任何一個值︰

全域區域中存在 DAS 建立/啟動和 HA 套裝軟體傳遞問題 (6573511)

說明

在全域區域中透過高可用性套裝軟體安裝或解除安裝 Application Server 時,會出現兩個問題︰

  1. HA 套裝軟體會安裝在所有區域中 ,但執行者不一定希望如此。

  2. 當解除安裝時,所有區域的 HA、MQ、JDK 等套裝軟體也會遭到移除,執行者也不一定希望如此。

從本機根區域中執行安裝或解除安裝動作時,便不會出現此問題。

解決方案

從本機根區域而非全域區域執行安裝和解除安裝。

在「/」中部署的高可用性 Web 應用程式無法繼續記憶體中複製的 HTTP 階段作業 (問題追蹤代碼 2972)

說明

當「/」中部署的高可用性 Web 應用程式使用記憶體中複製做為其持續性類型時,它們無法維護任何 HTTP 階段作業。

解決方案

將使用記憶體中複製做為其持續性類型的高可用性 Web 應用程式部署到「/」以外的環境根目錄中。如果您要使此類 Web 應用程式位於「/」下,應該將其指定為部署了 Web 應用程式之虛擬伺服器的預設 Web 模組。

AS 負載平衡程式安裝程式未將 /usr/lib/mps 路徑置於 apachectl LD_LIBRARY_PATH 下,因此無法啟動 Apache SSL (6591878)

說明

在 Solaris 上安裝適用於 Apache 的 Application Server 負載平衡程式時,安裝程式將更新 apachectl 程序檔中的 LD_LIBRARY_PATH。但是,安裝程式不會正確地寫入 /usr/lib/mps 路徑。在 Solaris 上,如果此路徑不在 LD_LIBRARY_PATH 下,Apache 安全性實例便不會啟動。

解決方案

此問題只在 Solaris 平台上存在。若要解決此問題,請將 /opt/SUNWappserver/appserver/lib/lbplugin/lib 增加至 LD_LIBRARY_PATH

針對實例/叢集啟用/停用負載平衡程式應該顯示正確的狀態 (6595113)

說明

在 [叢集/實例] 一般頁面上,無論 domain.xml 中儲存何種內容,[啟用負載平衡] 按鈕始終處於啟用狀態。

解決方案

AS9.1 EE IFR b58f/JES5 UR1。無法安裝 Registry Server,因為偵測到「不完整」的 HA。(6602508)

說明

(僅適用於 Solaris) 在帶有 HADB 的 SPARC Solaris 10 上安裝 Application Server 9.1 之後,啟動 Application Server 並嘗試安裝帶有 Registry Server 的 JES 5 UR1 時可能顯示以下錯誤︰


Dependency Error:  Installation can not proceed because the version of HA
Session Store 4.4.3 detected on this host is incomplete , and a compatible
version is required by Servervice Registry Deployment Support.

解決方案

在 Solaris 機器上,不能使用 Application Server 9.1 IFR 從 JES 5 UR1 安裝 Registry Server。Registry Server 套裝軟體必須使用 pkgadd 指令從以下 JES5 UR1 發行目錄手動安裝︰


<path>/<OS>/Products/registry-svr/Packages

IE 6.0 瀏覽器特有的問題︰匯出負載平衡程式配置檔案丟出錯誤 (6516068)

說明

(僅適用於 Internet Explorer 6) 當嘗試從 Internet Explorer 6 匯出負載平衡程式配置檔案 (loadbalancer.xml) 時,瀏覽器顯示錯誤訊息,表示無法找到 sun-loadbalancer_1_2.dtd DTD 檔案。

解決方案

若要儲存該檔案,請使用以下解決方案︰

  1. 在 Internet Explorer 中的 [負載平衡程式] 頁面上,按一下 [匯出]

    將顯示「無法顯示 XML 頁面」訊息。

  2. 按一下錯誤訊框,然後在 Internet Explorer 中選擇 [檔案] -> [另存新檔]

  3. loadbalancer.xml 檔案儲存到您選擇的目錄。

安裝

本節說明已知的安裝問題以及相關的解決方案。

在某些 Linux 系統上,按一下 [完成] 按鈕之後,安裝關閉會當機 (5009728)

說明

已在多個 Linux 系統中發現此問題。此問題在 Java Desktop System 2 中最為常見,也見於 Linux Red Hat 發行軟體中。

在最後的安裝程式螢幕上按一下 [完成] 按鈕之後,安裝程式無法啟動包含產品 [關於] 頁面或產品註冊頁面的瀏覽器視窗,且無限期當機,並不返回指令提示。

解決方案

在啟動安裝程式的終端機視窗中按下 Ctrl+C 以結束安裝程式。執行完此步驟後,有時會啟動包含產品 [關於] 頁面或註冊頁面的瀏覽器視窗,但如果未顯示該視窗,請啟動瀏覽器並輸入以下 URL 以檢視 [關於] 頁面:


file://install_dir/docs-ee/about.html

如果您還選取安裝選項以註冊產品,請使用產品 [關於] 頁面上的連結進入註冊頁面。

在 Windows 上,imq 目錄需要在安裝期間建立 (6199697)

說明

在 Windows 上,Application Server Enterprise Edition 安裝一經完成,Message Queue 代理程式便會啟動失敗,並顯示訊息表明 drive:\as\domains\domain1\imq 目錄不存在。

請注意,如果在啟動 domain1 之後啟動此代理程式,則 Application Server 會建立此目錄並且不會發生此問題。

解決方案

  1. 在建立代理程式前建立 var_home_dir_location


    $imqbrokerd -varhome var_home_dir_location
    

    例如︰


    $imqbrokerd -varhome D:\as\domains\domain1\imq

在 Windows Vista 上安裝 SDK 時出現假警告 (6533646)

說明

在 Windows Vista 上安裝隨附的 SDK 時,可能會遇到錯誤「Unsupported Installation Platform Detected」。但是,安裝會繼續完成,且不會出現任何問題。

解決方案

這實際上並不是問題。Application Server 在 Windows Vista 上執行,將在未來的產品版本中移除這一錯誤訊息。

解除安裝不會正確更新 productregistry 檔案,無法使用無訊息模式進行安裝 (6571598)

說明

如果 Application Server productregistry 檔案包含共用元件配置,Application Server 解除安裝程序便不會正確更新 productregistry 檔案,您將無法在後續的安裝中使用無訊息模式,除非重新命名或移除 productregistry 檔案。依設計,productregistry 檔案中的共用元件項目保持完整,但是會導致與後續無訊息安裝混淆。

解決方案

解除安裝記錄檔回報解除安裝成功完成之後,請在執行後續安裝之前刪除 productregistry 檔案。若要驗證之前的解除安裝是否成功完成,請在 <install_dir> 中尋找 appserv_uninstall.class 檔案。如果解除安裝成功完成,此檔案便存在。


備註 –

如果解除安裝未成功完成,請勿刪除 productregistry


productregistry 檔案在 Solaris 上位於 /var/sadm/install 中;在 Linux 上位於 /var/tmp 中。

IFR 無法在稀疏本機區域中安裝 AS,這是 MQ 套裝軟體的問題。(6555578)

說明

在稀疏本機區域中安裝 Application Server 時,如果未事先安裝 Message Queue (MQ),此安裝便會失敗。安裝程式嘗試安裝 MQ,然後整個安裝失敗。

解決方案

在稀疏本機區域中安裝 Application Server 之前,必須在全域區域中手動安裝 MQ。有兩種方法來解決此問題︰

  1. 在全域區域中使用包含 Application Server 9.1 IFR 安裝的媒體手動安裝 MQ 4.1,以取得最新版本的 MQ 套裝軟體。

    1. 使用與您的平台對應的安裝程式︰


      mq4_1-installer-SunOS.zip
      mq4_1-installer-SunOS_X86.zip
      mq4_1-installer-Linux_X86.zip
      mq4_1-installer-WINNT.zip
    2. 解壓縮位元,然後執行安裝程式。

      安裝程式位於 mq4_1-installer 目錄中。

  2. 在全域區域中安裝 IFR 安裝元件。該動作會檢查全域區域中 MQ 的版本,必要時會升級到 Application Server 9.1 IFR 中隨附的版本。均等選取並安裝範例應用程式元件可將 MQ 升級到 IFR 版本。

    1. 在全域區域中執行 Application Server 安裝,但是僅選取範例元件。

      安裝範例元件會導致在所有區域中安裝 MQ 和 Application Server 共用元件。

    2. 再次執行 Application Server 安裝,這次是在本機稀疏區域中進行。

      安裝將順利完成,不會出現任何問題。

必須移除 IFR 安裝 -console 提示︰「Do you want to upgrade from previous Application?」(6592454)

說明

使用 —console 選項 (指令行模式) 執行 Application Server 9.1 IFR 安裝程式時,系統會提示您︰


Do you want to upgrade from previous Application Server version?

但是,IFR 安裝程式不支援此類升級,因此該提示是錯誤的。如果您針對此提示回答「是」,安裝會正常繼續,但不會指明是執行了完整安裝,而非升級。

解決方案

如果您要升級 Application Server 安裝,請使用升級工具。

Java EE Tutorial

若要執行有關 Sun Java System Application Server 9.1 的「Java EE 5 Tutorial」,請執行以下作業︰

「Java EE Tutorial」範例中的 MDB 故障 (6591307)

說明

「The Java EE 5 Tutorial」中的第 32 章「Java EE Examples Using the JMS API」「The Java EE 5 Tutorial」中的「An Application Example That Consumes Messages from a Remote Server」中,此範例不再有效。MDB 無法接收訊息。另外兩個在兩個系統間傳送訊息的範例仍然能夠正常使用 (「The Java EE 5 Tutorial」中的「Running JMS Client Programs on Multiple Systems」「The Java EE 5 Tutorial」中的「An Application Example That Deploys a Message-Driven Bean on Two Servers」)。

解決方案

將在以後的 Application Server 建置中進行修正。

Java 持續性

TopLink 預期 Collection 欄位/特性可複製 ( 代碼 556)

說明

如果使用 java.util.Arrays.asList() API 將 Object[] 轉換為 Collection,JDK 便會傳回不可複製的 java.util.ArrayList 之實作。這樣會導致出現以下異常︰


The method invocation of the method [protected native java.lang.Object 
java.lang.Object.clone() throws java.lang.CloneNotSupportedException] on the object 
[[pkg.A id = xxx]], of class [class java.util.Arrays$ArrayList], triggered an 
exception. Internal Exception: java.lang.reflect.InvocationTargetException Target 
Invocation Exception: java.lang.CloneNotSupportedException: 
java.util.Arrays$ArrayList

此問題在 https://glassfish.dev.java.net/issues/show_bug.cgi?id=556 中也被提及。

解決方案

使用其建構子建立另一集合;例如︰


myCollection = new ArrayList(java.util.Arrays.asList(a))

生命週期管理

本節說明已知的生命週期管理問題以及相關的解決方案。

設定 ejb-timer-service 特性導致 set 指令失敗 (6193449)

說明

ejb-timer-service 特性 minimum-delivery-interval 設定為 9000 之後,嘗試將 ejb-timer-service 特性 redelivery-interval-in-mills 設定為 7000 會導致 set 指令失敗,並出現以下錯誤︰


[echo] Doing admin task set
[exec] [Attribute(id=redelivery-interval-internal-in-millis) : 
Redelivery-Interval (7,000) 
should be greater than or equal to Minimum-delivery-interval-
in-millis (9,000)]
[exec] CLI137 Command set failed.

問題在於,將重新傳送間隔特性與最小傳送特性相聯繫的邏輯不正確,並阻止您使用 GUI 或 CLI 設定任何最小傳送間隔大於重新傳送間隔的值。

minimum-delivery-interval-in-millis 必須一律設定為等於或高於 ejb-timer-service 特性 redelivery-interval-in-millis。問題在於,Application Server 驗證 redelivery-interval-in-millis 的值是否大於 minimum-delivery-interval-in-millis 的值時,驗證檢查方法是錯的。

解決方案

使用這些特性的預設值,如下所示:


minimum-delivery-interval(default)=7000
redelivery-interval-in-millis(default)=5000

這些預設值以外的值將會產生錯誤。

當列出非 DAS 配置內的 JMS 實體目標時丟出錯誤 (6532532)

說明

如果您要嘗試檢視使用 default-config 的 JMS 實體目標,便會出現一則錯誤訊息。

解決方案

這是預期的運作方式。在 Application Server 9.1 中,default-config 是配置資訊範本,因此無法針對 default-config 執行 JMS 作業 (如 listcreate)。但是,可以針對叢集或獨立實例的配置執行 JMS 作業。

僅適用於 Win2003︰非分頁池記憶體發生錯誤,中斷 tcp 堆疊和 richaccess 測試 (6575349)

說明

(僅適用於 Windows 2003) 執行豐富存取功能時,Windows 2003 系統上會出現記憶體錯誤。出現此問題是因為 Win32 非分頁池一直在增長,最終導致整個 TCP/IP 堆疊出現錯誤。一旦出現此故障,TCP/IP 堆疊便處於可回復狀態,復原它的唯一方式是重新啟動 Windows 2003 系統。

解決方案

這是一個 Microsoft 問題 (問題編號︰SRX070906600011),已有修補程式可修復此問題。如需更多資訊,請連絡 Microsoft 支援

解決方法

除了上述修補程式之外,此問題還有兩種解決方法。

  1. 透過配置 domain.xml http-listener 屬性 blocking-enabled="true" 使用 Grizzly 阻斷模式,或者增加以下 http-listener 特性︰


    <property name="blocking" value="true"/>
  2. 使用 Windows Vista 或 Windows XP。

記錄

本節說明已知的記錄問題以及解決方案。

設定 access,failure 的除錯敘述導致 Application Server 啟動當機 (6180095)

說明

設定 JVM 的 java.security.debug 選項將導致伺服器實例啟動時凍結並成為死結;例如,在 domain.xml 中進行以下設定會導致該問題:


<jvm-options>-Djava.security.debug=access,failure</jvm-options>

解決方案

目前尚無解決方案。請避免設定此標幟。

Message Queue

本節說明已知的 Java Message Queue 問題以及相關的解決方案。

在與時間相關的特定情況下,JMS 重新連線無法成功完成 (6173308、6189645、6198481、6199510、6208728)

說明

在與時間相關的方案中重新連線失敗可能是由多個問題導致的。

解決方案

您可以透過以下方法解決這些問題:

MQ 代理程式無法在帶有叢集設定檔的 Linux 上啟動 (6524871)

說明

在 Linux 系統上建立帶有叢集設定檔的網域之後,可能會遇到 java.lang.OutOfMemoryError: Java heap space 錯誤,由於 MQ 代理程式未啟動,伺服器實例也可能無法重新啟動。出現此狀況之後,系統便無法再回復。出現此問題是因為 /etc/hosts 檔案配置錯誤;具體而言,伺服器主機名稱將指向迴路位址 127.0.0.1

解決方案

依設計,MQ 代理程式叢集不能在網路裝置配置為指向迴路位址的情形下啟動。這不是錯誤。解決方案是確保 Application Server 主機的 /etc/hosts 檔案不指向 127.0.0.1

監視

本節介紹已知的監視問題和相關的解決方案。

有些 HTTP 服務監視統計不能提供有用的資訊,應該將其忽略 (6174518)

說明

當檢視 HTTP 服務中某些元素的監視統計時,某些顯示的值與目前值不對應,或始終為 0。具體來說,下列 HTTP 服務統計不顯示適用於 Application Server 的資訊,應該將其忽略:

解決方案

在以後的版本中,將移除這些監視,並由更適當的資訊取代。

從管理 UI 開啟 JNDI 瀏覽會在 server.log 中傾印大量異常 (6591734)

說明

從管理 GUI 開啟 JNDI 瀏覽器時,會丟出許多異常。

解決方案

目前尚無解決方案。

範例

本節說明與 Application Server 9.1 產品中包含的範例代碼相關的已知問題及其相應的解決方案。

文件並未明確說明需要建立 JMS 資源 (6198003)

說明

文件並未明確說明在執行 asadmin 部署指令之後,需要在執行 MQ 容錯移轉範例應用程式之前建立 JMS 資源。

拋出的錯誤如下:


/opt/SUNWappserver/domains/domain1/config/sun-acc.xml -name 
MQFailoverTestClient -textauth -user j2ee -password j2ee
Nov 18, 2004 10:50:17 PM com.sun.enterprise.naming.NamingManagerImpl 
bindObjects
SEVERE: NAM0006: JMS Destination object not found: jms/durable/TopicA
Nov 18, 2004 10:50:18 PM com.sun.enterprise.naming.NamingManagerImpl 
bindObjects
SEVERE: javax.naming.NameNotFoundException
javax.naming.NameNotFoundException

文件並未明確說明如果使用 asadmin deploy 指令進行手動部署,則必須手動建立 JMS 資源,以及應該使用提供的 ant 目標來部署範例應用程式。

解決方案

對於 build.xml 程序檔 (該程序檔可建立執行應用程式所需的 JMS 資源),請使用 asant 部署目標。

在 Linux 上,在 Web 服務/安全性範例中建立憑證期間出現執行階段錯誤 (6198239)

說明

在 Linux 上部署 install_dir/samples/webservices/security 範例 (basicSSl) 時,並未建立憑證,並且丟出如下類似錯誤:


generate_certs: [echo] ***Exporting certificate from NSS database 
[exec] Result: 1 [echo] ***Generating Java Keystore from generated 
certificate [exec] keytool error: java.lang.Exception: Input not an 
X.509 certificate [exec] Result: 1 [echo] ***Generating Java trust 
store from generated certificate [exec] keytool error: java.lang.
Exception: Input not an X.509 certificate [exec] Result: 1
.
.
.
generate_certs: [echo] ***Exporting server certificate from NSS database to 
a PKCS12 certificate file [exec] /opt/sun/appserver/lib/pk12util: /usr/lib/
libnss3.so: version `NSS_3.9' not found (required by /opt/sun/appserver/lib/
pk12util) [exec] /opt/sun/appserver/lib/pk12util: /usr/lib/libnss3.so: 
version `NSS_3.6' not found (required by /opt/sun/appserver/lib/pk12util) 
[exec] /opt/sun/appserver/lib/pk12util: /usr/lib/libnss3.so: version 
`NSS_3.7' not found (required by /opt/sun/appserver/lib/pk12util) [exec] 
Result: 1

問題是 NSS 程式庫在 Linux 安裝中的位置與在 Solaris 安裝中的位置不同。當在 Linux 上進行部署時,您需要確認 LD_LIBRARY_PATH 指向正確的 NSS 程式庫。在您的環境中,或在 install_dir/bin/asant shell 包裝程式程序檔中設定 LD_LIBRARY_PATH

解決方案

執行下列動作之一:

升級到 AS9.1 之後,範例與 JES5 Portal 範例爭用 Derby 連接埠 1527 (6574563)

說明

在 Windows 上,升級到 Application Server 9.1 之後,範例與 JES5 Portal 範例爭用 Derby 連接埠 1527。具體而言,Application Server 9.1 在具有 APP:APP 的連接埠 0.0.0.0:1527 上自動啟動 JavaDB,但是,JES5 Portal JavaDB 希望連結到具有 portal:portalhostnameIP:1527

此錯誤所描述的問題已在 JES 5 的錯誤 6472173 中提及。錯誤 6472173 的解決方法記錄在「Sun Java Enterprise System 5 Installation Guide for Microsoft Windows」中。

解決方案

使用以下指令啟動 Derby 資料庫︰


<JES installation dir>\appserver\bin\asadmin start-database --dbhome <JES installation dir>\portal\data\derby

安全性

本節說明與 Application Server 和 Web 應用程式安全性及憑證有關的已知問題和相關解決方案。

SSL 終止未起作用 (6269102)

說明

SSL 終止未起作用;如果已為 SSL 終止配置了負載平衡程式 (硬體),Application Server 會在重新導向期間將協定從 https 變更為 http

解決方案

在硬體負載平衡程式與 Application Server 之間增加軟體負載平衡程式。

SSL 出現通訊端連線錯誤 (6492477)

說明

由於 JVM 錯誤,在 HTTP 偵聽程式上將 security-enabled 設定為 true 時,某些 JDK 版本會出現錯誤問題。具體而言,重現此錯誤的步驟如下︰

  1. 在 HTTP 偵聽程式上,將 security-enabled 設定為 true


    <http-listener acceptor-threads="1" address="0.0.0.0" 
    blocking-enabled="false" default-virtual-server="server" enabled="true" 
    family="inet" id=" http-listener-1" port="8080" security-enabled="true" 
    server-name="" xpowered-by="true">
  2. 在 quicklook 測試結尾處加入停止網域的註釋。

  3. 執行 quicklook 測試。

  4. 檢查通訊埠的使用︰


    netstat -an | grep 8080

    下面顯示的是正在使用︰


    *.8080               *.*                0      0 49152      0 LISTEN
    *.8080               *.*                0      0 49152      0 BOUND

此問題在 Glassfish 網站 https://glassfish.dev.java.net/issues/show_bug.cgi?id=849 中也被提及。

解決方案

升級到最新的 JDK 版本。

升級公用程式

本節介紹已知的升級公用程式問題和相關的解決方案。

在除 install_dir/domains 目錄之外的自訂路徑中建立的網域無法直接升級 (6165528)

說明

從 Application Server Enterprise Edition 8 升級至 Application Server Enterprise Edition 8.1 時,在除 install_dir /domains 目錄之外的自訂路徑中建立的網域無法直接升級。

當執行升級公用程式,並將 install_dir 指定為來源安裝目錄時,升級程序僅升級在 install_dir/domains 目錄下建立的網域。在其他位置建立的網域不能進行升級。

解決方案

在啟動升級程序之前,將不同位置的所有網域目錄複製到 install_dir/domains 目錄中。

在某些 Linux 系統上,按一下 [啟動升級精靈] 按鈕之後,執行「現地升級」的安裝程式無法啟動升級工具 (6207337)

說明

此問題已在多個 Linux 系統中出現,在 Java Desktop System 2 中最常見,但也見於 Red Hat 發行軟體中。

在最終的安裝程式螢幕上按一下 [啟動升級工具] 按鈕之後,安裝程式無法啟動升級工具以完成升級程序,且無限期當機,並且不返回指令提示符號。

解決方案

如果使用指令行安裝模式現地執行升級,則不會遇到此問題。

  1. 如果在 GUI 模式中現地執行升級並遇到此問題,請在啟動安裝程式的終端機視窗中按下 Ctrl+C,以退出安裝程式。

  2. 使用以下指令從終端機視窗中啟動升級工具:


    install_dir/bin/asupgrade --source install_dir/domains --target 
    install_dir --adminuser adminuser --adminpassword adminpassword 
    --masterpassword changeit

    adminuseradminpassword 應符合用於要升級之安裝的值。

  3. 當升級工具完成升級程序後,您還可以啟動瀏覽器並輸入以下 URL 以檢視 [關於] 頁面:


    file://install_dir/docs-ee/about.html

如果您還選取安裝選項以註冊產品,請使用產品 [關於] 頁面上的連結進入註冊頁面。

自我簽署憑證在從 8.0 Platform Edition (PE) 到 8.1 Enterprise Edition (EE) UR2 的升級期間和升級之後均不受信任 (6296105)

解決方案

從目標 domain.xml 中移除以下項目 (升級後),然後重新啟動伺服器:

<jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}
/config/keystore.jks</jvm-options>-
<jvm-options>Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}
/config/cacerts.jks</jvm-options>

升級工具覆寫某個實例 (叢集成員) 的已修改 index.html 之內容 (6386451)

說明

升級工具覆寫伺服器實例的現有 index.html 檔案。

解決方案

在執行升級工具之前備份現有的 index.html 檔案,接著在以後復原這些檔案。

(sbs-manual、sbs-installer) 丟出「伺服器實例,伺服器沒有名為 null 的系統連接器」的錯誤 (6545145)

說明

從 Application Server 8.0PE 升級到 9.1 時,將丟出錯誤,指明伺服器沒有名為 null 的系統連接器,同時 sbs-manual 中顯示無效的使用者資訊。即使在變更程序內定值之後,也會出現相同的錯誤訊息。出現此錯誤是因為 8.0 中的 domain.xml 在 9.1 中已變更。

解決方案

此錯誤僅在從 8.0 PE 升級到 9.1 時會出現。解決方法是先升級到 8.1、8.2 或 9.0,然後再升級到 9.1。

使用不同的建置組合時,不同的網域會在升級期間遺失 (6546130)

說明

執行現地升級時,如果來源中具有多個網域,則即使終止程序,安裝程式也會呼叫升級工具。在 GUI 模式中進行呼叫時會出現這種狀況。

解決方案

  1. 以 CLI 模式進行現地安裝,在安裝程序結束時,安裝程式會提示您選取升級工具。請在此時結束。這樣便不會刪除網域目錄中的任何網域。應該從 bin 目錄手動呼叫升級工具。

  2. 以 GUI 模式進行現地安裝時,請對網域根目錄中的網域進行備份,防止在過程中遺失任何網域。在安裝程序結束時,安裝程式會提示您呼叫升級工具,請在此時結束。如果有任何網域遺失,請將備份網域複製到網域目錄。手動啟動升級工具以執行升級。

Solaris︰升級工具中預先填入的主密碼來自 AS9.1,而非 AS8.2 (6565825)

說明

從 AS 8.2 升級到 9.1 時,9.1 安裝不會繼承 8.2 安裝中的主密碼。這樣,會在下一次管理登入時導致認證錯誤。

解決方案

Application Server 9.1 中的預設管理密碼為 changeit。從 8.2 升級之後,為了避免在登入 9.1 伺服器時出現問題,請執行以下三個步驟之一︰

AS9.1 IFR 升級工具無法將 JES5U1 MQ 儲存區遷移至新的 var 主目錄 (6573635)

說明

升級工具不會升級資料庫或任何格式的資料庫表格,也不支援此動作。將傳輸資源參照配置,並且 Application Server 應該繼續使用原始資料庫和表格。如果要變更資料庫或傳輸資料庫表格,請使用可用於使用中的資料庫的工具。

解決方案

執行以下步驟以遷移 MQ 儲存區:


備註 –

請在關閉 AS 8.2 和執行 AS9.1 升級工具之後,並在首次啟動 AS9.1 之前,執行以下步驟。如果您已經在 IFR 安裝/升級之後啟動了 AS 9.1,請勿執行這些步驟,因為這樣可能會造成 MQ 訊息儲存區不穩定。


  1. 將整個 domains/domain1/imq 子目錄從 AS 8.x domains 目錄複製到 AS 9.1 domains 目錄。

  2. 確保該目錄及其檔案的所有權歸將要執行 Application Server 的使用者所有。

執行完上述步驟之後,便可啟動 Application Server 9.1,並且 Application Server 9.1. domains 目錄中的 MQ 儲存區將從 JES5 U1 格式遷移至 MQ 4.1 格式。請注意,執行此程序或者在 AS 9.1 啟動 MQ4.1 時將保留 AS 8.2 下的原始 JES5 U1 MQ 儲存區,不會對其進行修改。

將 JES5 (AS 8.2) 升級到 AS 9.1。PS Community 範例無法使用,出現許多 javax.faces 錯誤 (6576700)

說明

從 JES5 (Application Server 8.2) 升級到 Application Server 9.1 時,Portal Server Community 範例無法再使用,並丟出許多 javax.faces.application.ApplicationFactory 錯誤。

解決方案

如果 Application Server 8.2 是透過 JES5 Portal Server 安裝的,則不支援從 Application Server 8.2 升級到 9.1。在 Application Server 升級到 9.1 之前,需要先將 Portal Server 升級到 Java ES 5 Update 1。

AS91 IFR b58,Linux︰使用安裝程式安裝新的 Java 之後,/usr/jdk/entsys-j2se 連結無法更新 (6591697)

說明

在 Linux 平台上使用 IFR 安裝程式從 Application Server 8.2 升級到 9.1 時,選取 [安裝 JDK] 選項,但在成功完成安裝之後,大多數 JES 元件無法使用。

解決方案

此問題僅影響在 Linuxs 平台上執行的 Application Server 9.1 IFR 安裝,並且僅在選取 [安裝 JDK] 選項之後出現。若要解決此問題,請在安裝之後立即手動將 /usr/jdk/entsys-j2se 連結到 /usr/java/jdk1.5.0_12 目錄。

AS9.1 IFR Win 現地備份無法與 asupdate.bat 表單值整合,檢查路徑錯誤 (6596412)

說明

在 Windows 上執行 Application Server 9.1 IFR 升級時,現地備份無法與 asupdate.bat 表單值正確整合。具體而言,如果您在 ASupdate.bat GUI 螢幕中輸入錯誤資訊,然後按 [下一步],升級安裝程式便會嘗試偵測升級是否為現地升級。如果是,domain1 便會在升級之前移至備份目錄。如果輸入的資訊有誤,會在升級繼續時顯示一則錯誤訊息。當您嘗試立即校正錯誤時,系統會丟出路徑錯誤,因為 domain1 已被移動。

解決方案

將來源目錄變更為 {current source path}/backup 中的 domain1_{timestamp} 目錄,或者使用 [取消] 按鈕結束安裝程式,然後再重新啟動。

AS9.1 IFR Windows,內嵌升級,在將 asupgrade.bat 與短路徑和長路徑配合使用時會刪除 Domain1 (6596394)

說明

(僅適用於 Windows) 如果在程式目錄路徑中使用特殊字元或 DOS 樣式短名稱安裝了舊版 Application Server,並且在後續現地升級到 Application Server 9.1 時使用這些目錄路徑名稱,則升級將失敗。

例如,如果 Application Server 8.2 安裝於以下任一目錄︰


C:\Program Files (x86)\dirs\appserver
c:\progra~2\dirs\appserver

在嘗試現地升級到 9.1 時會失敗,因為安裝程式無法將短名稱或特殊字元轉換為所需的長名稱格式。

解決方案

強烈建議不要使用包含特殊字元或 DOS 樣式短名稱截斷 (如 progra~2) 的路徑名稱安裝 Application Server,因為這樣會影響後續的升級安裝。如果存在此類安裝,請在升級之前使用長路徑名稱重新安裝,或者在全新的目錄中安裝新版 Application Server。

AS 9.1 IFR︰Web UI 認證失敗 (6569813)

說明

升級 Application Server 之後,<jsp:forward> 標記無法在 Authenticate.jsp 中按預期執行。<jsp:forward> 呼叫會在伺服器記錄中產生錯誤,並且在 Web UI 上顯示空白頁面。問題在於 Authenticate.jsp 中的 <jsp:forward> 需要一個類似 <jsp:forward page="${redirectPage}"/> 的頁面屬性,但傳送的值是類似 /registry/thin/{pagename}.jsp 的相對路徑,即使 Authenticate.jsp 是純 JSP 頁面,此相對路徑也不起作用。

解決方案

完成 Application Server 升級之後,使用 asadmin 工具執行以下指令以設定 domain.xml 中的 <auth-realm>

  1. 移至 <appserver9.1-install-dir>/bin 並執行以下指令:


    ./asadmin delete-auth-realm --host localhost --port 6489 certificate

    將移除舊的 auth-realm 憑證 (如果存在)。

  2. 執行以下指令︰


    ./asadmin create-auth-realm --terse=false --echo=true --interactive=true \
    --user admin --host localhost --port 6489 --classname \
    com.sun.enterprise.security.auth.realm.certificate.CertificateRealm \
    --property assign-groups=have.client.cert  certificate

    將建立具有 assign-groups 特性的新 <auth-realm>

  3. 停止並重新啟動 Application Server registry 網域。

不存在已本土化的 asupgrade GUI 線上說明 (6610170)

說明

在非英文語言中執行 asupgrade GUI 時,沒有針對所選取非英文語言的 GUI 線上說明進行本土化。

解決方案

目前尚無解決方案。已排定將線上說明本土化為所有非英文目標語言。

Web 容器

本節說明已知的 Web 容器問題以及相關的解決方案。

在 Windows 上,使用 --precompilejsp=true 部署應用程式可能會鎖定該應用程式中的 JAR 檔案,從而導致後面的取消部署或重新部署作業失敗 (5004315)

說明

如果您在 Windows 上部署應用程式時請求 JSP 的預先編譯,則以後無法按預期嘗試取消部署或重新部署該應用程式 (或任何具有相同模組 ID 的應用程式)。問題在於 JSP 預先編譯會開啟應用程式中的 JAR 檔案,但不會關閉它們,同時 Windows 會防止取消部署刪除這些檔案或防止重新部署覆寫它們。

請注意,取消部署會進行到某個地步,此時會依據邏輯將該應用程式從 Application Server 中移除。還請注意,asadmin 公用程式不會傳回任何錯誤訊息,但應用程式的目錄和鎖定的 jar 檔案會保留在伺服器上。伺服器的記錄檔將包含描述無法刪除檔案和應用程式目錄的訊息。

取消部署失敗後會嘗試重新部署應用程式,因為伺服器會嘗試移除現有檔案與目錄,此嘗試仍失敗。如果您嘗試部署使用與原來部署的應用程式具有相同模組 ID 的任何應用程式,便會出現這種情況,因為伺服器使用該模組 ID 選擇目錄名稱以存放應用程式檔案。

基於同樣原因,不先取消部署即嘗試重新部署應用程式將會失敗。

診斷

如果您嘗試重新部署應用程式或在取消部署之後再部署該應用程式,asadmin 公用程式會傳回一個如下類似錯誤。


An exception occurred while running the command. The exception 
message is: CLI171 Command deploy failed : Deploying application in 
domain failed; Cannot deploy. Module directory is locked and can't 
be deleted.

解決方案

如果您在部署應用程式時指定 --precompilejsps=false (預設的設定),則不會出現此問題。請注意,第一次使用應用程式將觸發 JSP 編譯,因此第一次請求的回應時間會比以後的請求的回應時間長。

還請注意,如果進行預編譯,應先停止並重新啟動伺服器,然後再取消部署或重新部署應用程式。關機會釋放鎖定的 JAR 檔案,因此重新啟動後才能成功取消部署或重新部署。

無法使用基於 Servlet 2.4 的 web.xml (包含空的 <load-on-startup> 元素) 部署 WAR (6172006)

說明

web.xml 中的選擇性 load-on-startup servlet 元素表示要載入相關的 servlet 並將其初始化為宣告該 servlet 的 Web 應用程式啟動的一部分。

該元素的可選內容是一個整數,表示要載入並初始化與 Web 應用程式之其他 servlet 相關的 servlet 的順序。只要在啟動其含有的 Web 應用程式過程中載入並初始化 servlet,空的 <load-on-startup> 即表示順序錯誤。

web.xml 的 Servlet 2.4 模式不再支援空的 <load-on-startup>,這意味著在使用基於 Servlet 2.4 的 web.xml 時,必須指定一個整數。如果指定空 <load-on-startup> (與 <load-on-startup/> 中相同),web.xml 將無法針對 web.xml 的 Servlet 2.4 模式進行驗證,進而導致部署 Web 應用程式失敗。

返回至相容性問題。指定空的 <load-on-startup> 仍可使用基於 Servlet 2.3 的 web.xml

解決方案

使用基於 Servlet 2.4 的 web.xml 時,指定 <load-on-startup>0</load-on-startup>,以表示 servlet 載入順序並不重要。

無法在受資源約束的伺服器上編譯 JSP 頁面 (6184122)

說明

存取 JSP 頁面後無法編譯,且伺服器記錄含有錯誤訊息「Unable to execute command」,以及以下堆疊追蹤:


at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.
exec(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.
launch(Execute.java:416) 
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:427) 
at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.
executeExternalCompile(DefaultCompilerAdapter.java:448) 
at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute
(JavacExternal.java:81) 
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:842) 
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:682) 
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:396)

解決方案

將 JSP 編譯切換「fork」設定為「false」。

有兩種方法可以執行此操作:

以上任何一種設定都將阻止 ant 產生用於 javac 編譯的新程序。

Application Server 不支援 auth-passthrough Web Server 6.1 附加元件 (6188932)

說明

Sun Java System Application Server 9.1 增加了對 Sun Java System Application Server Enterprise Edition 7.1 上 auth-passthrough 外掛程式功能所提供之功能性的支援。但是,在 Application Server 9.1 中,auth-passthrough 外掛程式的功能以不同的方式進行配置。

Application Server Enterprise Edition 7.1 中的 auth-passthrough 外掛程式功能在雙層部署方案中非常有用,在這些方案中︰

在此類網路架構中,用戶端連線至使用 service-passthrough 外掛程式功能配置的前端 Web 伺服器,並將 HTTP 請求轉寄至代理 Application Server 實例進行處理。Application Server 實例僅可接收來自 Web 伺服器代理伺服器的請求,而從不會直接接收來自於任何用戶端主機的請求。結果,部署在查詢用戶端資訊 (例如客戶端的 IP 位址) 的代理 Application Server 實例上的任何應用程式均將接收到代理主機 IP,因為這才是實際產生所傳送請求的主機。

解決方案

在 Application Server Enterprise Edition 7.1 中,auth-passthrough 外掛程式功能可以在代理 Application Server 實例上配置,以使該實例上部署的所有應用程式都能直接取得遠端用戶端的資訊;猶如代理 Application Server 實例直接收到請求一樣,而非透過執行 service-passthrough 外掛程式的中間 Web 伺服器接收。

在 Application Server 9.1 中,auth-passthrough 功能可以透過將 domain.xml<http-service> 元素的 authPassthroughEnabled 特性設定為 TRUE 來啟用,如下所示:


<property name="authPassthroughEnabled" value="true"/>

對 Application Server Enterprise Edition 7.1 中 auth-passthrough 外掛程式功能的安全考慮也適用於 Application Server 9.1 中的 authPassthroughEnabled 特性。由於 authPassthroughEnabled 允許置換可用於認證的資訊 (如發出請求的 IP 位址,或 SSL 用戶端憑證),因此,必須僅允許可信任的用戶端或伺服器連線至 authPassthroughEnabled 設定為 TRUE 的 Application Server 9.1 實例。做為預警措施,建議您應僅將公司防火牆後伺服器的 authPassthroughEnabled 設定為 TRUE。可透過網際網路存取的伺服器永遠不能將 authPassthroughEnabled 設定為 TRUE。

請注意,當代理 Web 伺服器已配置了 service-passthrough 外掛程式,並且將請求轉寄至 authPassthroughEnabled 設定為 TRUE 的 Application Server 8.1 Update 2 實例時,代理 Web 伺服器上可能啟用了 SSL 用戶端認證,而在接受代理的 Application Server 8.1 Update 2 實例上卻停用了該認證。在此情況下,代理 Application Server 8.1 Update 2 實例仍將請求作為已透過 SSL 認證的請求進行處理,並將用戶端的 SSL 憑證提供給需要此憑證的所有已部署的應用程式。

Web 伺服器

AS 9.1 b50e。Linux。無法在安裝 AS 負載平衡程式之後啟動 WS︰libjvm.so:cannot open shared (6572654)

說明

僅在 Linux 系統上將 Sun Java System Web Server 與 Application Server 9.1 以及負載平衡程式配合使用時,才出現此問題。在此情況下,安裝完 Application Server 和負載平衡程式之後,可能無法啟動 Web Server,因為 libicui18n.so.2libicuuc.so.2 相衝突。這些程式庫位於 /opt/sun/private/lib/opt/sun/appserver/lib 中。

解決方案

要使用的正確程式庫只能位於 /opt/sun/appserver/lib 中,因為 lbplugin 是依據這些程式庫建置的。一旦從 /opt/sun/private/lib 移除這兩個程式庫之後,Web Server 便會正常啟動,不出現任何錯誤。

或者,如果您不想刪除 /opt/sun/private/lib 中的程式庫,可以在 Web Server startserv 程序檔的 LD_LIBRARY_PATH 中,將 /opt/sun/appserver/lib 置於 /opt/sun/private/lib 之前;亦即將︰


# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux
LD_LIBRARY_PATH="${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}:
/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib"; export LD_LIBRARY_PATH 

替代為:


# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux
LD_LIBRARY_PATH="/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib:
${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH

Web 服務

本節說明已知的 Web 容器問題以及相關的解決方案。

Ant 作業 wsimport 無法用於 Java EE SDK b33d (使用 JDK 1.6),出現 NoClassDefFoundError (6527842)

說明

您可能會在透過 Java EE SDK b33d 隨附的 JDK 1.6 執行 JAX—WS 測試時遇到問題。測試會立即中斷,並出現以下訊息:


[wsimport] Exception in thread "main" java.lang.NoClassDefFoundError: \
com/sun/tools/ws/WsImport

即使 webservices-tools.jar 不包含 com/sun/tools/ws/WsImport.classcom/sun/tools/ws/ant/WsImport.classcom/sun/tools/ws/ant/WsImport2.class,也會出現此錯誤。而且,使用 1.5.0-10 JDK 時,相同的測試工作區便會正常工作,不出現任何問題。

解決方案

在執行 JAX-WS 測試之前,將 webservices-api.jar 複製到 $JAVA_HOME/jre/lib/endorsed

publish-to-registry 指令在 IFR EE 建置中無法使用 (6602046)

說明

JAXR 使用 SAAJ 將 SOAP 訊息傳送至登錄。在非 IFR 情況下,SAAJ impl 類別位於 lib/webservices-rt.jar 下。在 IFR 情況下,SAAJ 類別仍位於 lib/webservices-rt.jar 下。此外,saaj-impl.jar 位於 /usr/share/lib 目錄中。此 jar 檔案由 Application Server 挑選,其優先順序高於 webservices-rt.jar 中的類別。此 jar 檔案不具有將 SOAP 訊息傳送至 Web 服務登錄所需的必要安全性許可權。應該將封裝修改為將許可權授予 /usr/share/lib 目錄下的 jar,或者修改為與 /usr/share/lib jar 無關。

解決方案

server.policy 檔案增加以下內容︰


grant codeBase "file:/usr/share/lib/saaj-impl.jar" {
   permission java.security.AllPermission;
};