简单灵活的方法来运行java作为Windows服务

cyn*_*axa 8 java windows windows-services winrun4j yajsw

我读了SO q&a关于启动java作为windows服务包装器,但无法找到/选择产品,适合我的要求:

  1. Wrapper从配置文件中读取所有Java启动参数.在注册表中必须只有命令来运行包装器本身 - exe的路径和可能的配置路径.始终授予管理员权限以更改注册表中的应用参数是不舒服的.

  2. 工作目录和应用程序的路径也必须在配置中.我想将所有包装器文件深入到程序中,因为用户并不感兴趣.

  3. 没有依赖项(.net,python等).我不想扩展我的程序的要求.

  4. 每个Windows操作系统都免费,包括win64.

  5. 简单轻巧.所有第三方罐子的程序大小为12Mbytes.我不想添加20Mbytes包装器.

  6. 如果应用程序进程终止,则自动重启

  7. 最好是所有Windows平台的单个exe文件.

我试着通过不同的包装看起来有点累了.最合适的是:

  1. jslwin(http://jslwin.sourceforge.net),但我不知道它有多成熟(版本0.99).配置中的参数列表也有点复杂(需要编辑参数数量).
  2. winrun4j(http://winrun4j.sourceforge.net),但我不知道它有多成熟(版本0.45).它还需要一个特殊的类作为服务.

我也试着或者看看:

  1. YAJWS(http://yajsw.sourceforge.net/)太大(30mb),无法使其与自定义文件布局一起工作.
  2. 高级安装程序(http://www.advancedinstaller.com)太大(50mb).
  3. nssm(http://nssm.cc/)将启动参数存储在注册表中(无配置)
  4. winsw(https://kenai.com/projects/winsw).net必需,在进程终止后停止
  5. commons-daemon,procrun(http://commons.apache.org/proper/commons-daemon/index.html)存储启动参数在注册表中(无配置),无法理解这个产品,我觉得它很复杂.
  6. jsmooth(http://jsmooth.sourceforge.net)复杂而旧(2007年最后更新)
  7. javaservice(http://forge.ow2.org/projects/javaservice/)old(2006年最新更新)
  8. runasservice(http://runasservice.sourceforge.net/)需要.net
  9. windows rktools - sc,instsrv,srvany(http://support.microsoft.com/?scid=kb%3Ben-us%3B137890&x=16&y=7) - 在注册表中存储启动参数(无配置)
  10. jwrapper(http://www.jwrapper.com/)似乎不是我需要的.它使用JRE在exe文件中打包java程序.这不是关于Windows服务.
  11. firedaemon(http://www.firedaemon.com/)不是免费的.也许这不是我需要的.
  12. launch4j(http://launch4j.sourceforge.net/)酷能力"搜索或下载java".也许我添加这样的东西来简化安装,但它仍然不是关于subj.
  13. Java服务包装器(http://wrapper.tanukisoftware.com/)对win64不是免费的.

请告诉我哪些包装适合我的需求?或者我认为上面的包装有问题,其中一些适合我的需要?

Ant*_*nyM 1

我不确定 JWrapper 是否会按照您想要的方式满足 1 和 2 等所有要求,因为不是您指定它如何启动以及将东西放在哪里等,JWrapper 而是以自己的方式处理这些东西,但它确实为 win/mac/linux 生成可执行文件,更重要的是它支持 Windows 服务安装以及 Macos 和 Linux 守护进程安装:

http://www.jwrapper.com/guide-installing-a-service.html

虽然服务支持是针对付费许可证的,但免费版本目前不支持它。

披露:我为 JWrapper 工作