【问题标题】:web application auto installWeb 应用程序自动安装
【发布时间】:2011-06-24 19:26:22
【问题描述】:

我需要自动安装/更新在 JBoss 6 上运行的 Web 应用程序。

我至少需要: * 停止服务器 * 复制部署目录下的war * 应用数据库更新脚本 * 启动服务器

您知道用于此的工具或开源项目吗?

谢谢 克里斯托夫

【问题讨论】:

  • 詹金斯这样做。我想知道你如何以及是否利用它。他们使用码头。

标签: java web-applications jboss installation


【解决方案1】:

大多数 Servlet 容器能够在不停止服务器的情况下进行部署。有些人通过将 WAR 文件放到由网络服务器轮询的特定目录中(如果配置正确),而其他人则公开“上传”网络 API。

JBoss 通常使用 Tomcat 作为其 servlet 容器。虽然我不知道你的 JBoss 使用的是哪个版本,但 Tomcat 已经支持在运行的服务器上部署很长时间了。 Perhaps the documentation for Tomcat 5.5 足以让您确定需要进行哪些更改(如果有)。

如果您确实需要停止服务器,Tomcat 可以通过外部程序停止服务器(它只需要发送正确类型的消息);但是,一旦停止,Tomcat 就无法收到“启动”消息,它必须手动启动。

更好的解决方案是通过查看 servlet 生命周期事件来检测应用程序何时启动,然后在“首次启动”事件时“检查”数据库。如果您的数据库检测显示数据库与预期版本不匹配,请应用更改。数据库检测显示数据库是最新的后,开始正常的请求处理。这以允许轻松部署和升级的方式隔离 Web 应用程序中的代码,尽管这确实意味着在定制应用程序以封装它自己的数据库维护职责方面需要做更多的工作。

如果无法选择这种技术,您将不得不依靠外部工具来完成工作。通常,此类工具需要大量集成资源(有时跨多台机器)。在这种情况下,通常会应用 Enterprise Job Scheduler 或工作流引擎(使用您自己编写的适配器)来解决手头的问题。

【讨论】:

  • 感谢您抽出宝贵时间回答。事实上,我可以开发我的定制解决方案。我已经查看了 Cargo 的容器管理。
  • 但实际上我首先是在寻找现有的解决方案;-)
【解决方案2】:

关于信息,我们最终实施了自己的解决方案。基本上

  1. 一个作业从 FTP 下载一个 ZIP 文件,其中包含用 Java 编写的安装程序应用程序
  2. 解压后运行安装程序。这个执行 SQL 更新脚本,然后使用 JBoss JMX API 部署 WAR 文件。然而,为了支持 JBoss 集群,我们必须编写自己的 MBean 以便在每个节点上复制 WAR 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多