【JavaService】部署Java jar为Windows后台服务
将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文件中写入当前时间
- public static void main(String[] args) {
- // schedule task执?
- scheduler.schedule(new SchedulerTask() {
- public void run() {
- // TODO
- FileOutputStream writerStream = null;
- OutputStreamWriter outSW = null;
- try {
- writerStream = new FileOutputStream("F:/TestTimer/time.log");
- outSW = new OutputStreamWriter(writerStream, "UTF-8");
- //将缓冲对文件的?出
- final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
- outSW.write(sdf.format(new Date()));
- } catch (final IOException e) {
- e.printStackTrace();
- } finally {
- try {
- // 向缓冲区写成功后?执?缓冲区刷新?使文件内容生效
- if (outSW != null) {
- outSW.close();
- }
- //关?文件流
- if (writerStream != null) {
- writerStream.close();
- }
- } catch (final IOException e) {
- e.printStackTrace();
- }
- }
- }
- }, new DailyIterator(11, 0, 0));
- }
4. 在jar文件所在的目录下,建立如下批处理文件,执行后即可完成服务的注册和auto start
- @echo off
- rem 修改控制台颜色
- color 1d
- rem * 使用JavaService将TestTimer安装为Windows服务的脚本
- rem *
- rem * JavaService - Windows NT Service Daemon for Java applications
- rem * Copyright (C) 2006 Multiplan Consultants Ltd. LGPL Licensing applies
- rem * Information about the JavaService software is available at the ObjectWeb
- rem * web site. Refer to http://javaservice.objectweb.org for more details.
- rem 开始批处理文件中环境改动的本地化操作,在使用endlocal后环境将恢复到原先的内容
- SETLOCAL
- rem 设置环境变量,指向当前路径
- SET BASE_PATH=%CD%
- rem 设置Java path: jre_home
- SET JRE_HOME=D:\Program Files\Java\jre1.5.0_11
- rem 判断JRE_HOME是否正确
- if "%JRE_HOME%" == "" goto no_java
- if not exist "%JRE_HOME%\bin\java.exe" goto no_java
- rem 设置jvm内存分配情况
- set JVM_MEMORY=-Xms128m -Xmx256m
- rem 设置jvmdll使用哪一种模式
- SET jvmdll=%JRE_HOME%\bin\client\jvm.dll
- if not exist "%jvmdll%" SET jvmdll=%JRE_HOME%\bin\hotspot\jvm.dll
- if not exist "%jvmdll%" goto no_java
- rem 设置JavaService路径
- set JSBINDIR=E:\AccountingTool\javaservice\JavaService-2.0.10
- set JSEXE=%JSBINDIR%\JavaServiceDebug.exe
- rem 判断jar是否正确
- SET acctjar=%BASE_PATH%\TestTimer.jar
- if not exist "%acctjar%" goto no_peer
- @echo . Using following version of JavaService executable:
- @echo .
- "%JSEXE%" -version
- @echo .
- rem parameters and files seem ok, go ahead with the service installation
- @echo .
- rem 处理该批处理的输入参数,后台服务启动模式:自动
- SET svcmode=
- if "%1" == "-manual" SET svcmode=-manual
- if "%1" == "-auto" SET svcmode=-auto
- rem 设置JAVA_OPTS
- set JAVA_OPTS=%JAVA_OPTS% -Djava.class.path="%BASE_PATH%\TestTimer.jar"
- set JAVA_OPTS=%JAVA_OPTS% %JVM_MEMORY%
- rem 设置startstop
- SET START_STOP=-start cn.test.timer.TestTimer
- rem 设置Log文件路径
- set OUT_ERR=-out "%BASE_PATH%\service_out.log" -err "%BASE_PATH%\service_err.log"
- rem 设置desp
- set DESP=-description "TestTimer Service"
- rem 设置执行命令行
- set runcmd="%JSEXE%" -install TestTimerService
- set runcmd=%runcmd% "%jvmdll%"
- set runcmd=%runcmd% %JAVA_OPTS%
- set runcmd=%runcmd% %START_STOP%
- set runcmd=%runcmd% %OUT_ERR%
- set runcmd=%runcmd% -current
- set runcmd=%runcmd% "%BASE_PATH%"
- set runcmd=%runcmd% %svcmode%
- set runcmd=%runcmd% -overwrite
- set runcmd=%runcmd% -startup 6
- set runcmd=%runcmd% %DESP%
- echo %runcmd%
- rem 执行安装命令
- %runcmd%
- rem 启动服务
- net start TestTimerService
- if ERRORLEVEL 1 goto js_error
- goto end
- :no_java
- @echo . 没有Java运行环境,安装脚本不能运行
- goto error_exit
- :no_peer
- @echo . 启动文件TestTimer.jar不存在,安装脚本不能运行
- goto error_exit
- :no_jsexe
- @echo . 可执行文件JavaService.exe 不存在,安装脚本不能运行
- goto error_exit
- :js_error
- @echo . TestTimerService在安装为服务的过程中发生了错误,请检查相关日志文件
- goto error_exit
- :error_exit
- @echo .
- @echo . 安装失败,不能将 TestTimer安装为Windows服务
- @echo .
- @echo . 命令格式:
- @echo .
- @echo . %~n0 [-auto / -manual] [-np]
- @echo .
- @echo . 其中:
- @echo . -auto (默认) or -manual 参数说明了服务的启动模式:自动或者手动
- @echo . -np 批处理命令执行完毕后不暂停
- @echo .
- @echo . 比如:
- @echo . %~n0 -auto -np
- :end
- ENDLOCAL
- @echo .
- if "%2" NEQ "-np" @pause
注意: 其中JRE_HOME 和 JSBINDIR(javaservice路径) 视安装路径而异。
5. 停止并卸载服务的批处理文件,其中service 名称必须与上面注册的service名称一致
- @echo off
- rem 修改控制台颜色
- color 1d
- rem * 使用JavaService卸载TestTimerService服务的脚本
- rem *
- rem * JavaService - Windows NT Service Daemon for Java applications
- rem * Copyright (C) 2006 Multiplan Consultants Ltd. LGPL Licensing applies
- rem * Information about the JavaService software is available at the ObjectWeb
- rem * web site. Refer to http://javaservice.objectweb.org for more details.
- rem 开始批处理文件中环境改动的本地化操作,在使用endlocal后环境将恢复到原先的内容
- SETLOCAL
- rem 设置环境变量
- SET BASE_PATH=E:\AccountingTool\Release\AccountingTool\
- rem 设置JavaService的路径
- set JSBINDIR=%BASE_PATH%\JavaService-2.0.10
- set JSEXE=%JSBINDIR%\JavaService.exe
- rem 卸载服务前先停止服务
- net stop TestTimerService
- rem 设置执行命令行
- set runcmd="%JSEXE%" -uninstall TestTimerService
- %runcmd%
- @echo .
- ENDLOCAL
- @echo .
- if "%2" NEQ "-np" @pause
【JavaService】部署Java jar为Windows后台服务的更多相关文章
- 使用instsrv.exe和srvany.exe将应用程序安装成windows后台服务
好的参考链接: http://www.jb51.net/softjc/374631.html 利用这两个工具,将 exe程序或者 bat文件,做成Windows后台服务.
- java程序在windows后台执行的办法
1.新建run.txt文件 2.在文件中输入一下内容: @echo off start javaw -jar xx.jar exit 3.保存,修改文件名为run.bat4.双击即可 5.删除wind ...
- jar 在windows 启动服务,卸载服务,停止端口
参考:https://www.cnblogs.com/zhuchunlei/p/9469569.html 1,启动服务 install.bat @echo off SET JAVA_HOME=&qu ...
- 番外篇:使用nssm工具将ES、Kibana、Logstash或者其他.bat文件部署为Windows后台服务的方法
使用NSSM工具安装bat文件为Windows服务 nssm是一个可以把bat批处理文件部署为Windows服务的小工具.例如很多.net项目可能还是在Windows服务器上面跑的,但是很多组件只提供 ...
- 五. jenkins部署springboot项目(2)--windows环境--服务
前提:jenkins和springboot运行在同一台机器 springboot 通过winsw部署为服务 winsw 下载地址:https://github.com/kohsuke/winsw/re ...
- 将Java应用注册为后台服务
项目中有一个java应用程序,交付后用户要求要把这个程序做成后台服务程序,即:系统启动后该程序可以自动启动,并且在前台不要出现运行窗口,维护人员只要在“服务管理”(Windows)中选择启动或停止即可 ...
- Python 实现windows后台服务
# -*- coding: utf-8 -*- import sys import win32api import win32con import win32event import win32ser ...
- 如何注册java程序为windows服务
如何注册java 程序为windows 服务 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在 ...
- Linux环境下执行java -jar xxx.jar命令如何让springboot项目在后台运行
段落引用> 由于springboot内置了tomcat容器,我们通常会把项目打成jar或者war后直接使用java -jar xxx.jar命令去运行程序,但是当前ssh窗口被锁定或者按下ctr ...
随机推荐
- git branch用法总结
git branch git branch 不带参数:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记,例如: #git branch* master newbranch ...
- .NET Nancy 详解(二) 简易路由实现
继续上面的简易版本,有意思的点剩下便是路由实现了. 路由注册 首先,来看一下基本的路由注册过程. public FakeNancyModuleWithoutBasePath() { Delete[&q ...
- android 入门-动画与容器
set 动画容器 可作为资源id添加R.anim.xxxx 可用于在样式表中添加 http://blog.csdn.net/liuhe688/article/details/6660823 in ...
- phpcms调用一级栏目和二级栏目
{loop subcat(,,,$siteid) $r} {php $num++} <strong><a href=} <br /> {elseif $n!=$c} | ...
- hdu 5289 rmp+二分+枚举后界 or单调队列 ****
好题~~ 给你n个数和k,求有多少的区间使得区间内部任意两个数的差值小于k,输出符合要求的区间个数,枚举后界~~ 又是一种没见过的方法,太弱了/(ㄒoㄒ)/~~ #include <cstdio ...
- EF中无法使用时间转字符串
场景: 查询条件需要使用到时间类型,且需要特殊格式化,例:ToString("yyyy-MM-dd"):即,在需要使用时间进行like方式处理时: 此时,用如下方式: var q ...
- 常见IE浏览器bug及其修复方案(双外边距、3像素偏移、绝对定位)
1. 双外边距浮动bug IE6和更低版本中存在双外边距浮动bug,顾名思义,这个Windows bug使任何浮动元素上的外边距加倍 bug重现: <!DOCTYPE html> < ...
- JVM内存结构、垃圾回收那点事
翻看电脑的文件夹,无意看到了9月份在公司做的一次分享,浏览了一下"婆婆特",发现自己在ppt上的写的引导性问题自己也不能确切的回答出来,哎,知识这东西,平时不常用的没些日子就生疏了 ...
- 单例模式/singleton模式/创建型模式
Java实现要点: 私有构造方法 线程安全(并发的考虑) 延迟加载(效率的考虑,对于较大的类在使用时在加载) 公有方法访问单一实例 常见单例模式代码及问题 //无延迟加载,常驻内存(即使不使用) cl ...
- JQuery Event属性说明
JQuery事件中的Event属性是经常性的被忽略的.大多数时间你的确不怎么用它,但有些时候它还是有作用的. 如获知触发时用户的环境(是否按了shift etc).每个浏览器对event都有不同的地方 ...