配置 Tomcat 以在启动时不自动加载 web 应用程序

配置 Tomcat 以在启动时不自动加载 web 应用程序

我有一个 Java Web 应用程序,正在使用 Tomcat 进行部署,但是遇到了一些问题。

问题是我的 Web 应用程序必须与一些本机库对话(通过 JNI),而这些库不能很好地处理错误,因此如果我尝试启动 Tomcat 并且本机调用失败,Tomcat 启动就会中途停止并且无法启动。

我希望 Tomcat 在启动时不启动此 Web 应用程序,因为我将使用其他方式启动 Web 应用程序,以确保本机调用能够正常工作。具体来说,本机调用将与另一个系统通信,该系统必须已在运行,本机调用才能成功。

我发现一件有趣的事情是,如果我在 Tomcat 成功运行后重新加载应用程序,本机库中的故障只会导致上下文失败,而 Tomcat 会继续正常运行。

我已经在 Google 上搜索过并看到了指向 context.xml 文件的指针,但我不清楚是否可以使用它来实现我的目标,因为 Tomcat 参考似乎没有列出任何可以阻止在启动时自动加载上下文的属性。

答案1

Tomcat 6 在启动时部署应用程序的行为由deployOnStartupHost文件中元素中的参数server.xml

 <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 管理器工具将您的 webapps 部署到正在运行的 tomcat 服务器

相关内容