Sun Java System Application Server Enterprise Edition 8.1 2005Q2 版本說明

第 3 章 已知問題和限制

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

管理

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

錯誤 ID 

摘要 

6171458 

如果沒有 domain1,則 package-appclient 程序檔無法工作。

依預設,在 $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 

無法使用其他名稱復原備份的網域。 

由於即使 asadmin restore-domain 指令可提供重新命名網域的選項,仍無法使用原始名稱之外的其他名稱復原網域,因而無法使用 backup-domainrestore-domain 指令,在同一 Application Server 安裝上鏡像網域。重新命名備份的網域表面上成功了,但嘗試啟動重新命名後的網域將會失敗,因為網域配置中的項目並未變更,且 startservstopserv 仍會使用原始的網域名稱來設定路徑。

解決方案

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

6200011 

不支援使用其他 JMX 代理程式啟動 Application Server。 

在 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-compliant 用戶端) 時,考量重複使用透過 Application Server 啟動程序檔啟動的標準 JMX 連接器伺服器。

該伺服器啟動後,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.|#]

如需更多資訊,請參閱「管理指南」。

6206176 

在 UNIX 中,過度限制 Application Server 啟動和停止程序檔的執行權限。 

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

解決方案

變更程序檔的權限︰ 


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

6236544、6275436 

負載平衡程式配置檔案不是使用任何 Web 服務的終點 URL 建立的。 

在使用包含可匯出 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 值。

6288893 

使用 sun-appserv-admin 重新啟動 Application Server 可導致 LoginException 錯誤。

解決方案

  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 程序檔。

6315957 

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

解決方案

  • 如果可能,應由安裝此伺服器的使用者執行 asadmin start-domain domain1 指令。

  • 如果未由該使用者執行,則應從安裝使用者的 home 目錄中將 .asadmintruststore 移動或複製到執行使用者的 home 目錄。

  • 請注意,若將此檔案從安裝使用者的 home 目錄移動 (而非複製) 到執行使用者的 home 目錄,則可能會發生應用程式升級問題 (例如在錯誤 6309079、6310428 和 6312869 中說明的問題),因為在升級/安裝使用者 (在 Java ES 中一般為 root) 的 home 目錄中將不再包含 .asadminstruststore 檔案。

6407140 

使用 start-node-agent 啟動的伺服器實例沒有最新的同步化內容。

asadmin start-node-agent 指令會自動啟動遠端伺服器實例,而不會與 DAS 同步化。

解決方案

若啟動與 DAS 所管理之中央儲存庫同步化的遠端伺服器實例,請搭配 asadmin start-node-agent 指令指定 --startinstances=false 選項。然後使用 asadmin start-instance 指令啟動遠端伺服器實例。

6654726 

選取密碼套件的「管理主控台」功能運作不正常。選取 Http 偵聽程式的 [Support All Cipher Suites] 時,會停用核取方塊,但在重新整理頁面之後會再次啟用,即使核取了 [Support All...] 方塊亦然。雖然這看似問題,但是在輸入憑證暱稱並按一下 [儲存] 之後,這些變更將會寫入配置。 

解決方案

無須採取任何動作。已儲存變更。 

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

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

錯誤 ID 

摘要 

6306784 

「High-Availability Administration Guide」對將 openssl 與 Apache 配合使用的說明不正確。

解決方案

編譯和建置 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

6307976 

「High-Availability Administration Guide」未包含使用 Apache 2.0 之憑證的說明。 

解決方案

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

6308021 

必須以超級使用者的身份啟動 Apache Web Server。 

解決方案

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

Group #-1

替代為 

Group nobody

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

6308043 

在 Solaris 上配合使用 openssl 與 Apache Web Server 2.0 的補充說明。

安裝 Apache 2.0 和負載平衡程式外掛程式之後,請按照以下說明編輯 ssl.confsll-std.conf

將行: 

<VirtualHost _default_:9191>

替代為 

<VirtualHost machine_name:9191>

其中,machine_name 為電腦的名稱,9191 為安全性連接埠號碼。

