0

我发现tomcat自带的虚拟主机管理功能,在每个创建的虚拟主机后面都跟有一个重启按钮,这个重启按钮点击后是否能只重启该虚拟主机而不影响其他虚拟主机呢?
PS:请不要问我为啥不直接点击试试,因为本人菜,配不出来这个虚拟主机,我是看到别人配好的图片上有这个重启按钮

2019-06-12 提问

查看全部 2 个回答

0

Tomcat不重启但重启应用可以借助于 Tomcat 自带的管理插件实现(Tomcat Admin/Manager), 也可以借助于第三方插件实现, 如 Psi-Probe.
如果对Tomcat配置成reloadable,则touch一下web.xml文件就能让Tomcat自动重新加载应用.

<Context path="" docBase="/webapps/client.com/servlets" reloadable="true" privileged="true"/>

如果应用是严格按规范正确实现的, 重启而不影响其他虚拟主机正是期待的结果.
但是和具体的 JVM 版本和容器实现有关. Java 6以前的版本实现的有问题, 多次重新加载元数据得不到释放,内存无法回收会产生问题.
Java 8要好很多, 但仍然和应用的实现有关, 如不正确的 JDBC Driver 的实现, 不正确的使用 Class Loader, 资源泄露(网络,文件,线程的不回收等)都会因虚拟主机重启变得问题更严重.

结论是: 可能没影响, 但要看代码实现

想了解更多可以看看 Tomcat 类加载器的实现, 这里是我的翻译.

推广链接