我有一个Java Web应用程序,我正在使用Tomcat进行部署,但是我遇到了一些麻烦。
问题是我的web应用程序必须与某些本地库(通过JNI)进行通信,而且这些库不会正常处理错误,所以如果尝试启动Tomcat,并且本地调用失败,Tomcat启动会中途中止,并且不会启动。
我想要做的是Tomcat不启动这个Web应用程序,因为我会用其他方式启动Web应用程序,这将确保本地电话将工作。 具体来说,本地调用是与另一个必须已经运行的系统通信以使本地调用成功。
我发现的一个有趣的事情是,如果一旦Tomcat在本地库中成功运行故障,重新加载应用程序,只会导致上下文失败,Tomcat将继续正常运行。
我已经google了一下,看到指向context.xml文件的指针,但是我不清楚我是否可以使用它来实现我的目标,因为Tomcat引用似乎没有列出任何停止在启动时自动加载上下文的属性。
用于在启动时部署应用程序的tomcat 6行为由deployOnStartup参数控制到server.xml文件中的Host元素;
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="false" xmlValidation="false" xmlNamespaceAware="false" deployIgnore=".svn"> </Host>
但是,将autoDeploy设置为“true”时,tomcat还支持位于appBase或conf / localhost / Catalina文件夹中的war和context文件的热部署,因此不清楚tomcat是否会看到这些现有的war文件并部署它们。 因此,也可能需要设置autoDeploy =“false”。 在这种情况下,您需要使用tomcat manager工具将您的webapps部署到正在运行的tomcat服务器上