dd(init-param,context-param)反映tomcat中反映的变化而不会重新部署



我如今正在遵循headfirst jsp和servlets书,它说servletconfig对象只在servlet的生命周期中创建了一次,然后才传递到servlet的初始方法。

我正在测试书中给出的一些示例,以使用out.println方法httpservletResponse打印出我的WebApp中定义的init-params和上下文 - 帕拉姆。

我看到的是,如果我对DD进行任何更改(添加或更改param名称,值(,然后在我的Chrome浏览器中重新加载URL,指向WebApp中的该特定的Servlet,则会使用新添加的params更新。不应该这样。我不是在重新部署servlet(再次停止并重新运行Tomcat服务(,这将导致ServletConfig对象重新创建。这里发生了什么?

我在Windows 8上的Tomcat9上运行此内容,而本书则是指tomcat5。此后是否有更改为动态更新ServletConfig和上下文init params?我看不到任何在互联网上指示这一点的东西。

查看tomcat日志,您将看到该应用程序被重新部署。

默认情况下,对Web.xml的更改将触发应用程序重新部署。检查修改每10-15秒进行一次检查(我忘记了确切的频率(。

这是默认行为,tomcat自动重新删除应用程序当/web-inf/web.xml文件更新时。

根据文档http://tomcat.apache.org/tomcat-9.0-doc/deployer-howto.html#deploying_on_a_a_running_tomcat_server:

&quot"如果主机自动播放属性为" true",则主机将尝试根据需要动态部署和更新Web应用程序,例如,如果将新.WAR丢弃到AppBase中。为此,主机需要启用背景处理,这是默认配置。

自动eploy设置为" true"并且运行的tomcat允许:

如果/web-inf/web.xml文件(或定义为WatchedResource的任何其他资源(,请重新加载Web应用程序。"

绕过默认行为集 autodeploy false并重新启动tomcat。您可以更新server.xml以将autodeploy设置为false值。$ catalina_base/conf。标签名称为主机,如下所示

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

我只能更新" server.xml"文件,尽管该文档说:在tomcat的早期版本中,上下文描述符配置的内容通常存储在Tomcat的主要配置文件server.xml中,但现在被劝阻(尽管当前仍然有效(。>> >> >

因此,在回答您的查询时,根据Tomcat 5.x.x和Tomcat 9.x.x.的文档,没有关于设置 autodeploy 的变化。我还在运行tomcat 9.x.x时,当我通过将自动编号设置为false来验证此默认行为。

最新更新