如何将jsp文件热部署到tomcat?

时间:2013-02-21 21:37:29

标签: java jsp tomcat

每次我在JSP文件中进行一些编辑时,我都不想构建war文件。我想要像PHP一样工作。如何热部署到tomcat服务器?是热部署java标准吗?

可以在我的软件的发布版本中使用这种热部署吗?

2 个答案:

答案 0 :(得分:6)

由于链接的问题并没有真正详细说明......

$CATALINA_BASE/conf/server.xm l中,您需要配置本地服务器以解压缩WAR。以下是我的开发服务器的示例:

 <Host appBase="webapps" autoDeploy="true" deployOnStartup="true" 
       deployXML="true" name="localhost" unpackWARs="true">

默认情况下,Tomcat将检查JSP文件的更改。实际上,您需要更改生产,如here所述。

通过这些更改,您将在$CATALINA_BASE/work/Catalina/localhost中找到您的网络应用程序(再次假设是默认安装;如果您正在配置服务器名称,则不会是localhost) 。就地编辑文件,下次加载页面时会出现更改。

  

这种热部署是否可用于我软件的发布版本

如果您想避免难以追踪的错误,请不要这样做。

答案 1 :(得分:0)

我今天遇到了同样的问题,使用爆炸的.war并没有为我剪掉它。

我的解决方案是在Tomcat($CATALINA_BASE\conf\context.xml)中使用以下context.xml文件:

<Context reloadable="true"> 
    <Resources cachingAllowed="false" cacheMaxSize="0" />

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <Manager pathname="" />
</Context>

我还在Jsp的客户端缓存中使用了以下内容:

<%
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0);
%>
在tomcat重启后

可以将Jsp复制到$CATALINA_BASE\webapps\<context>\WEB-INF\...

并在浏览器中快速重新加载(F5)以查看更改。

Bonus:当我将.class或.jar文件复制到/ WEB-INF中时,Tomcat还会对其所有资源进行重新加载:)