Tomcat 如何配置不重启自动重新加载类?

本文介绍如何配置Tomcat服务器实现Java类文件的自动重载,避免每次修改后需重启服务器的问题。适用于5.5及以后版本,通过修改context.xml或server.xml文件,设置reloadable属性为true。注意,此功能仅支持现有Java类文件的更新,新增文件无效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们进行 Web 应用开发时,如果不进行配置,每次修改 Java 类文件都需要重启服务器。如何让服务器识别到类的更新并自动重新加载呢?其实很简单。

一、配置方法

对于较新版本(5.5 之后)的 tomcat 服务器来说,只需要修改 \conf\context.xml 文件,给 Context 标签加上 reloadable="true" 这个属性即可。比如原来 context.xml 是这个样子的:

<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

</Context>

修改之后

<Context reloadable="true">

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

</Context>

旧版 tomcat(5.5 之前,目前很少用),则需要在\conf\server.xml 中的 <Host> 元素里加入 <Context reloadbale="true">

这就算完成任务了。当然,要是需要说的就这么多,就用不着不单独开一篇文章啦。主要是在应用的过程中,我遇到了一些让我疑惑的地方,在网上又不好搜到相关的解答,于是进行了一点实验,并在这里记录一下。

二、几点问题

1.配置 context.xml 后需要重启服务器吗?

tomcat 会定时扫描 context.xml 文件,按理说,一旦发现文件被修改,就会自动重新加载这个文件,而不需要重启服务器 。然而实际上增加 reloadable="true" 这个属性后,类的自动重载并没有生效,需要重启服务器。

1.什么情况适用自动重新加载?

自动重新加载只对修改现存的 Java 类文件(如 Servlet)有效,创建新的文件是不行的。

2.如何触发自动重新加载?

在修改了类的源代码(.java)后,需要重新编译得到类文件(.class),并且需要使用客户端(浏览器)访问该 Web 页面。对已打开的 Web 页面,随意点击一下即可。对于这一过程,可以使用 listener 进行监听。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Evan-Nightly

劝君上当,上当一回

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值