我不想每次在 JSP 文件中进行一点编辑时都构建一个 war 文件。我希望事情能像 PHP 一样工作。如何热部署到 tomcat 服务器?热部署是java标准吗?
这种热部署可以在我的软件的发布版本中使用吗?
由于链接的问题并没有真正深入细节......
在$CATALINA_BASE/conf/server.xm
l 中,您需要配置本地服务器以解包 WAR。这是我的开发服务器的示例:
<Host appBase="webapps" autoDeploy="true" deployOnStartup="true"
deployXML="true" name="localhost" unpackWARs="true">
默认情况下,Tomcat 将检查对 JSP 文件的更改。事实上,您必须为生产进行更改,如此处所述。
进行这些更改后,您将在其中找到您的网络应用程序$CATALINA_BASE/work/Catalina/localhost
(再次假设默认安装;如果您正在配置服务器名称,则不会是localhost
)。就地编辑文件,下次加载页面时将显示更改。
这种热部署是否可以在我的软件的发布版本中使用
如果您想避免难以追踪的错误,则不是。
我今天遇到了同样的问题,使用爆炸的 .war 并没有为我解决问题。
我的解决方案是在 Tomcat ( ) 中也使用以下 context.xml 文件$CATALINA_BASE\conf\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) 以查看更改。
奖励:当我现在将 .class 或 .jar 文件复制到 /WEB-INF 时,Tomcat 也会重新加载其所有资源 :)