将Java jar文件部署为Windows后台服务有多种方法:Service Installer、Java service Wrapper、JavaService.exe等等。这里介绍下使用JavaService.exe来部署windows后台服务的方法。

1. 下载JavaService.exe, 最新的是2.0.10版本,请下载其zip包版本的即可
forge.ow2.org/projects/javaservice/

2. 安装JavaService.exe
   将下载的zip包解压缩到任意目录即可

3. 编译一个测试jar(请从附件中下载): 每天11:00:00向time.log文件中写入当前时间

Java代码  
  1. public static void main(String[] args) {
  2. // schedule task执?
  3. scheduler.schedule(new SchedulerTask() {
  4. public void run() {
  5. // TODO
  6. FileOutputStream writerStream = null;
  7. OutputStreamWriter outSW = null;
  8. try {
  9. writerStream = new FileOutputStream("F:/TestTimer/time.log");
  10. outSW = new OutputStreamWriter(writerStream, "UTF-8");
  11. //将缓冲对文件的?出
  12. final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
  13. outSW.write(sdf.format(new Date()));
  14. } catch (final IOException e) {
  15. e.printStackTrace();
  16. } finally {
  17. try {
  18. // 向缓冲区写成功后?执?缓冲区刷新?使文件内容生效
  19. if (outSW != null) {
  20. outSW.close();
  21. }
  22. //关?文件流
  23. if (writerStream != null) {
  24. writerStream.close();
  25. }
  26. } catch (final IOException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. }
  31. }, new DailyIterator(11, 0, 0));
  32. }

4. 在jar文件所在的目录下,建立如下批处理文件,执行后即可完成服务的注册和auto start

Java代码  
  1. @echo off
  2. rem 修改控制台颜色
  3. color 1d
  4. rem * 使用JavaService将TestTimer安装为Windows服务的脚本
  5. rem *
  6. rem * JavaService - Windows NT Service Daemon for Java applications
  7. rem * Copyright (C) 2006 Multiplan Consultants Ltd. LGPL Licensing applies
  8. rem * Information about the JavaService software is available at the ObjectWeb
  9. rem * web site. Refer to http://javaservice.objectweb.org for more details.
  10. rem 开始批处理文件中环境改动的本地化操作,在使用endlocal后环境将恢复到原先的内容
  11. SETLOCAL
  12. rem 设置环境变量,指向当前路径
  13. SET BASE_PATH=%CD%
  14. rem 设置Java path: jre_home
  15. SET JRE_HOME=D:\Program Files\Java\jre1.5.0_11
  16. rem 判断JRE_HOME是否正确
  17. if "%JRE_HOME%" == "" goto no_java
  18. if not exist "%JRE_HOME%\bin\java.exe" goto no_java
  19. rem 设置jvm内存分配情况
  20. set JVM_MEMORY=-Xms128m -Xmx256m
  21. rem 设置jvmdll使用哪一种模式
  22. SET jvmdll=%JRE_HOME%\bin\client\jvm.dll
  23. if not exist "%jvmdll%" SET jvmdll=%JRE_HOME%\bin\hotspot\jvm.dll
  24. if not exist "%jvmdll%" goto no_java
  25. rem 设置JavaService路径
  26. set JSBINDIR=E:\AccountingTool\javaservice\JavaService-2.0.10
  27. set JSEXE=%JSBINDIR%\JavaServiceDebug.exe
  28. rem 判断jar是否正确
  29. SET acctjar=%BASE_PATH%\TestTimer.jar
  30. if not exist "%acctjar%" goto no_peer
  31. @echo . Using following version of JavaService executable:
  32. @echo .
  33. "%JSEXE%" -version
  34. @echo .
  35. rem parameters and files seem ok, go ahead with the service installation
  36. @echo .
  37. rem 处理该批处理的输入参数,后台服务启动模式:自动
  38. SET svcmode=
  39. if "%1" == "-manual" SET svcmode=-manual
  40. if "%1" == "-auto" SET svcmode=-auto
  41. rem 设置JAVA_OPTS
  42. set JAVA_OPTS=%JAVA_OPTS% -Djava.class.path="%BASE_PATH%\TestTimer.jar"
  43. set JAVA_OPTS=%JAVA_OPTS% %JVM_MEMORY%
  44. rem 设置startstop
  45. SET START_STOP=-start cn.test.timer.TestTimer
  46. rem 设置Log文件路径
  47. set OUT_ERR=-out "%BASE_PATH%\service_out.log" -err "%BASE_PATH%\service_err.log"
  48. rem 设置desp
  49. set DESP=-description "TestTimer Service"
  50. rem 设置执行命令行
  51. set runcmd="%JSEXE%" -install TestTimerService
  52. set runcmd=%runcmd% "%jvmdll%"
  53. set runcmd=%runcmd% %JAVA_OPTS%
  54. set runcmd=%runcmd% %START_STOP%
  55. set runcmd=%runcmd% %OUT_ERR%
  56. set runcmd=%runcmd% -current
  57. set runcmd=%runcmd% "%BASE_PATH%"
  58. set runcmd=%runcmd% %svcmode%
  59. set runcmd=%runcmd% -overwrite
  60. set runcmd=%runcmd% -startup 6
  61. set runcmd=%runcmd% %DESP%
  62. echo %runcmd%
  63. rem 执行安装命令
  64. %runcmd%
  65. rem 启动服务
  66. net start TestTimerService
  67. if ERRORLEVEL 1 goto js_error
  68. goto end
  69. :no_java
  70. @echo . 没有Java运行环境,安装脚本不能运行
  71. goto error_exit
  72. :no_peer
  73. @echo . 启动文件TestTimer.jar不存在,安装脚本不能运行
  74. goto error_exit
  75. :no_jsexe
  76. @echo . 可执行文件JavaService.exe 不存在,安装脚本不能运行
  77. goto error_exit
  78. :js_error
  79. @echo . TestTimerService在安装为服务的过程中发生了错误,请检查相关日志文件
  80. goto error_exit
  81. :error_exit
  82. @echo .
  83. @echo . 安装失败,不能将 TestTimer安装为Windows服务
  84. @echo .
  85. @echo . 命令格式:
  86. @echo .
  87. @echo .  %~n0 [-auto / -manual] [-np]
  88. @echo .
  89. @echo . 其中:
  90. @echo .  -auto (默认) or -manual 参数说明了服务的启动模式:自动或者手动
  91. @echo .  -np 批处理命令执行完毕后不暂停
  92. @echo .
  93. @echo . 比如:
  94. @echo .  %~n0 -auto -np
  95. :end
  96. ENDLOCAL
  97. @echo .
  98. if "%2" NEQ "-np" @pause

注意: 其中JRE_HOME 和 JSBINDIR(javaservice路径) 视安装路径而异。

5. 停止并卸载服务的批处理文件,其中service 名称必须与上面注册的service名称一致

Java代码  
  1. @echo off
  2. rem 修改控制台颜色
  3. color 1d
  4. rem * 使用JavaService卸载TestTimerService服务的脚本
  5. rem *
  6. rem * JavaService - Windows NT Service Daemon for Java applications
  7. rem * Copyright (C) 2006 Multiplan Consultants Ltd. LGPL Licensing applies
  8. rem * Information about the JavaService software is available at the ObjectWeb
  9. rem * web site. Refer to http://javaservice.objectweb.org for more details.
  10. rem 开始批处理文件中环境改动的本地化操作,在使用endlocal后环境将恢复到原先的内容
  11. SETLOCAL
  12. rem 设置环境变量
  13. SET BASE_PATH=E:\AccountingTool\Release\AccountingTool\
  14. rem 设置JavaService的路径
  15. set JSBINDIR=%BASE_PATH%\JavaService-2.0.10
  16. set JSEXE=%JSBINDIR%\JavaService.exe
  17. rem 卸载服务前先停止服务
  18. net stop TestTimerService
  19. rem 设置执行命令行
  20. set runcmd="%JSEXE%" -uninstall TestTimerService
  21. %runcmd%
  22. @echo .
  23. ENDLOCAL
  24. @echo .
  25. if "%2" NEQ "-np" @pause

转载于:https://www.cnblogs.com/hyl8218/p/5084887.html

【JavaService】部署Java jar为Windows后台服务相关推荐

  1. 用WinSW让java程序运行为Windows后台服务

    准备工具: 1.下载一个WinSW.NET2工具,官方下载链接:https://github.com/winsw/winsw/releases 2.将你的java程序打成可执行的jar包 新建一个文件 ...

  2. C#实现Windows后台服务实例浅析

    2019独角兽企业重金招聘Python工程师标准>>> C#实现Windows后台服务实例之前要明白的一些概念:所谓Windows后台服务,即后台自动运行的程序,一般随操作系统启动而 ...

  3. 手动部署java jar包

    手动部署java jar包 出现的问题 使用说明 使用步骤 注意事项 脚本内容 出现的问题 项目开发或者部署过程中,开发人员总是因为启动命令的错误,导致启动参数不对,或者环境不对的情况,根据此种情况, ...

  4. java7找不到uri_部署-Java Jar文件:使用资源错误:URI不是hierarchi

    部署-Java Jar文件:使用资源错误:URI不是hierarchi 我已将我的应用程序部署到jar文件. 当我需要将数据从一个资源文件复制到jar文件外部时,请执行以下代码: URL resour ...

  5. 使用nssm将命令行启动的应用程序(.exe,.bat等)注册成windows后台服务

    使用nssm可以将应用程序exe或者bat注册成windows后台服务 1.下载nssm,下载连接:NSSM - the Non-Sucking Service Manager 2.下载nssm之后, ...

  6. 使用instsrv.exe和srvany.exe将应用程序安装成windows后台服务

    instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为windo ...

  7. liunx+java+jar+运行_Linux后台运行java的jar包

    Linux 运行jar包命令如下: 方式一 java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...

  8. win10 python免安装_使用Python编写免安装运行时、以Windows后台服务形式运行的WEB服务器...

    环境构建 安装python2.7 安装Setup Tools 在https://pypi.python.org/pypi/setuptools获取安装脚本的链接http://peak.telecomm ...

  9. 儿童上网时间管控软件_GreenSurfOnline V0.1 使用说明 (以Windows后台服务形式存在,安装需要有一定电脑操作基础)...

    1.GreenSurfOnline配置文件,配置可以上网的时间断,上网的时间使用NTP时间,如果当前时间不在GreenSurfOnlineCfg.ini配置文件中, 不执行默认的关机命令(批处理文件, ...

最新文章

  1. 如何在内嵌 css 中编写: hover_优秀 CSS 代码的 8 个编写技巧!
  2. 美国拟将14项关键技术列入出口管制清单 商务部回应
  3. linux查看根目录使用率,Linux 查看空间使用情况的实例详解
  4. java方法区超详细汇总,方法区到底是干什么用的?不懂方法区不能说了解jvm!
  5. EduCoder Linux之文件打包和解压缩
  6. 一般区域二重、三重积分MATLAB计算方法
  7. 大数据入门(一)-大数据概念和特点(1)
  8. Mysql数据库-Centos和Raspbian主从复制(备份)
  9. MediaElementAudioSourceNode
  10. 破产的圣文森特医院,如何利用大数据寻求解救方案?
  11. python小白从哪来开始-python入门小白的困惑,怎么入门python?
  12. 基于matlab的图像仿真研究,基于MATLAB的图像锐化算法研究与仿真
  13. JS 数组 Array 对象详解 与 for...of 增强型迭代
  14. vue生命周期心得体会800字
  15. 宠物领养平台的分析与实现
  16. 【信息安全服务】使用Hashcat工具对shadow文件进行弱口令检查
  17. 简单的机械臂设计(Splay树)
  18. 一、Composer下载安装
  19. 关于克苏鲁神话的细节
  20. html怎样加粗直线,HTML字型要怎么加粗?

热门文章

  1. springboot学习笔记(二)
  2. C++单链表的建立和遍历
  3. Java—正整数分解成质因数
  4. bluemix java_Bluemix 基础:将 SQL 数据库添加到您的 Java 应用程序中
  5. 用隐马尔可夫模型(HMM)做命名实体识别——NER系列(二)
  6. 关于Android中工作者线程的思考
  7. oppo手机显示服务器繁忙,如何玩转OPPO R11,五大隐藏功能你必须了解
  8. JZOJ 1533. 郁闷的gxg
  9. js 数组修改watch_前端面试:专注Vue.js常见的问题答疑,掌握了基本上Vue就过关了...
  10. linux下线程不需要死循环么,Linux多线程程序死循环问题调试