tomcat - 如何在不重新启动整个服务的情况下更新 Tomcat Web 应用程序?

标签 tomcat deployment war

我是 Tomcat 的新手。我们有一台运行着大约 5 个应用程序的开发机器。尽管它是开发人员,但我们的客户在测试期间大量使用它。

假设我们需要对一个类文件做一点小改动。现在,我们必须关闭 Tomcat(影响其他四个应用程序),删除 WAR 文件(和 web 应用程序目录),重新部署新的 WAR 文件并重新启动 Tomcat.

当然,这会让一些人感到不安,因为它会破坏所有应用程序的所有登录 session 。

有更好的方法吗?我的意思是,有没有办法只重新加载发生变化的 CLASS 而不是开发机器上的所有内容?

谢谢。

最佳答案

您是否尝试过使用 Tomcat's Manager application ?它允许您在不关闭 Tomcat 的情况下取消部署/部署 war 文件。

如果不想使用Manager应用,也可以删除webapps目录下的war文件,Tomcat会在短时间后取消部署应用。然后您可以将一个 war 文件复制回该目录,Tomcat 将部署该 war 文件。

如果您在 Windows 上运行 Tomcat,您可能需要 configure你的上下文不锁定各种文件。

如果您绝对不能有任何停机时间,您可能需要查看 Tomcat 7's Parallel deployments您可以同时部署具有相同上下文路径的 Web 应用程序的多个版本。用于将请求与上下文版本匹配的规则如下:

  • 如果请求中没有 session 信息,请使用最新版本。
  • 如果请求中存在 session 信息,请检查每个版本的 session 管理器以查找匹配的 session ,如果找到,则使用该版本。
  • 如果请求中存在 session 信息但找不到匹配的 session ,则使用最新版本。

关于tomcat - 如何在不重新启动整个服务的情况下更新 Tomcat Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6583502/

相关文章:

java - Tomcat 8 - LDAP : NameNotFoundException error code 32, 剩余名称空字符串

asp.net-mvc - 如何将 .NET Core 2 MVC Web 应用程序编译为 EXE?

java - 使用tomcat服务器创建一个restful web服务

java - 为什么我不能在 web.xml 中编辑 servlet 名称?

java - Tomcat 7 到 8.5 升级 : getResourceAsStream throws NPE

spring-mvc - Tomcat 部署的 war 未部署在 JBoss 上

java - jar 和 war 中的 Spring 3.1 ehCache 将在 war : XML configuration 中使用 jar

docker - 将 etcd 集群自动配置为 Docker swarm 服务

ubuntu - pyqtdeploy:标准库和站点包

gwt - 使用 Maven 将 GWT 源代码整合到 WAR 中的最佳实践