我们有一套在tomcat引擎上运行的servlet。当我们编译一个java文件并构建这场战争时,tomcat需要花费不确定的时间来重新加载它。有时3秒,有时30秒等。目前的解决方法是停止tomcat并使用shell脚本重新启动它。我们将autodeploy和reloadable标志设置为true,但不能可靠地工作。任何想法如何做到这一点?指针也赞赏。这是关于ubuntu上的tomcat v6.0.20。如何强制tomcat重新加载最近编译的类/ war文件
这里是我们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>
这就是我们的解决方法脚本正在做的 - 停止Tomcat,等待(休眠)几秒钟,启动它,再睡一会儿,然后发出一个URL请求(wget $ tomcatURL)。有一半时间我们收到错误消息,在这种情况下,我们只是重新运行脚本。当我们没有得到错误信息并获得一些html内容时,我们知道tomcat已经开始使用当前的war/class文件。我会说,真是糟糕的开始守护进程的方法。 – 2011-01-22 03:19:01