有没有办法让Tomcat在战争部署后立即启动应用程序?

有没有办法让Tomcat在战争部署后立即启动应用程序?,tomcat,servlets,Tomcat,Servlets,我的应用程序在第一次启动时需要进行一些昂贵的设置。似乎只要我在webapps中复制WAR文件,日志文件就会显示“DeployingWebApplicationArchiveNavaid.jar”,但在我点击URL之前,它实际上不会运行任何东西。我宁愿让第一个点击url的人忍受这个启动的等待时间。是否有一种“onDeploy”方法可以使用或执行该处理,或者我应该让ant复制文件,等待几秒钟,然后设置url?您可以在启动时在web.xml文件中指定几个servlet来加载。然后,他们可以调用应用程序

我的应用程序在第一次启动时需要进行一些昂贵的设置。似乎只要我在webapps中复制WAR文件,日志文件就会显示“DeployingWebApplicationArchiveNavaid.jar”,但在我点击URL之前,它实际上不会运行任何东西。我宁愿让第一个点击url的人忍受这个启动的等待时间。是否有一种“onDeploy”方法可以使用或执行该处理,或者我应该让ant复制文件,等待几秒钟,然后设置url?

您可以在启动时在
web.xml
文件中指定几个servlet来加载。然后,他们可以调用应用程序的各个部分,以确保它们已启动。

使用
ServletContextListener
接口实现一个类,然后在web.xml中将其声明为侦听器:

<listener>
  <listener-class> ...your class here... </listener-class>
</listener>

…你们班在这里。。。

您的类将在启动时(关闭时)被调用。

太棒了,这很有效。现在,我只需要弄清楚如何让其他servlet阻止响应,直到完成此操作,但这是另一个问题。在对ServletContextListener的调用完成之前,容器不会调用任何servlet。看见