配置Struts2.0 啟動(dòng)taomcat時(shí)異常
Posted on 2007-07-06 17:54 落落 閱讀(2305) 評(píng)論(6) 編輯 收藏 所屬分類: java 、webwork異常信息:
2007-5-16 10:47:42 org.apache.coyote.http11.Http11AprProtocol init
信息: Initializing Coyote HTTP/1.1 on http-9090
2007-5-16 10:47:42 org.apache.coyote.ajp.AjpAprProtocol init
信息: Initializing Coyote AJP/1.3 on ajp-8009
2007-5-16 10:47:42 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 2164 ms
2007-5-16 10:47:43 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2007-5-16 10:47:43 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/
2007-5-16 10:47:43 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
2007-5-16 10:47:50 org.apache.catalina.core.StandardContext start
嚴(yán)重: Error filterStart
2007-5-16 10:47:50 org.apache.catalina.core.StandardContext start
嚴(yán)重: Context [/BookManage] startup failed due to previous errors
2007-5-16 10:47:51 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2007-5-16 10:47:51 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2007-5-16 10:47:52 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2007-5-16 10:47:52 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2007-5-16 10:47:57 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(C:\Tomcat 5.5\webapps\TopHyTree\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
2007-5-16 10:48:01 org.apache.coyote.http11.Http11AprProtocol start
信息: Starting Coyote HTTP/1.1 on http-9090
2007-5-16 10:48:02 org.apache.coyote.ajp.AjpAprProtocol start
信息: Starting Coyote AJP/1.3 on ajp-8009
2007-5-16 10:48:03 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2007-5-16 10:48:03 org.apache.catalina.startup.Catalina start
信息: Server startup in 20835 ms
紅色字體為出錯(cuò)信息,原來(lái)以為是用Filter(過(guò)濾器或者攔截器)出錯(cuò),因?yàn)榘?font color=#333333>把web.xml里的filter配置去掉,就正常起來(lái)了,在網(wǎng)上查找發(fā)現(xiàn)兩種情況:
1、運(yùn)用Filte包不齊全
2、第二種情況:
google里搜索Error filterStart里有個(gè)文章說(shuō)tomcat里的bug,沒(méi)有實(shí)現(xiàn)javax.servlet.Filter的Filter會(huì)報(bào)這樣的錯(cuò)誤:
看來(lái)tomcat在啟動(dòng)就初始化Filter實(shí)例了,可能是Filter里的啥東東執(zhí)行出錯(cuò)導(dǎo)致可能,看看Filter的init里用到一句
mServ = (ModuleService)WebUtils.getApplicationContext(config.getServletContext()).getBean("moduleService");
是最可能發(fā)生錯(cuò)誤了,因?yàn)檫@里用到了spring的org.springframework.web.context.ContextLoaderServlet,如果啟動(dòng)這時(shí)還沒(méi)有建立該servlet實(shí)例,務(wù)必導(dǎo)致獲取失敗,拋出錯(cuò)誤。先屏蔽一下這句話,果真啟動(dòng)正常了,修改一下代碼,將init里的這句話丟到了doFilter里面
if(mServ==null)
mServ = (ModuleService)WebUtils.getApplicationContext(filterConfig.getServletContext()).getBean("moduleService");
不過(guò)Tomcat也真是,解析web.xml的順序上還是太僵硬了。
我的出錯(cuò)情況:
經(jīng)仔細(xì)推敲查找發(fā)現(xiàn)是配置文件struts.xml配置時(shí)候action文件名錯(cuò)誤
原因:tomcat啟動(dòng)時(shí)會(huì)通過(guò)web.xml文件尋找struts.xml文件。又因struts2.0默認(rèn)有攔截器的,所以如果這里的有錯(cuò)誤信息,就會(huì)報(bào)Filter錯(cuò)誤,很容易引起誤導(dǎo)。