Java守护进程部署
我有一个控制台 Java 应用程序,它始终在远程服务器上运行(nohup java -jar myapp.jar &)。
我经常(每隔一天)需要将 JAR 文件替换为新的 JAR 文件(每当我修复缺陷时)。
目前,我通过使用 ssh (WinSCP) 连接到服务器来执行此操作。
如何创建一种机制,使用该机制可以通过 http 协议升级应用程序?我可以使用 JMX 吗?
该机制应该执行以下操作:
a) 停止当前正在运行的应用程序。
b) 将新的 JAR 文件上传到服务器。
c) 启动新的 JAR 文件。
I have a console Java application, which runs all the time on a remote server (nohup java -jar myapp.jar &).
Frequently (every other day) I need to replace the JAR file by a newer one (whenever I fix a defect).
At the moment I do this by connecting to the server using ssh (WinSCP).
How can I create a mechanism, using which I could upgrade the application via the http protocol? Can I use JMX for that?
That mechanism should do following things:
a) Stop the currently running application.
b) Upload the new JAR file to the server.
c) Launch the new JAR file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
基本上,您需要将程序分为两部分:
monitor
组件,用于获取新 jar、停止程序、替换 jar、重新启动程序实际程序,控制台java应用程序
理论上你可以做所有这一切都集中在一个java 过程,但额外的复杂性在我看来不值得麻烦。
Basically you need to break down the program into two parts:
the
monitor
component which fetches the new jar, stops the program, replaces the jar, restarts the programthe actual program, the console java application
Theoretically you can do all of this in a single java process but the additional complexity is not worth the trouble in my opinion.
您可以查看 install4j 或 这个类似的 StackOverflow 问题。
You might check out install4j or this similar StackOverflow question.
在 LiveRebel 中,原生支持独立应用程序(即守护进程)。因此,主应用程序与与命令中心通信的看门狗代理一起运行。然后可以从命令中心管理更新。
In LiveRebel, there's native support for standalone applications (i.e. daemons). So the main application is running with the watchdog agent which communicates to the command center. From command center it is possible then to manage the updates.