Understanding context.xml in tomcat 6

I created a mostly empty dynamic web project in Eclipse.

He has

  • no servlets
  • no jsp files

Web .xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>testprojekt</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app> 

and I added context.xml to the META-INF folder

 <?xml version="1.0" encoding="UTF-8"?> <Context> <Parameter name="companyName" value="My Company, Incorporated" override="false"/> </Context> 

I exported this project as a WAR file. With the following structure:

 user@system :$ tree . |-- META-INF | |-- MANIFEST.MF | `-- context.xml `-- WEB-INF |-- classes |-- lib `-- web.xml 4 directories, 3 files 

When I deploy the project to a local tomcat (Apache Tomcat / 6.0.20), everything works as expected. The value context.xml is copied to / conf / Catalina / localhost and renamed to testprojekt.xml.

When I edit testprojekt.xml for:

 <?xml version="1.0" encoding="UTF-8"?> <Context> <Parameter name="companyName" value="My BLAH Company, Incorporated" override="false"/> </Context> 

I see the following result in the catalina.out file:

 02.11.2009 13:21:35 org.apache.catalina.startup.HostConfig checkResources INFO: Undeploying context [/testprojekt] 02.11.2009 13:21:35 org.apache.catalina.core.StandardContext resourcesStart SCHWERWIEGEND: Error starting static Resources java.lang.IllegalArgumentException: Document base /opt/tomcat6/webapps/testprojekt does not exist or is not a readable directory at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142) 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:791) 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.check(HostConfig.java:1274) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:296) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590) at java.lang.Thread.run(Thread.java:619) 02.11.2009 13:21:35 org.apache.catalina.core.StandardContext start SCHWERWIEGEND: Error in resourceStart() 02.11.2009 13:21:35 org.apache.catalina.core.StandardContext start SCHWERWIEGEND: Error getConfigured 02.11.2009 13:21:35 org.apache.catalina.core.StandardContext start SCHWERWIEGEND: Context [/testprojekt] startup failed due to previous errors 02.11.2009 13:21:35 org.apache.catalina.core.StandardContext stop INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/testprojekt] has not been started 

Why? Is this the expected result? What is the correct way to change parameters in context.xml ?

Thanks in advance. Yours faithfully,

+6
java tomcat6
source share
2 answers

I think this is a bug in Tomcat. I filed an error message, but they claim that it works according to the project. Tomcat has 3 deployment modes: directory, WAR, and context fragment. In your case, it gets confused on reboot.

Here is the sequence leading to the error,

  • When a WAR is deployed, the context fragment (META-INF / context.xml) is copied to the conf / Catalina / [host] directory.
  • When you modify a fragment, it correctly defines the change, so the redistribution is started.
  • However, he forgets about this WAR deployment and sees it as a directory deployment. The directory is deleted using undelpoy, so you get an error.

If you only change the XML in META-INF, everything should work for you.

+2
source share

Your question is a bit ambiguous, but I will give it a try.

Delete the textprojekt.xml that you edited, make the same changes to context.xml for your project, and restart tomcat.

This may be caused by a conflict between the two xml files. Changing the xml file created by tomcat does not allow changing the context.xml file for webapp. At least it doesn't change to tomcat6.0.18, which I use for dev to work.

Hope this helps.

0
source share

All Articles