應用程式用戶端

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

錯誤 ID 

摘要 

6193556 

封裝在應用程式用戶端歸檔檔案中的程式庫 JAR 會覆寫可取得的檔案。 

如果您在用戶端 JAR 內部具有頂層的 JAR 檔案 (這種情況下,為 reporter.jar),當您部署用戶端 JAR 時,該 JAR 的可取得的檔案將覆寫用戶端 JAR 的可取得的檔案。 

解決方案

此時為 None。 

6373043 

不再支援動態內容技術,如 CGI-bin 和 SHTML。 

解決方案

改用 JSP 和 Web 服務技術。 

隨附的 Sun JDBC 驅動程式

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

錯誤 ID 

摘要 

6165970 

在使用準備好的陳述更新時,如果有兩個平行作業事件正在執行,並且其中一個被回復,則配合使用 TRANSACTION_SERIALIZABLE 隔離層級與 Sun 隨附的 Microsoft SQL Server 驅動程式的應用程式可能會掛機。

若要為連線設定所需的隔離層級,必須在相同的隔離層級建立相應的連線區。請參閱「管理指南」,以取得有關配置連線池的詳細資訊。 

解決方案

此時為 None。 

6170432 

PreparedStatement 錯誤。

說明 1

如果應用程式在一個作業事件中產生的 PreparedStatement 物件多於 3000 個,則 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

請參閱「管理指南」,以取得有關配置連線池的詳細資訊。

說明 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

若要為連線設定所需的隔離層級,必須在此隔離層級建立相應的連線區。請參閱「管理指南」,以取得說明。

6189199 

使用附帶的 Sun 驅動程式設定隔離層級的問題 (針對 Sybase Adaptive Server)。 

  • 在使用準備好的陳述更新時,如果有兩個平行作業事件正在執行,並且其中一個被回復,則配合使用 TRANSACTION_SERIALIZABLE 隔離層級與 Sun 隨附之 Sybase Adaptive Server 驅動程式的應用程式可能會掛機。連線轉返失敗,並顯示以下訊息,且轉返的連線無法再被使用︰

    java.sql.SQLException:[sunm][Sybase JDBC Driver]Request cannot be submitted due to wire contention

  • Sybase Adaptive Server 不支援 TRANSACTION_REPEATABLE_READ 隔離層級。然而,查詢 DatabaseMetaData 時,隨附的 Sun 驅動程式會傳回資料庫支援此隔離層級。使用此隔離層級的應用程式將失敗。

  • 使用隨附的 Sun 驅動程式的應用程式無法設定 TRANSACTION_READ_UNCOMMITTED 隔離層級。在初次存取 DataBaseMetaData 時,應用程式會丟出以下異常:

    java.sql.SQLException:[sunm][Sybase JDBC Driver][Sybase]The optimizer could not find a unique index which it could use to perform an isolation level 0 scan on table 'sybsystemprocs.dbo.spt_server_info'.

解決方案

此時為 None。 

6247468 

在 Solaris 10 和 Enterprise Linux 3.0 上,Sun 隨附的 Oracle JDBC 驅動程式不允許建立連線。 

解決方案

當使用 SUN JDBC Oracle 資料來源 (com.sun.sql.jdbcx.oracle.OracleDataSource) 時,在 JDBC 連線池上設定以下特性:

<property name="serverType" value="dedicated"/>

該特性的值取決於配置 Oracle 伺服器偵聽程式的方式。如果在「共用」模式中配置該伺服器,則上述值需變更為「dedicated」。 

6554602 

從 JDBC 10.2 驅動程式開始,在 CLASSPATH 中有多個 JDBC jar 檔案可能會導致 java.lang.SecurityException: Sealing violation exception

以下 Oracle 文件 ID 記載了 Oracle 的詳細說明: 

備註:405446
主旨:JDBC Driver 10.2 Uses Sealed JAR files and May Cause Security
Exception Sealing Violation

解決方案

(Oracle 的建議) 請確定 CLASSPATH 僅包含一個 JDBC 驅動程式 JAR 檔案。

