将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文件中写入当前时间

  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

  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名称一致

    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

【JavaService】部署Java jar为Windows后台服务的更多相关文章

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

    好的参考链接: http://www.jb51.net/softjc/374631.html 利用这两个工具,将 exe程序或者 bat文件,做成Windows后台服务.

  2. java程序在windows后台执行的办法

    1.新建run.txt文件 2.在文件中输入一下内容: @echo off start javaw -jar xx.jar exit 3.保存,修改文件名为run.bat4.双击即可 5.删除wind ...

  3. jar 在windows 启动服务,卸载服务,停止端口

    参考:https://www.cnblogs.com/zhuchunlei/p/9469569.html 1,启动服务  install.bat @echo off SET JAVA_HOME=&qu ...

  4. 番外篇:使用nssm工具将ES、Kibana、Logstash或者其他.bat文件部署为Windows后台服务的方法

    使用NSSM工具安装bat文件为Windows服务 nssm是一个可以把bat批处理文件部署为Windows服务的小工具.例如很多.net项目可能还是在Windows服务器上面跑的,但是很多组件只提供 ...

  5. 五. jenkins部署springboot项目(2)--windows环境--服务

    前提:jenkins和springboot运行在同一台机器 springboot 通过winsw部署为服务 winsw 下载地址:https://github.com/kohsuke/winsw/re ...

  6. 将Java应用注册为后台服务

    项目中有一个java应用程序,交付后用户要求要把这个程序做成后台服务程序,即:系统启动后该程序可以自动启动,并且在前台不要出现运行窗口,维护人员只要在“服务管理”(Windows)中选择启动或停止即可 ...

  7. Python 实现windows后台服务

    # -*- coding: utf-8 -*- import sys import win32api import win32con import win32event import win32ser ...

  8. 如何注册java程序为windows服务

    如何注册java 程序为windows 服务 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在 ...

  9. Linux环境下执行java -jar xxx.jar命令如何让springboot项目在后台运行

    段落引用> 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctr ...

随机推荐

  1. 二、activity与Intent

    (一) 多个activity之间的跳转(无值传递) 第一步:创建activity(其实就是jave文件),并进行注册 在AndroidManifest.xml中 <activity androi ...

  2. PHPCMS V9 栏目列表调用文章点击量及评论数量方法

    很多朋友在用Phpcms做站时,具体需要在列表页.首页调用文章列表调用文章的点击量和评论排行,那么怎么才能做到在Phpcms v9首页.频道页.列表页.推荐位等页面获取文章浏览量和评论统计呢? 原因起 ...

  3. 关于cout<<ends你不知道的那些事

    关于ends是C++中比较基础的一个东西,但是可能不是每个人都能够清楚的理解这是个什么东西,我就经历了这么一个过程,写出来让大家看看,有什么理解的不对的地方欢迎拍砖. 今天以前我对ends的理解是:输 ...

  4. T-SQL优化

    我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么还 ...

  5. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期

    Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...

  6. 关于CDH中开发Spark

    文章发自http://www.cnblogs.com/hark0623/p/4167363.html 转发请注明 注意:基于CDH进行Spark开发时,使用高版本的apache原生包即可:不需要使用C ...

  7. linux安装配置SVN并设置钩子

    安装说明 系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件 检查已安装版本 #检查是否安装了低版本的SVN 1 rpm ...

  8. no-jquery 05 Utilities

    Utilities type // is this a function? typeof someValue === 'function'; // is this an object? someVal ...

  9. express-6 请求和响应对象(1)

    URL的组成部分 协议: 协议确定如何传输请求.我们主要是处理http和https.其他常见的协议还有file和ftp. 主机名: 主机名标识服务器.运行在本地计算机(localhost)和本地网络的 ...

  10. NOIP201103瑞士轮【B002】

    [B002]瑞士轮[B级]出自附中OJ————————————————————————————————————————————————————————————————————————————————— ...