昨日,在將應用程序(JSF應用,其中包含Tiles包)發(fā)布至測試服務器(Solaris8+Tomcate5.5)時,發(fā)現(xiàn)其不能正常運行,其錯誤如下:
......
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet init
信息: Initializing TilesServlet
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet readFactoryConfig
信息: CONFIG FILES DEFINED IN WEB.XML
信息: initializing definitions factory...ets.TilesServlet initDefinitionsFactory
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet saveExceptionMessage
警告: Caught exception when initializing definitions factory
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet saveExceptionMessage
警告: I/O Error reading definitions.
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet saveExceptionMessage
s.
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet saveExceptionMessage
警告: Caught exception when initializing definitions factory
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet saveExceptionMessage
警告: I/O Error reading definitions.
2006-11-1 17:09:54 org.apache.tiles.servlets.TilesServlet saveExceptionMessage
警告: javax.servlet.ServletException: I/O Error reading definitions.
2006-11-1 17:09:55 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8800
......
根據(jù)此錯誤分析,是由于TilesServlet未正確讀取tiles.xml配置文件,但在對tiles.xml進行權(quán)限變更后,也未解決此問題!!!
但是,此應用在開發(fā)環(huán)境下是正常的,如何是好??
我和同事在對比開發(fā)環(huán)境和測試環(huán)境之后,發(fā)現(xiàn)二者的運行環(huán)境差別只有操作系統(tǒng)(UNIX<>WINDOWS XP);
搜索Google和BeiDu,找到一篇相類似的報到,據(jù)其所說,當他的系統(tǒng)在斷開網(wǎng)絡(luò)后會出現(xiàn)類似的情況,難道是TilesServlet必需聯(lián)上互聯(lián)網(wǎng)?
在分析tiles.xml后,發(fā)現(xiàn),其中有如下一句:
???<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "原來,當互聯(lián)網(wǎng)斷開之后,不能從tiles-config_2_0.dtd中獲取驗證,導致此文件解釋失敗,將此刪除之后,系統(tǒng)就可正常部屬在測試環(huán)境之中了.