创建Java服务或守护程序脚本的最佳实践

时间:2009-08-11 06:21:09

标签: java maven-2 ant jvm daemon

我正在寻找一种工具来运行java服务器进程作为Linux中的守护进程服务(可能在Windows和其他操作系统上)。我正在寻找有关如何构建具有生产能力的脚本和启动配置的最佳实践。

我熟悉项目构建时的最佳实践,使用Apache MavenApache ANT + Ivy之类的东西来管理构建过程并管理外部依赖项并构建工件和程序集。

当涉及创建包含配置和启动脚本以及所有已编译代码和依赖项的项目程序集时,我不清楚最佳选择是什么。是否有一个很好的开源项目,我可以将其作为一个例子,将服务包装器和配置脚本与它们的构建过程捆绑在一起?

我已经能够使用Maven和Jetty Launch plugin来运行我的Web应用程序,Terracotta Maven plugin来测试多个JVM集群服务器节点,并且我使用了Maven的exec:java来运行我的自定义Java服务器,但我不确定使用Maven是否具有“生产”质量,这也意味着我的生产服务器依赖于从源构建服务器并从可能不可用的服务器下载依赖项。

以下是我在Java服务启动器解决方案中寻找的一些潜在的事情:

  1. 应作为Linux服务或Windows服务进程运行
  2. 可以使用Maven插件或Ant脚本构建,并允许我处理配置文件和脚本
  3. 应该能够包含Apache Ant的所有项目依赖项
  4. 应该能够引入完整的Java Web应用程序服务器(例如Jetty 7)并配置我的自定义Web应用程序的战争
  5. 应该能够处理标准的Java守护程序服务(自定义Java服务器)
  6. 我一直关注的一些选项是Java Service WrapperMaven appassembler plugin中使用了这些选项。

    同样使用Maven的assembly plugin和自定义程序集描述符可以让我定制构建输出。

2 个答案:

答案 0 :(得分:3)

实现各种Linux服务的首选(又称“最佳实践”)方法是创建一个可以启动,停止和重新启动服务并将其放入/etc/init.d的shell脚本。然后从相关的“rc。*”目录中为其添加适当的符号链接。请参阅Linux“man”条目“init(8)”,“chkconfig(8)”等。

答案 1 :(得分:3)

Java Service Wrapper似乎很常见。我已经看到它被少数人使用,最明显的是nexus