繁体   English   中英

如何在客户端升级/更新web java项目?

[英]How do you upgrade / update web java project at your clients?

假设我们正在开发一个新的客户端/服务器Java Web应用程序。 我们最终发布了1.0版本并卖给了少数客户。 客户在自己的服务器上部署了我们的项目。 一段时间后,我们发现了一些错误,我们想更新我们的应用程序。

是否有任何框架/技术/模式/库/服务器可以帮助开发可以自动更新的应用程序,包括以下步骤:

  • 复制新项目发布
  • 取消使用旧版本
  • 部署新版本
  • 更新数据库

目前我们已经向客户提供vpn,我们正在手动完成上述所有步骤。 是否可以将我们的客户版本与我们的存储库同步?

您正在谈论的技术是安装程序。 并且存在应用程序安装程序框架

但是,当您的应用程序将重要状态存储在数据库中或其他任何情况时,自动迁移数据是棘手且有风险的......并且在通用安装程序产品的上下文中几乎不可能执行。 如果您的应用程序可以由您的客户自定义,情况也是如此。 (自定义化总是有可能破坏您的自动迁移代码。)

现在,如果您当前手动执行的步骤很简单,并且不需要针对不同的客户站点进行调整,则可以实现自动化。 但是,您需要确保有一个防弹机制来备份客户当前的安装和数据,并在必要时自动升级过程失败时进行恢复。

对于DB部分,您可以使用liquibase Liquibase是一个管理数据库迁移的maven插件/ lib(将数据库升级到更新的版本)。 使用liquibase执行此操作的一种方法是部署一个特殊的servlet,该servlet将查询包含当前db版本的模式表

如果您可以执行远程部署 (例如:通过tomcat管理界面或任何其他界面),您始终可以设置一个自定义脚本来执行部署。 然后,您可以将此脚本提供给客户端,以便他们可以按照自己的计划应用更新。

我建议不要在客户可用时立即推出更新,因为他们(和您)可能不想立即更新它们。

JavaWebstart可以帮助部署客户端,但如果数据库也需要升级,我认为除非所有客户端都关闭,否则它不能安全地完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM