【问题标题】:How to incremental update Java EE web application?如何增量更新 Java EE Web 应用程序?
【发布时间】:2012-11-25 05:05:01
【问题描述】:

我在 Tomcat 中部署了一个典型的 Web 应用程序。要求是在更新应用程序时提供增量更新方式而不是完整包交付(war文件)。

例如,一旦我完成了更改 jar 文件、XML 文件和 jpg 文件的错误修复。我将这 3 个文件称为补丁。我应该提供补丁文件。即使客户想要回滚到原始版本,我也必须提供一种回滚补丁的方法。 所有的过程都应该是自动的。

在我看来,这个要求没有意义。全包交付是一种简单可靠的 Web 应用更新方式,我不想介绍复杂且容易出错的更新方式。

您有想法实施增量更新要求吗?谢谢!

【问题讨论】:

  • 你的观点是正确的。增量更新几乎不可能跟踪和支持。您最终会遇到一个客户,其应用程序没有特定版本,也没有回滚的好方法。我的建议 - 不要这样做。

标签: java jakarta-ee web-applications deployment


【解决方案1】:

当您部署 .war 或 .ear 时,应用程序服务器通常会将其解压缩到内部目录中。您可以直接更改此目录中的文件,粒度更细。但是,要使更改始终生效,您需要重新启动服务器。

你的观点确实是完全正确的。如今,文件的大小并没有发挥重要作用,我看不到整个更新的问题。为什么客户对整个更新不满意?

注意:如果他想要的是动态更新,即不重新启动服务器,那么这无论如何都是一个完全不同的问题,而且对于java中的生产系统来说几乎是不可能的(但在开发过程中是可行的,使用JRebel 等解决方案)。

【讨论】:

  • 还有另一种基于JRebel的产品,用于更新实时环境中的应用程序,称为LiveRebel。这也可以进行热更新并自动推出多个节点等。
【解决方案2】:

您可以创建使用 Delta-Sync 协议的 Java 程序,即只需要上传更新的文件。如果您使用过 Dropbox,那么您将非常了解。 Dropbox 使用 Delta-Sync 协议来更新文件和同步数据。

无论哪种方式,您暂时都可以通过在客户端(映射到服务器的 WAR 文件夹)和本地计算机上安装并共享该文件夹来使用 Dropbox。然后,每当您更改本地计算机中的文件时,它会自动将这些 CHANGED (PATCH) 文件上传并同步到您的客户端计算机。

【讨论】:

  • 这是一个非常糟糕的主意。完全无法支撑。正如我在之前的评论中提到的,唯一明智的答案是根本不这样做。
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多