要在Linux服务器上在后台运行Java应用程序作为服务,有很多可能性。我可以使用Tanuki的“ Java Service Wrapper”或开放源代码的“ Yet Another Java Service Wrapper”或我不知道的东西。我可以使用Supervisor甚至Systemd。
我的印象是,Java Wrappers所做的工作除了运行带有必要选项集(堆最大大小,可能是类路径等)的应用程序,对其进行监视,在必要时重新启动它或向应用程序发送信号以进行重新加载,关闭或重新启动。我认为使用Supervisor甚至使用Systemd都可以轻松实现。
我倾向于认为那些包装器在linux init仍然有用的时候仍然基于SystemV,但是由于supervisor或systemd的存在而被淘汰了。我目前有几点遗漏吗?
与通用程序控制系统(如supervisor或systemd)相比,特殊的java包装器有什么优势吗?
答案 0 :(得分:0)
我在过去的工作中使用过Tanuki Software的Java Service Wrapper,它对我们来说真的很好。我们用于它的主要内容是控件脚本,JVM监视以及触发的重新启动和线程转储。您可以查看完整的list of features。
在现代应用程序中,其他工具可能会部分覆盖这些工具,例如构建/打包工具,这些工具可以生成服务并控制脚本,日志和度量标准聚合服务,以及在容器引擎中自动重启时的运行状况检查。使您的应用程序更具弹性也可以缓解很多问题。
话虽这么说,但我仍然认为,如果您的应用程序不能很好地处理故障,并且当它进入有趣状态时需要重新启动。
我个人正在寻找是否可以替代我继承的麻烦巨石。