Java守护进程部署

Java守护进程部署,java,daemon,jmx,Java,Daemon,Jmx,我有一个控制台Java应用程序,它一直在远程服务器上运行(nohupjava-jarmyapp.jar&) 通常(每隔一天)我需要用一个更新的JAR文件替换JAR文件(每当我修复缺陷时) 目前,我通过使用ssh(WinSCP)连接到服务器来实现这一点 如何创建一种机制,使用它可以通过http协议升级应用程序?我可以用JMX吗 该机制应做到以下几点: a) 停止当前正在运行的应用程序 b) 将新JAR文件上载到服务器 c) 启动新的JAR文件。基本上,您需要将程序分为两部分: monitor组件获

我有一个控制台Java应用程序,它一直在远程服务器上运行(nohupjava-jarmyapp.jar&)

通常(每隔一天)我需要用一个更新的JAR文件替换JAR文件(每当我修复缺陷时)

目前,我通过使用ssh(WinSCP)连接到服务器来实现这一点

如何创建一种机制,使用它可以通过http协议升级应用程序?我可以用JMX吗

该机制应做到以下几点:

a) 停止当前正在运行的应用程序

b) 将新JAR文件上载到服务器


c) 启动新的JAR文件。

基本上,您需要将程序分为两部分:

  • monitor
    组件获取新的jar,停止程序,替换jar,重新启动程序

  • 实际的程序,控制台java应用程序


  • 从理论上讲,您可以在一个java进程中完成所有这些,但我认为额外的复杂性不值得这么麻烦。

    您可以在LiveRebel中查看或。

    对于独立应用程序(即守护进程)。因此,主应用程序与与与指挥中心通信的看门狗代理一起运行。然后可以从命令中心管理更新。

    服务器运行什么操作系统?您建议的热部署机制听起来是一个合理的工作量。如果服务器运行的是POSIX操作系统,那么编写脚本对文件进行sftp,然后通过ssh远程运行一些命令以重新启动服务器可能会更容易些?你可以将脚本直接合并到你的构建机制中。服务器在Ubuntu服务器上运行。是的,我知道我自己可以做到。然而,如果有现成的解决方案,我愿意使用它们。不想重新发明轮子:)有JavaWebStart,但它更适合交互式应用程序,它只在启动时检查最新版本。