重新编译java类,不重启Tomcat 自动重新加载类

时间:2019-12-16 22:00:37 类型:JAVA
字号:    

当我们进行 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>

二、几点问题

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


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


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


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


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


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


<