如何强制tomcat重新加载最近编译的类/ war文件

时间:2011-01-22 01:12:42

标签: java tomcat6

我们在tomcat引擎上有一组正在运行的servlet。当我们编译一个java文件并构建war时,tomcat需要不确定的时间来重新加载它。有时3秒,有时30秒等。当前的解决方法是停止tomcat并使用shell脚本重新启动它。我们将autodeploy和reloadable标志设置为true,但它无法正常工作。知道如何实现这一目标吗?指针也很受欢迎。这是关于ubuntu的tomcat v6.0.20。

以下是我们的conf / server.xml文件的摘录:

<Engine name="Catalina" defaultHost="localhost">

  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">

    <DefaultContext reloadable="true">
    </DefaultContext>

    <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->

  </Host>
</Engine>

3 个答案:

答案 0 :(得分:6)

一种可能性是向Tomcat Manager App发送适当的请求;例如像这样的东西:

http://localhost:8080/manager/text/reload?path=/examples

答案 1 :(得分:1)

如果您有这个问题需要开发,我强烈推荐jetty。它可嵌入到您的代码中,因此您可以在代码中运行一个类并为您的webapp启动服务器!

你可以在Eclipse中调试应用程序,如果你将它用作构建环境(我记得在Eclipse中调试Tomcat应用程序,但我忘了怎么做),制作一个ant构建目标来运行jetty(即ant jetty),或者使用使用jetty插件启动你的码头服务器(mvn jetty:run)。

使用jetty,您还可以托管类似于Tomcat的服务器,在那里您可以复制新的战争并立即生效。

我们使用Tomcat作为我们的服务器应用程序,因为支持对它很熟悉,但我发现jetty对于开发来说是必不可少的。

答案 2 :(得分:0)

有时我所做的是从tomcat / work / Catalina / ...

中删除一个或多个文件夹
相关问题