Connectors

本節介紹已知的 J2EE 連接器架構問題以及相關的解決方案。

錯誤 ID 

摘要 

6188343 

重新啟動 DAS 實例後,在將重疊設定為 false 時,取消部署連接器模組會失敗。 

在此情況下,獨立的或內嵌的連接器模組便部署在 DAS 和連接器連線區中,並為部署的模組建立了資源。重新啟動 DAS 實例後,將重疊設定為 false 時,取消部署連接器模組會失敗,並顯示以下異常︰ 

[#|2004-10-31T19:52:23.049-0800|INFO|sun-appserver-ee8.1|javax.enterprise.system .core|_ThreadID=14;|CORE5023:Error while unloading application [foo]|#]

解決方案

在重新啟動 DAS 實例後,使用重疊的取消部署 (將重疊選項設定為 true) 來取消部署獨立的和內嵌的連接器。 

文件

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

錯誤 ID 

摘要 

ID 不同 

Javadoc 不一致。 

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

  • ConnectorConnectionPoolStatsAltJDBCConnectionPoolStats 中缺少 NumConnAcquiredNumConnReleased 統計的獲取方法。這些獲取方法將在未來的發行版本中加入為 getNumConnAcquired()getNumConnReleased()

  • EJBCacheStats 中呼叫以下方法將丟出異常:getPassivationSuccesses()getExpiredSessionsRemoved()getPassivationErrors()getPassivations()。這將在未來的版本中進行修正。

  • 啟動伺服器後,AMX MBeans 可能需要數秒鍾才能完全註冊和使用。未來的版本將可能確定完全載入 AMX MBeans 的時間。

  • 常數 XTypes.CONNNECTOR_CONNECTION_POOL_MONITOR 拼字錯誤 (「NNN」)。這將在未來的版本中進行校正。

6265624 

隨附的 ANT 丟出 java.lang.NoClassDefFoundError

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

解決方案

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

6486123 

從環繞連線取得實體連線的文件已不再正確。 

由於其他錯誤 (可能是 6295215),「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide」中的第 11 章「Using the JDBC API for Database Access」一節所提供的程式碼已不正確。具體來說,下行:


Connection drivercon = ds.getConnection(con);

應改為: 


Connection drivercon = ((com.sun.gjc.spi.DataSource)ds).getConnection(con);

高可用性

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

錯誤 ID 

摘要 

無 ID 

具有雙網路的 HADB 配置。 

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

  • 在 Linux 上,在傳送訊息時會封鎖某些 HADB 程序。這將引起 HADB 節點重新啟動和網路分割。

  • 在 Solaris x86 上,網路故障後會出現一些問題,這會阻止切換至其他網路介面。這種情況不會經常發生,因此最好還是具有兩個網路。這些問題中的一部分在 Solaris 10 中得到解決。

  • 不支援幹線。

  • HADB 在 Windows 2003 上不支援雙網路 (ID 5103186)。

無 ID 

建立 HADB 資料庫失敗。 

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

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 的值是否至少為每個主機上節點數目的六倍。

5052548 

共用記憶體區段已鎖定且無法分頁。 

當 Intimate Shared Memory 建立及附加至共用記憶體區段時,HADB 4.3-0.16 及更新版本會配置為使用 Intimate Shared Memory (使用 SHM_SHARE_MMU 旗標)。使用此旗標基本上會在實體記憶體中鎖定共用記憶體區段,以避免共用記憶體區段遭到分頁。這在安裝低階機器時很容易造成問題。

因此,若開發者在使用 Application Server 7.0 EE 的機器上有 512 MB 的記憶體和許多可用的交換空間,之後再安裝 7.1 EE 或更新版本,則開發者將會在配置預設 clsetup 叢集 (建立兩個 HADB 節點,每個節點的 devicesize512) 時發生問題,而導致沒有足夠的實體 RAM 可支援這兩個節點皆所需的共用記憶體。

解決方案

請務必在並置應用程式伺服器和 HADB 時,具備建議的記憶體容量。請參閱HADB 需求和支援的平台以取得更多資訊。

5091280 

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

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

解決方案

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

5091349 

不支援 packagepath 的異質性路徑。

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


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) 在所有參與的主機上均相同。

