每次我在JSP文件中进行一些编辑时,我都不想构建war文件。我想要像PHP一样工作。如何热部署到tomcat服务器?是热部署java标准吗?
可以在我的软件的发布版本中使用这种热部署吗?
答案 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还会对其所有资源进行重新加载:)