Tomcat没有更新WAR并且拒绝死亡 - 部署蓝调

时间:2012-02-16 07:36:48

标签: java tomcat deployment war

我使用Ant脚本部署3个WAR文件,并使用startup / shutdown.sh停止并启动tomcat。当我执行shutdown.sh时,Tomcat进程不会死。如果我忘了做一个“lsof -i:8080”后跟kill,那么,tomcat仍然会启动但是firefox不会加载页面。为什么Tomcat没有优雅地死?

第二个问题:早些时候我曾经使用Eclipse来处理Tomcat服务器的启动/停止。如果对js文件进行更新,在WebContent中,只需以debug = true模式启动站点就足够了。但是现在,当从命令行使用Tomcat时,我必须重新生成WAR文件,然后重新启动Tomcat以使更改生效。为什么会这样?

我的conf / server.xml文件的相关部分:

<Host appBase="/home/local/deploy/eclipse/webapps" autoDeploy="true" name="localhost" unpackWARs="true">

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

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." resolveHosts="false" suffix=".txt"/>

是的,我没有明确设置上下文路径,因为autoDeploy为true而Tomcat是为我做的。所以。这可能是个问题吗?

1 个答案:

答案 0 :(得分:1)

你的第一个问题不是那么清楚,而且确实经常发生在我身上。有时我必须发出一个kill -9。这可能是因为Tomcat以某种方式持有一个活跃的重要容器线程。

第二个问题更容易一些。如果您使用的是eclipse安装外部的tomcat实例,则无法“轻松”利用某些热部署功能。你过去的方式,你很可能使用eclipse wst插件。这允许tomcat容器在eclipse中运行和管理。

每当您将应用程序部署到eclipse wst tomcat实例时,您实际上是将其部署到镜像tomcat的插件文件夹中。

插件文件夹通常位于$ eclispe_home / .metadata / .plugins / org.eclispe.wst.server.core / tmp0 / wtpwebapps。

如果您正在使用外部tomcat实例并且没有将其链接到eclipse,那么您将拥有一个完全隔离的环境,并且必须手动或通过创建某种构建器进程将所有更改推送到tomcat。 / p>