Dear all, I reported having problem deploying my war file with multi-level context path on Tomcat 6.0.20. Beside the sitemesh issue, is it possible that the problem be due to JDK 1.5 or Java 5, that has issue understanding the symbol '#' in war filename.
Ref: https://issues.apache.org/bugzilla/show_bug.cgi?id=43150 The bug is said to be fixed from v6.0.17 onwards though. I would appreciate if anybody can tell if he/she has successfully deployed with multi-level context path. I tried having the context element (given below) inside server.xml and the multi-level context path works! <Context path="/sg/server/test" docBase="test" reloadable="true" crossContext="false" allowLinking="true" /> However, Tomcat 6 deploys the war file twice every time it starts up. It could be due to context element being defined under server.xml and Catalina/localhost/xxx.xml. So this method needs tweaking afterall. Thank you. Best Regards, Andy Ee -----Original Message----- From: Ognjen Blagojevic [mailto:ogn...@etf.bg.ac.rs] Sent: Monday, August 17, 2009 7:54 PM To: Tomcat Users List Subject: Re: Multi-Level Context Paths Try here: http://www.opensymphony.com/sitemesh/userForums.action Regards, Ognjen Andy Ee wrote: > Hi Ognjen, > > Are you able to advice the mailing list for sitemesh? Is it under Tomcat as > well? > > Best Regards, > Andy Ee > > > > -----Original Message----- > From: Ognjen Blagojevic [mailto:ogn...@etf.bg.ac.rs] > Sent: Monday, August 17, 2009 7:31 PM > To: Tomcat Users List > Subject: Re: Multi-Level Context Paths > > Hi Andy, > > On Tomcat side everything seems to work just fine. > > It seems that sitemash (wrongly) assumes the location of the file config > file. Try on sitemesh forum/mailing list. > > > Caused by: com.opensymphony.module.sitemesh.factory.FactoryException: > Could > > not read config file : /WEB-INF/sitemesh.xml: > java.io.FileNotFoundException: > > /usr/local/apache-tomcat/webapps/sg (No such file or directory) > > Regards, > Ognjen > > > Andy Ee wrote: >> Hi Ognjen, >> >> >> >> Thank you for your quick response! >> >> >> >> I have undeployed the old application (test.war) under Tomcat Manager, as >> well as renamed test.war to sg#server#test.war under webapps. Without the >> need to restart Tomcat, I saw the new project directory created under >> /webapps/sg#server#test after awhile. >> >> >> >> I tried to access http://localhost:8080/sg/server/test but it doesn't > work. >> >> >> Under catalina.out log: >> >> >> >> INFO: Undeploying context [/test] >> >> Aug 17, 2009 6:57:24 PM org.apache.catalina.startup.HostConfig deployWAR >> >> INFO: Deploying web application archive sg#server#test.war >> >> [test] DEBUG [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> StartupListener.contextInitialized(44) | initializing context... >> >> AbandonedObjectPool is used >> (org.apache.commons.dbcp.abandonedobjectp...@169be56) >> >> LogAbandoned: false >> >> RemoveAbandoned: true >> >> RemoveAbandonedTimeout: 60 >> >> [test] INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> DefaultValidatorFactory.setValidationConfigLocations(78) | Loading >> validation configurations from [ServletContext resource >> [/WEB-INF/validation.xml],ServletContext resource >> [/WEB-INF/validator-rules.xml],ServletContext resource >> [/WEB-INF/validator-rules-custom.xml]] >> >> [test] DEBUG [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> MS3Crypto.initParams(53) | Initializing crypto parameters. >> >> [test] DEBUG [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> MS3Crypto.initParams(80) | Raw Seed : [...@87c801 >> >> [test] DEBUG [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> StartupListener.contextInitialized(95) | Remember Me Enabled? null >> >> [test] INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> LocaleFilter.init(152) | Initializing filter 'localeFilter' >> >> [test] INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> LocaleFilter.init(177) | Filter 'localeFilter' configured successfully >> >> [test] INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> GZIPFilter.init(152) | Initializing filter 'compressionFilter' >> >> [test] INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] >> GZIPFilter.init(177) | Filter 'compressionFilter' configured successfully >> >> Aug 17, 2009 6:57:44 PM org.apache.catalina.core.StandardContext start >> >> SEVERE: Error filterStart >> >> Aug 17, 2009 6:57:44 PM org.apache.catalina.core.StandardContext start >> >> SEVERE: Context [/singapore/dbs/test] startup failed due to previous > errors >> >> >> Under localhost log: >> >> >> >> Aug 17, 2009 6:57:44 PM org.apache.catalina.core.StandardContext > filterStart >> SEVERE: Exception starting filter sitemesh >> >> com.opensymphony.module.sitemesh.factory.FactoryException: Cannot > construct >> Factory : com.opensymphony.module.sitemesh.factory.DefaultFactory: >> java.lang.reflect.InvocationTargetException >> >> at > com.opensymphony.module.sitemesh.Factory.report(Factory.java:87) >> at >> com.opensymphony.module.sitemesh.Factory.getInstance(Factory.java:56) >> >> at >> > com.opensymphony.module.sitemesh.filter.PageFilter.init(PageFilter.java:86) >> at >> > org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilter >> Config.java:275) >> >> at >> > org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFil >> terConfig.java:397) >> >> at >> > org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterCon >> fig.java:108) >> >> at >> > org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:38 >> 00) >> >> at >> org.apache.catalina.core.StandardContext.start(StandardContext.java:4450) >> >> at >> > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7 >> 91) >> >> at >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) >> >> at >> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) >> >> at >> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850) >> >> at >> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724) >> >> at >> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493) >> >> at >> org.apache.catalina.startup.HostConfig.check(HostConfig.java:1274) >> >> at >> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:296) >> >> at >> > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor >> t.java:119) >> >> at >> > org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java: >> 1337) >> >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC >> hildren(ContainerBase.java:1601) >> >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC >> hildren(ContainerBase.java:1610) >> >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(Cont >> ainerBase.java:1590) >> >> at java.lang.Thread.run(Thread.java:619) >> >> >> >> Root cause: >> >> java.lang.reflect.InvocationTargetException >> >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >> Method) >> >> at >> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcces >> sorImpl.java:39) >> >> at >> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstruc >> torAccessorImpl.java:27) >> >> at java.lang.reflect.Constructor.newInstance(Constructor.java:513) >> >> at >> com.opensymphony.module.sitemesh.Factory.getInstance(Factory.java:52) >> >> at >> > com.opensymphony.module.sitemesh.filter.PageFilter.init(PageFilter.java:86) >> at >> > org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilter >> Config.java:275) >> >> at >> > org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFil >> terConfig.java:397) >> >> at >> > org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterCon >> fig.java:108) >> >> at >> > org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:38 >> 00) >> >> at >> org.apache.catalina.core.StandardContext.start(StandardContext.java:4450) >> >> at >> > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7 >> 91) >> >> at >> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) >> >> at >> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) >> >> at >> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850) >> >> at >> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724) >> >> at >> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493) >> >> at >> org.apache.catalina.startup.HostConfig.check(HostConfig.java:1274) >> >> at >> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:296) >> >> at >> > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor >> t.java:119) >> >> at >> > org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java: >> 1337) >> >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC >> hildren(ContainerBase.java:1601) >> >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC >> hildren(ContainerBase.java:1610) >> >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(Cont >> ainerBase.java:1590) >> >> at java.lang.Thread.run(Thread.java:619) >> >> Caused by: com.opensymphony.module.sitemesh.factory.FactoryException: > Could >> not read config file : /WEB-INF/sitemesh.xml: > java.io.FileNotFoundException: >> /usr/local/apache-tomcat/webapps/sg (No such file or directory) >> >> at > com.opensymphony.module.sitemesh.Factory.report(Factory.java:87) >> at >> > com.opensymphony.module.sitemesh.factory.DefaultFactory.loadConfig(DefaultFa >> ctory.java:131) >> >> at >> > com.opensymphony.module.sitemesh.factory.DefaultFactory.<init>(DefaultFactor >> y.java:57) >> >> ... 25 more >> >> Aug 17, 2009 6:57:44 PM org.apache.catalina.core.ApplicationContext log >> >> INFO: Closing Spring root WebApplicationContext >> >> >> >> >> >> Any idea? Thanks. >> >> >> >> Best Regards, >> Andy Ee >> >> >> >> >> -----Original Message----- >> From: Ognjen Blagojevic [mailto:ogn...@etf.bg.ac.rs] >> Sent: Monday, August 17, 2009 7:00 PM >> To: Tomcat Users List >> Subject: Re: Multi-Level Context Paths >> >> >> >> Hi Andy, >> >> >> >> Try to undeploy the old application. Rename the test.war to >> >> sg#server#test.war, and deploy it. >> >> >> >> Regards, >> >> Ognjen >> >> >> >> Andy Ee wrote: >> >>> >> >>> Dear All, >> >>> >> >>> I need an urgent help, and I hope you will shed some light to it. >> >>> >> >>> I have recently installed Apache Tomcat version 6.0.20. I copied my >> project >> >>> file (test.war) under /usr/local/apache-tomcat-6.0.20/webapps/ and it >>> deployed successfully. I can access the site via the URL of >>> <http://localhost:8080/ms3/> http://localhost:8080/test/. For this >> example, >> >>> the context path simply follows the filename of the war file. >> >>> >> >>> There is a new requirement to setup multi-level context path as in I need >>> the URL to be <http://localhost:8080/sg/server/test/> >>> http://localhost:8080/sg/server/test/ instead. I read up your site and >>> confirmed that adding Context path within server.xml is not recommended. > I >>> went ahead to make a copy of the existing test.xml to sg#server#test.xml >>> under /usr/local/apache-tomcat-6.0.20/conf/Catalina/localhost/. Then I >>> restarted Tomcat. >> >>> >> >>> The content of sg#server#test is: >> >>> >> >>> <Context path="/test" debug="99" reloadable="true" >> >>> antiJARLocking="true" antiResourceLocking="false"> >> >>> >> >>> <!--Resource name="jdbc/test" auth="Container" >>> type="javax.sql.DataSource" >> >>> maxActive="100" maxIdle="30" maxWait="10000" >> >>> driverClassName="oracle.jdbc.driver.OracleDriver" >> >>> username="MS3_STL" password="password" >> >>> url="jdbc:oracle:thin:@192.168.0.37:1521:MS3" >> >>> defaultAutoCommit="true" removeAbandoned="true" >> >>> removeAbandonedTimeout="60" logAbandoned="true"/--> >> >>> </Context> >> >>> >> >>> I restarted Tomcat but it gives errors under Catalina.out >> >>> >> >>> Aug 17, 2009 5:54:43 PM org.apache.catalina.core.StandardContext >>> resourcesStart >> >>> SEVERE: Error starting static Resources >> >>> java.lang.IllegalArgumentException: Document base >>> /usr/local/apache-tomcat/webapps/sg#server#test does not exist or is not > a >>> readable directory >> >>> at >> > org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:14 >>> 2) >> >>> at >> > org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java >>> :4048) >> >>> at >>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4217) >> >>> at >> > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7 >>> 91) >> >>> at >>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) >> >>> at >>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) >> >>> at >> > org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630) >> >>> at >> > org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556 >>> ) >> >>> at >>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491) >> >>> at >>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206) >> >>> at > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314) >> >>> at >> > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor >>> t.java:119) >> >>> at >>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) >> >>> at >>> org.apache.catalina.core.StandardHost.start(StandardHost.java:722) >> >>> at >>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) >> >>> at >>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) >> >>> at >>> org.apache.catalina.core.StandardService.start(StandardService.java:516) >> >>> at >>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710) >> >>> at org.apache.catalina.startup.Catalina.start(Catalina.java:583) >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> >>> at >> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 >>> ) >> >>> at >> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl >>> .java:25) >> >>> at java.lang.reflect.Method.invoke(Method.java:597) >> >>> at > org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) >> >>> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) >> >>> Aug 17, 2009 5:54:43 PM org.apache.catalina.core.StandardContext start >> >>> SEVERE: Error in resourceStart() >> >>> Aug 17, 2009 5:54:43 PM org.apache.catalina.core.StandardContext start >> >>> SEVERE: Error getConfigured >> >>> Aug 17, 2009 5:54:43 PM org.apache.catalina.core.StandardContext start >> >>> SEVERE: Context [/sg/server/test] startup failed due to previous errors >> >>> Aug 17, 2009 5:54:43 PM org.apache.catalina.core.StandardContext stop >> >>> INFO: Container >> > org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/sg/server/te >>> st] has not been started >> >>> Aug 17, 2009 5:54:43 PM org.apache.coyote.http11.Http11Protocol start >> >>> INFO: Starting Coyote HTTP/1.1 on http-6060 >> >>> Aug 17, 2009 5:54:43 PM org.apache.coyote.http11.Http11Protocol start >> >>> INFO: Starting Coyote HTTP/1.1 on http-6443 >> >>> Aug 17, 2009 5:54:43 PM org.apache.jk.common.ChannelSocket init >> >>> INFO: JK: ajp13 listening on /0.0.0.0:6009 >> >>> Aug 17, 2009 5:54:43 PM org.apache.jk.server.JkMain start >> >>> INFO: Jk running ID=0 time=0/40 config=null >> >>> Aug 17, 2009 5:54:43 PM org.apache.catalina.startup.Catalina start >> >>> INFO: Server startup in 18859 ms >> >>> >> >>> I have searched the Internet and couldn't find any posts with solutions > to >>> such issue. It seems that setting up multi-level context path in Tomcat 6 >> is >> >>> not so straight-forwarded. >> >>> >> >>> Please kindly help, thanks. >> >>> >> >>> Best Regards, >>> Andy Ee >> >> >> >>> >> >>> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> >> >> >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org