我正在开发一个基于Web的Java应用程序,(显然)必须在开发过程中在本地运行。 我已经find了Tomcat文档,并在/etc/tomcat6/Catalina/localhost/
有一个合适的context.xml文件,但是每/etc/tomcat6/Catalina/localhost/
,Tomcat就决定删除它! 这意味着我必须把它放回去,重新启动Tomcat。
为什么这样做? 我已经search了关于它的Tomcat文档,并没有更聪明。
(哦是的:它实际上不是被称为context.xml
而是owners.xml
因为这是该应用程序的HTTPpath前缀。)
更新
我现在看到了Tomcat 在Tomcat运行的时候删除了这个文件。 我想我需要提交一个bug …
快速总结 :有几个条件(如更改war文件,删除webapp或replace为新的内容),在这些条件下,tomcat将取消部署上下文(包括删除上下文文件)。
详细信息 :tomcat是否执行autoDeployment(意味着检查.xml描述符中的更改以及检查webapp目录中的更改)是由以下方面驱动的:
位于$ CATALINA_HOME / conf / server.xml部分的server.xml:
<Host name =“localhost”appBase =“webapps”unpackWARs =“true” autoDeploy =“true” xmlValidation =“false”xmlNamespaceAware =“false”>
你也可以在你的上下文文件中设置这个属性来重载这个值
在autoDeploy = true的情况下引用文档以处理案例可能会导致您的上下文文件被删除:
详尽的细节 : http : //tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment
如果您不需要autoDeployfunction,例如在生产环境中,可以考虑conf / Catalina / localhost上下文文件中的以下属性:
autoDeploy =“false”可能无法单独工作,因为应用程序context.xml(在META-INF中)可以覆盖autoDeploy的server.xml设置。
deployXML属性文档属性文档值得一读(§标准实现)。
详尽的autoDeploy用户案例,当上下文被删除:即应用程序被取消部署,用户案例logging可以在这里find。
无法回答为什么位。
但是, 此链接指出您可以通过在server.xml
设置autoDeploy="false"
来停止此操作
我真的不知道Tomcat背后的原因是什么,但是尝试将下面的XML属性添加到您的上下文元素
reloadable="false"
所以你的上下文可能看起来像这样:
<Context path="/" docBase="/some/path/name" reloadable="false"> <!-- Context related stuff --> </Context>
这应该让Tomcat删除文件
有时需要在服务器上有不同的应用程序值,例如存储上传文件的path。 在开发者环境中,我们有这样的东西:
<?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" reloadable="false"> <Parameter name="rutaTrabajo" value="C:\Larry\Proyectos\app\rutaTrabajoxx" override="true"/> </Context>
但在服务器的path是不同的:
<?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" > <Parameter name="rutaTrabajo" value="/usr/share/App/rutaTrabajo" override="true"/> </Context>
我也有同样的问题,tomcat从conf / Catalina / localhost删除context.xml(meapp.xml)
为了解决我使用context.xml.default,在相同的path中创build一个名为context.xml.default的文件,并在一个putconfiguration我想要举行:
cat context.xml.default <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/ParkMeServer" allowCasualMultipartParsing="true" > <Parameter name="rutaTrabajo" value="/usr/share/ParkiMeApp/rutaTrabajo" override="true"/> </Context>
所以,当重新部署应用程序时,确认参数仍然存在。
我意识到这是一个古老的线索,但我想我会分享我发现解决这个问题…
我一直有问题,我的桌面版本的tomcat的context.xml文件得到破坏,每次我会为我的应用程序部署战争文件的新副本。
这个问题是由于我直接在文件系统上修改这个文件。 解决这个问题的方法是通过Eclipse编辑器编辑context.xml文件。 在我的Eclipse里面,有一个“servers”项目,一旦你展开它,你可以看到一些文件,比如context.xml和server.xml。 看来,如果你从这里修改文件而不是出去到文件系统,你的修改是保留的。
我在以下线程中find了此解决scheme: https : //www.liferay.com/community/forums//message_boards/message/16511799
我希望这可以帮助别人!
-StephenS