首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无需重新部署即可在Tomcat中反映DD (init-param,context-param)的更改

无需重新部署即可在Tomcat中反映DD (init-param,context-param)的更改
EN

Stack Overflow用户
提问于 2019-07-03 02:32:03
回答 2查看 56关注 0票数 0

我最近一直在阅读headfirst JSP and servlet一书,书中说在servlet的生命周期中,ServletConfig对象在传递给servlet的初始化方法之前只创建一次。

我正在测试书中给出的一些示例,以便使用HttpServletResponse的out.println方法打印出在我的webapp的DD中定义的初始化参数和上下文参数。

我看到的是,如果我在DD中做了任何更改(添加或更改参数名称、值),并在我的chrome浏览器中重新加载指向webapp内的特定servlet的URL,它将使用新添加的参数进行更新。事实并非如此。我没有重新部署servlet (通过停止并重新运行tomcat服务),这将导致重新创建ServletConfig对象。这是怎么回事?

当这本书提到tomcat5时,我是在Windows8的tomcat9上运行这个程序的。自那以后是否有动态更新ServletConfig和上下文初始化参数的更改?我在互联网上看不到任何这方面的信息。

EN

回答 2

Stack Overflow用户

发布于 2019-07-04 00:42:31

看看Tomcat的日志,你会看到应用程序正在被重新部署。

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

票数 1
EN

Stack Overflow用户

发布于 2021-02-16 02:12:26

这是默认行为,当/WEB-INF/web.xml文件更新时,tomcat会自动重新部署应用程序。

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

“如果主机autoDeploy属性为"true",主机将根据需要尝试动态部署和更新web应用程序,例如,如果将新的.WAR放入appBase中。为此,主机需要启用后台处理,这是默认配置。

autoDeploy设置为"true“,并且运行Tomcat允许:

如果更新了/ web -INF/web.xml文件(或任何其他定义为WatchedResource的资源),则重新加载WEB应用程序。“

要绕过默认行为,请将autoDeploy设置为false并重新启动tomcat。您可以更新server.xml以将autoDeploy设置为false位于$CATALINA_BASE/conf的value.The文件。标记名称为主机,如下所示

代码语言:javascript
复制
    <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

我只能更新" server.xml“文件,尽管文档说:在Tomcat的早期版本中,上下文描述符配置的内容通常存储在Tomcat的主配置文件server.xml中,但现在不鼓励这样做(尽管它目前仍然有效)。

所以在回答您的问题时,没有根据Tomcat5.x.x和Tomcat9.x.x的文档将autoDeploy设置为true或false。我还在运行tomcat9.x.x,因为我通过将autoDeploy设置为false来验证此默认行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56858313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档