2011-10-14 132 views
1

我有一个控制台Java应用程序,它可以在远程服务器上运行(nohup java -jar myapp.jar &)。Java守护进程部署

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

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

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

这一机制应该做以下几件事:

一)停止当前运行的应用程序。

b)将新的JAR文件上传到服务器。

c)启动新的JAR文件。

+0

服务器运行什么操作系统?您建议的热部署机制听起来像是一个合理的工作量。如果服务器运行的是POSIX操作系统,那么脚本可以更容易地使用sftp文件,然后通过ssh远程运行一些命令以重新启动服务器?您可以将脚本直接合并到您的构建机制中。 – Adamski

+0

服务器正在Ubuntu服务器上运行。 –

回答

2

基本上你需要将程序分解成两个部分:

  1. monitor分量获取新的jar,停止程序,取代了罐子,重新启动该程序

  2. 实际程序,控制台java应用程序

理论上你可以在单个java进程中完成所有这些工作,但是额外的在我看来,复杂性是不值得的。

+1

是的,我知道我可以自己做。但是,如果有现成的解决方案,我想使用它们。不想重新发明轮子:) –

+0

有Java Web Start,但它更适合于交互式应用程序,它只在启动时检查最新版本。 –

0

在LiveRebel中,对于独立应用程序(即守护进程),there's native support。所以主应用程序运行在与指挥中心通信的看门狗代理上。从命令中心可以管理更新。