更改类文件时重启tomcat?

fla*_*ash 23 java tomcat class

为什么我们需要在更改类文件时重新启动tomcat服务器,有没有其他办法?

Pas*_*ent 30

您可以配置Tomcat并使您的webapp"可重新加载".为此,请添加reloadable=true<Context>webapp 的元素.关于该reloadable属性,文档说:

设置为true如果您希望Catalina监视更改类/WEB-INF/classes//WEB-INF/lib更改,并在检测到更改时自动重新加载Web应用程序.此功能在应用程序开发期间非常有用,但它需要大量的运行时开销,不建议在部署的生产应用程序上使用.这就是为什么此属性的默认设置为false.但是,您可以使用Manager Web应用程序按需触发已部署应用程序的重新加载.

  • *叹气*请将我的选票交给Pascal,他是更有用和全面的答案.看看他,似乎开发模式只检查JSP的变化,这不是OP所询问的. (4认同)

Car*_*icz 7

肯定有!在开发模式下启动Tomcat,然后每个webapp将在重新部署后重新启动.

来自Tomcat文档:

实现Jasper的servlet是使用全局$ CATALINA_BASE/conf/web.xml中的init参数配置的.

...

开发 - Jasper是否用于开发模式(将在每次访问时检查JSP修改)?true或false,默认为true.

您可以更改设置以调整Tomcat查找更新的确切内容.我平时不同类文件下部署到相应的目录WEB-INF/classes,然后

touch WEB-INF/web.xml

启动应用程序的重启; 我认为web.xml是Tomcat默认检查的文件之一.

  • 我可能错了,但这似乎取自*Jasper 2 JSP Engine How To*(http://tomcat.apache.org/tomcat-6.0-doc/jasper-howto.html)并适用于JSP,而不是类. (2认同)

Kel*_*nch 6

更一般地说,你必须这样做的原因是因为在Java中,当类加载器加载一个类时,它无法卸载它.Tomcat要做的是使用新的类加载器并重新加载它需要的所有类.