2

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

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

4

2 回答 2

7

由于链接的问题并没有真正深入细节......

$CATALINA_BASE/conf/server.xml 中,您需要配置本地服务器以解包 WAR。这是我的开发服务器的示例:

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

默认情况下,Tomcat 将检查对 JSP 文件的更改。事实上,您必须为生产进行更改,如此所述。

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

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

如果您想避免难以追踪的错误,则不是。

于 2013-02-21T21:54:28.190 回答
1

我今天遇到了同样的问题,使用爆炸的 .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 也会重新加载其所有资源 :)

于 2017-10-11T14:10:25.070 回答