了解tomcat 6中的context.xml
我在eclipse中创建了一个主要空的动态Web项目。
它有
- 没有servlet
- 没有jsp文件
web.xml是
testprojekt index.html index.htm index.jsp default.html default.htm default.jsp
我在其META-INF
文件夹中添加了一个context.xml
我将此项目导出为WAR文件。 具有以下结构:
user@system:$ tree . |-- META-INF | |-- MANIFEST.MF | `-- context.xml `-- WEB-INF |-- classes |-- lib `-- web.xml 4 directories, 3 files
当我将项目部署到本地tomcat(Apache Tomcat / 6.0.20)时,一切都按预期工作。 这意味着,context.xml被复制到/ conf / Catalina / localhost并重命名为testprojekt.xml。
当我将testprojekt.xml编辑为:
我在catalina.out中看到以下输出:
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
这是为什么? 这是预期的结果吗? 在context.xml
更改参数的正确方法是什么?
先谢谢你。 问候,
我认为这是Tomcat中的一个错误。 我提交了一份错误报告,但他们声称它按设计工作。 Tomcat有3种部署模式:Directory,WAR和Context Fragment。 在您的情况下,重新加载时会感到困惑。
这是导致错误的序列,
- 部署WAR时,上下文片段(META-INF / context.xml)将复制到conf / Catalina / [host]目录。
- 修改片段时,它会正确检测到更改,因此会触发重新部署。
- 但是,它会忘记这是一个WAR部署,并将其视为目录部署。 该目录由undelpoy删除,因此您收到错误。
如果您只更改META-INF中的XML,那么一切都应该适合您。
你的问题有点模棱两可,但我会试一试。
删除您编辑的textprojekt.xml,在项目的context.xml中进行相同的更改,然后重新启动tomcat。
它可能是由两个xml文件之间的冲突引起的。 更改tomcat创建的xml文件不会更改webapp的context.xml文件。 至少它在我用于开发工作的tomcat6.0.18上没有改变。
希望这很有帮助。