我使用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 "%r" %s %b" prefix="localhost_access_log." resolveHosts="false" suffix=".txt"/>
是的,我没有明确设置上下文路径,因为autoDeploy为true而Tomcat是为我做的。所以。这可能是个问题吗?
答案 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>