6173886、6253132 

createdomain 可能會失敗。

當在具有多個網路介面的主機上執行管理代理程式時,如果所有的網路介面不在同一子網路上,則 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 識別) 中的所有檔案和目錄。必須先在所有主機上完成此作業,方可使用新配置檔案重新啟動代理程式。

6190878 

刪除 HADB 實例之後必須清除目錄。 

刪除 HADB 實例之後,嘗試使用 configure-ha-cluster 指令建立新實例失敗。問題在於,原始 HADB 實例在 ha_install_dir/rep/*ha_install_dir/config/hadb/instance_name 中留下了舊目錄。

解決方案

請務必於刪除 HADB 實例之後,手動刪除這些目錄。 

6230792、6230415 

啟動、停止和重新配置 HADB 可能失敗或掛機。 

在 Solaris 10 Opteron 上使用 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

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

6232140 

管理代理程式已終止,發生異常 "IPV6_MULTICAST_IF failed"

在安裝了數個 NIC 卡並於執行 Solaris 8 的主機上啟動時,若同時包含已啟用 IPv6 和 IPv4 的各式卡片,則會終止管理代理程式,並出現異常 "IPV6_MULTICAST_IF failed"

解決方案

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


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

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

6249685 

無法中斷 clu_trans_srv

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

解決方案

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

6262824 

hadbm 不支援含有大寫字母的密碼。

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

解決方案

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

6265419 

從 HADB 4.4.2.5 版降級至 HADB 4.4.1.7 版將導致 ma 失敗,並顯示不同錯誤代碼。 

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

解決方案

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

6271063 

安裝/移除和 symlink 維護。

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

解決方案

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

6273681 

全域區域中的管理代理程式和本機區域中的管理代理程式可能發生衝突。 

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

解決方案

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

6275103 

階段作業物件逾時並在 MA 中被刪除時,hadbm/ma 應提供更佳的錯誤訊息。

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

解決方案

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

6275319 

非超級使用者無法管理 HADB。 

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

解決方案

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

6293912 

管理代理程式不應使用具有特殊用途的介面。 

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

解決方案

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

6291562 

在 Windows 上發生重新組合故障。 

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

解決方案

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

6303581、6346059、6307497 

執行 hadbm start <db_name> 時,會顯示未遮罩的輸入密碼。

有可能是機器負載了會讓遮罩機制失敗的工作,而導致輸入的密碼有部分字元顯露。如此會造成輕微的安全性風險,因此密碼應一律遮罩。 

解決方案

將密碼置於其所擁有的密碼檔案中 (Application Server 8.1 之後的版本一般會建議使用此方法),並使用 --adminpassword--dbpasswordfile 選項參照密碼。

安裝

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

錯誤 ID 

摘要 

5009728 

按一下 [完成] 按鈕之後,某些 Linux 系統上的安裝關閉當機。 

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

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

解決方案

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


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

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

6199697 

在 Windows 上,需要在安裝期間建立 imq 目錄。 

在 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

6297837 

Application Server 安裝程式在產品名稱「Sun Java(TM) System Application Server Enterprise Edition 8.1 2005Q4」中顯示錯誤的產品發行日期。 

解決方案

正確的產品名稱/日期應為「Sun Java(TM) System Application Server Enterprise Edition 8.1 2005Q2」。 

6396045 

Application Server 不支援網路檔案系統 (NFS)。 

解決方案

無。 

J2EE Tutorial

若要在 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 上執行 J2EE 1.4 Tutorial,請執行以下作業:

生命週期管理

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

錯誤 ID 

摘要 

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.
  • minimum-delivery-interval 是同一週期性計時器的兩個傳送之間的最小間隔持續時間。

  • redelivery-interval-in-mills 是計時器服務在 ejbTimeout 失敗後嘗試重新傳送之前的等待時間。

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

minimum-delivery-interval-in-millis 的設定必須始終等於或高於 ejb-timer-service 特性 redelivery-interval-in-millis 的設定。問題在於,應用程式伺服器具有錯誤的驗證檢查可驗證 redelivery-interval-in-millis 的值是否大於 minimum-delivery-interval-in-millis 的值。

解決方案

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


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

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

記錄

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

錯誤 ID 

摘要 

6180095 

設定 access,failure 的除錯敘述會導致 Application Server 啟動時掛機。

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


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

此時為 None。請避免設定此標幟。 

Message Queue

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

錯誤 ID 

摘要 

6173308、6189645、6198481、6199510、6208728 

在某些與時間相關的情況下,JMS 重新連線不能成功完成。 

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

解決方案

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

  • 重新啟動涉及的代理程式

  • 重新啟動涉及的 Application Server 實例

6198465 

appclient 8.0 至 8.1 中變更了非同步訊息偵聽程式的運作方式。

由於最新的變更,當非同步訊息偵聽程式為 app-client 容器中唯一的作用中執行緒時,剩餘的 appclient 虛擬電腦以常駐程式存在。此運作方式對於 ACC 中執行非同步接收的舊應用程式是一種回歸。該問題會影響設定 JMS 訊息偵聽程式並結束主執行緒的應用程式用戶端。

解決方案

請勿結束主執行緒。等待訊息偵聽程式告知主執行緒後,再終止主執行緒。 

監視

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

錯誤 ID 

摘要 

6174518 

某些 HTTP 服務的監視統計資訊中不存在有用的資訊,應該將其忽略。 

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

  • http-service

    load1MinuteAverage

    load5MinuteAverage

    load15MinuteAverage

    rateBytesTransmitted

    rateBytesReceived

  • pwc-thread-pool (元素)

解決方案

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

6191092 

未移除取消部署的 EJB 模組的監視 MBean (雖然移動了該監視名稱下的所有統計)。 

例如︰ 


EJBModuleMonitorMap().size() = 1  eventhough ejb module is 
undeployed EJBModuleMonitor().getName() = sqe_ejb_s1_01

EJB 模組與應用程式也一樣。雖然是有計劃地 (透過 MBean API) 並且透過 asadmin list/get 移動監視名稱下的所有統計訊,但空監視 MBean 依然存在。

診斷


asadmin list -m "server.applications" shows the following output:
server.applications.MEjbApp
server.applications.__ejb_container_timer_app
server.applications.adminapp
server.applications.admingui
server.applications.com_sun_web_ui
server.applications._export_install_nov-11_domains_domain1_applications
_j2ee-modules_sqe_ejb_s1_01

您可以查看下列統計資訊: 


bin/asadmin list -m "server.applications._export_install_nov-11_domains
_domain1_applications_j2ee-modules_sqe_ejb_s1_01"
server.applications._export_install_nov-11_domains_domain1_applications_
j2ee-modules_sqe_ejb_s1_01.SQEMessage
server.applications._export_install_nov-11_domains_domain1_applications_
j2ee-modules_sqe_ejb_s1_01.TheGreeter

取消部署後: 


_export_install_nov-11_domains_domain1_applications_j2ee-modules_sqe_
ejb_s1_01

如果執行某項 list 指令,仍可看到下列應用程式: 


asadmin list -m "server.applications"
server.applications.MEjbApp
server.applications.__ejb_container_timer_app
server.applications._export_install_nov-11_domains_domain1_applications_
j2ee-modules_sqe_ejb_s1_01
server.applications.adminapp
server.applications.admingui
server.applications.com_sun_web_ui

但不包含任何監視統計資訊: 


asadmin list -m "server.applications._export_install_nov-11_domains_
domain1_applications_j2ee-modules_sqe_ejb_s1_01"
Nothing to list at server.applications.-export-install-nov-11-domains-
domain1-applications-j2ee-modules-sqe-ejb-s1-01.

 

若要取得以字串開頭的有效名稱,請使用萬用字元 (「*」)。例如,若要列示以 server 開頭的所有監視實體的名稱,請使用 list "server.*"。

解決方案

此項是無害的。可以安全地重新部署模組,不會出現任何問題。雖然沒有移除根監視 Mbean,但它為空監視。 

PointBase

本節介紹與 PointBase 相關的已知問題及其相應解決方案。

錯誤 ID 

摘要 

6184797 

設定應用程式連線區中的隔離層級,將導致 PointBase 異常。 

對於指向 PointBase 資料庫安裝的 JDBC 連線池,將 transaction-isolation-level 池屬性設定為除預設值 (Connection.TRANSACTION_READ_COMMITTED) 之外的任何值,均會導致異常。但對於指向其他資料庫的連線區,將同一參數設定為非預設值卻不會拋出異常。

解決方案

對於指向 PointBase 資料庫安裝的 JDBC 連線池,請勿嘗試設定 transaction-isolation-level

6204925 

如果網路伺服器與內嵌式驅動程式配合使用,則 PointBase 拋出異常。 

如果同時使用網路伺服器驅動程式與內嵌式驅動程式,那麼附帶的 PointBase 有時會拋出異常。 

解決方案

請單獨使用內嵌式驅動程式或單獨使用網路伺服器驅動程式,切勿同時使用。 

6264969、6275448 

升級問題 (升級時覆寫預設 PointBase 資料庫)。 

升級至 Application Server Enterprise Edition 8.1 2005Q2 Update 2 後,Update 發行版本修補程式會覆寫 Pointbase 預設資料庫。 

解決方案

重新建立或重新輸入升級前存在的任何方案或資料。如果您使用具有 [產生表] 選項的 CMP Bean 部署應用程式,則必須取消部署或重新部署應用程式才能產生表。 

範例

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

錯誤 ID 

摘要 

6195092 

setup-one-machine-cluster 在 Windows 上會掛機,但在 Solaris 上工作正常;mqfailover 需要按下 [Ctrl]+[C] 以取消,然後必須重新執行。

如果您執行以下指令,請參閱 install_dir\samples\ee-samples\failover\apps\mqfailover\docs\index.html

  • 主控台 1


    cd install_dir\samples\ee-samples asant start-mq-master-broker1
  • 主控台 2


    cd install_dir\samples\ee-samples asant start-mq-cluster-broker1
  • 主控台 3


    cd install_dir\samples\ee-samples asant start-mq-cluster-broker2
  • 主控台 4


    cd install_dir\samples\ee-samples asadmin start-domain domain1

如果您已經執行任何其他 Enterprise Edition 範例的 asant setup-one-machine-cluster-without-haasant setup-one-machine-cluster-with-ha,則請執行 asant configure-mq;否則請執行 asant setup-one-machine-cluster-and-configure-mq。在這種情況下,指令顯示成功:


start_nodeagent: [echo] Start the node agent cluster1-nodeagent 
[exec] Command start-node-agent executed successfully.

然後系統會無限期懸置。 

解決方案

此時為 None。這種問題同樣影響在 Windows 上使用 ant 目標的所有 Enterprise Edition 範例。解決方法是按下 Ctrl+C 登出當機程序,然後再重新執行。

6198003 

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

拋出的錯誤如下: 


/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 部署目標。

6198239 

在 Linux 上,在 Web 服務/安全性範例中建立憑證期間發生執行階段錯誤。 

在 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

解決方案

執行下列動作之一: 

  • 設定 LD_LIBRARY_PATH=/opt/sun/private/lib

  • 將以下行增加到 install_dir/bin/asant 程序檔中:


    LD_LIBRARY_PATH=$AS_NSS:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH

安全性

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

錯誤 ID 

摘要 

6183318 

無法在包含 J2SE 5.0 的 Enterprise Edition 上執行 WebServiceSecurity 應用程式。

WebServiceSecurity 應用程式無法與 J2SE 5.0 一起執行,因為:

  • J2SE 5.0 PKCS11 不支援 UNWRAP 模式

  • J2SE 5.0 PKCS11 不支援 RSA/ECB/OAEPWithSHA1AndMGF1Padding 與 PKCS11 一起執行

J2SE 工作小組已將此錯誤歸檔為「CR 6190389:為 RSA-PKCS1 與 RSA-OAEP wrap/unwrap 機制新增支援」。 

解決方案

配合使用 J2SE 1.4.2與任何其他 JCE 提供者 (非依預設所包含的)。請注意,該配置中不存在硬體加速器支援。 

6269102 

SSL 終止無法正常工作;如果為 SSL 終止設定了負載平衡程式 (硬體),Application Server 會在重新導向期間將協定從 https 變更為 http

解決方案

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

升級公用程式

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

錯誤 ID 

摘要 

6165528 

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

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

解決方案

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

6207337 

在某些 Linux 系統上,按一下 [啟動升級精靈] 按鈕後,正在執行「適當的升級」的安裝程式無法啟動升級工具。 

此問題已在多個 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

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

6296105 

在從 8.0 Platform Edition (PE) 升級至 8.1 Enterprise Edition (EE) UR2 期間或升級之後,自我簽署的憑證不受信任。 

解決方案

從目標 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>

Web 容器

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

錯誤 ID 

摘要 

5004315 

在 Windows 上,使用 --precompilejsp=true 部署應用程式可鎖定應用程式中的 JAR 檔案,進而導致以後的取消部署或重新部署失敗。

如果您在 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 檔案,因此重新啟動後才能成功取消部署或重新部署。 

6172006 

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

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 載入順序並不重要。

6184122 

無法編譯資源受限伺服器上的 JSP 頁面。 

存取 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」。 

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

  • 通常,將 ${S1AS_HOME}/domains/domain1/config/default-web.xml 中 JspServlet 的衍生 init 參數設定為 false:


    <servlet> <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    .... <init-param>
    <param-name>fork</param-name> <param-value>false</param-value> 
    </init-param> .... </servlet>
  • 依據每個 Web 應用程式,將 sun-web.xml 中的 fork JSP 配置特性設定為 false:


    <sun-web-app> <jsp-config> <property name="fork" value="false" /> 
    </jsp-config> </sun-web-app>

每一種設定均可防止 ant 產生新的 javac 編譯程序。 

6188932 

Application Server 不支援 auth-passthrough Web Server 6.1 Add-On。

Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Update 2 還支援 Sun Java System Application Server Enterprise Edition 7.1 具備的 auth-passthrough 外掛程式功能所提供之功能。但是在 Application Server Enterprise Edition 8.1 2005Q2 Update 2 中,auth-passthrough 外掛程式功能的配置方式不同。

Application Server Enterprise Edition 7.1 中的 auth-passthrough 外掛程式功能在雙階層部署分析藍本中非常有用,其中:

  • Application Server 實例受公司防火牆後的第二道防火牆保護。

  • 不允許任何用戶端直接連線至 Application Server 實例。

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

在 Application Server Enterprise Edition 中,可在代理應用程式伺服器實例上配置 auth-passthrough 外掛程式功能,以直接為在其上部署的所有應用程式提供遠端用戶端資訊;這就好像代理應用程式伺服器實例直接接收請求,而不是透過執行 service-passthrough 外掛程式的中間 Web 伺服器接收請求。

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


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

 

Application Server Enterprise Edition 7.1 中 auth-passthrough 外掛程式功能的安全注意事項同樣適用於 Application Server Enterprise Edition 8.1 2005Q2 Update 2 中的 authPassthroughEnabled 特性。由於 authPassthroughEnabled 可以覆寫可用於認證目的之資訊 (例如,產生請求的 IP 位址或 SSL 用戶端憑證),因此,有必要僅允許受信任的用戶端或伺服器連線至將 authPassthroughEnabled 設定為 TRUE 的 Application Server Enterprise Edition 8.1 2005Q2 Update 2 實例。作為預警措施,建議您應僅將公司防火牆後的伺服器的 authPassthroughEnabled 設定為 TRUE。可透過網際網路存取的伺服器永遠不能將 authPassthroughEnabled 設定為 TRUE。

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