我们在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>
答案 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 / ...
中删除一个或多个文件夹