使用JavaService.exe(amd64)发布java服务(jdk x64)

最近项目中需要使用java服务,但是java服务已经写好了,就等待部署到windows服务中,遇到了种种困难------在x64服务器中部署jdk x64编译的jar时,遇到了各种纠结。

本文找到了一种解决方案(在x64服务器、jdk x64 java环境中部署java服务的解决方案):

首先,我们选测的工具是JavaService.exe,目前最新版本是:2.0.10 

下载地址:http://forge.ow2.org/projects/javaservice/

之后,解压下载的

再最后,编译待部署的java服务程序jar包:

再之后,整理部署java服务的目录结构:

1,建立java服务安装目录为:D:Java_StudywindowsserviceJavaService_2_0_10-amd64

2,拷贝编译好的TestTimer.jar包到服务安装目录的根目录下:D:Java_StudywindowsserviceJavaService_2_0_10-amd64TestTimer.jar;

     及拷贝TestTimer工程依赖的外部包log4j-1.2.17.jar到服务安装目录的根目录下:D:Java_StudywindowsserviceJavaService_2_0_10-amd64inlog4j-1.2.17.jar;

3,把JavaService_2_0_10-amd64.zip解压出的JavaService.exe文件拷贝到D:Java_StudywindowsserviceJavaService_2_0_10-amd64JavaService.exe;

4,  整理install.bat和uninstall.bat。

install.bat:

  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:Java_StudyJavajdk1.7.0_79
 16   
 17 rem 判断JRE_HOME是否正确  
 18 if "%JRE_HOME%" == "" goto no_java
 19 if not exist "%JRE_HOME%injava.exe" goto no_java
 20   
 21 rem 设置jvm内存分配情况  
 22 set JVM_MEMORY=-Xms128m -Xmx256m  
 23 rem 设置jvmdll使用哪一种模式  
 24 SET jvmdll=%JRE_HOME%jreinserverjvm.dll
 25 if not exist "%jvmdll%" goto no_java  
 26   
 27 rem 设置JavaService路径  
 28 set JSBINDIR=D:Java_StudywindowsserviceJavaService_2_0_10-amd64
 29 set JSEXE=%JSBINDIR%JavaService.exe
 30   
 31 rem 判断jar是否正确  
 32 SET acctjar=%BASE_PATH%TestTimer.jar
 33 if not exist "%acctjar%" goto no_peer
 34   
 35 @echo . Using following version of JavaService executable:  
 36 @echo .  
 37 "%JSEXE%" -version  
 38 @echo .  
 39   
 40 rem parameters and files seem ok, go ahead with the service installation  
 41 @echo .  
 42   
 43 rem 处理该批处理的输入参数,后台服务启动模式:自动  
 44 SET svcmode=  
 45 if "%1" == "-manual" SET svcmode=-manual  
 46 if "%1" == "-auto" SET svcmode=-auto  
 47   
 48 rem 设置JAVA_OPTS  
 49 set JAVA_OPTS=%JAVA_OPTS% -Djava.class.path="%BASE_PATH%inlog4j-1.2.17.jar;%BASE_PATH%TestTimer.jar"  
 50 set JAVA_OPTS=%JAVA_OPTS% %JVM_MEMORY%  
 51   
 52 rem 设置startstop  
 53 SET START_STOP=-start cn.test.timer.TestTimer  
 54   
 55   
 56 rem 设置Log文件路径  
 57 set OUT_ERR=-out "%BASE_PATH%service_out.log" -err "%BASE_PATH%service_err.log"  
 58   
 59 rem 设置desp  
 60 set DESP=-description "TestTimer Service"   
 61   
 62 rem 设置执行命令行  
 63 set runcmd="%JSEXE%" -install TestTimerService
 64 set runcmd=%runcmd% "%jvmdll%"
 65 set runcmd=%runcmd% %JAVA_OPTS%
 66 set runcmd=%runcmd% %START_STOP%
 67 set runcmd=%runcmd% %OUT_ERR%
 68 set runcmd=%runcmd% -current
 69 set runcmd=%runcmd% "%BASE_PATH%"
 70 set runcmd=%runcmd% %svcmode%
 71 set runcmd=%runcmd% -overwrite
 72 set runcmd=%runcmd% -startup 6
 73 set runcmd=%runcmd% %DESP%
 74 echo %runcmd%  
 75 
 76 rem 执行安装命令  
 77 %runcmd%  
 78 rem 启动服务  
 79 net start TestTimerService
 80   
 81 if ERRORLEVEL 1 goto js_error  
 82 goto end  
 83 :no_java
 84 @echo . 没有Java运行环境,安装脚本不能运行  
 85 goto error_exit  
 86 :no_peer
 87 @echo . 启动文件TestTimer.jar不存在,安装脚本不能运行  
 88 goto error_exit   
 89 :no_jsexe
 90 @echo . 可执行文件JavaService.exe 不存在,安装脚本不能运行  
 91 goto error_exit  
 92 :js_error
 93 @echo . TestTimerService在安装为服务的过程中发生了错误,请检查相关日志文件  
 94 goto error_exit  
 95 :error_exit
 96 
 97 @echo .  
 98 @echo . 安装失败,不能将 TestTimer安装为Windows服务  
 99 @echo .  
100 @echo . 命令格式:  
101 @echo .  
102 @echo .  %~n0 [-auto / -manual] [-np]  
103 @echo .  
104 @echo . 其中:  
105 @echo .  -auto (默认) or -manual 参数说明了服务的启动模式:自动或者手动  
106 @echo .  -np 批处理命令执行完毕后不暂停  
107 @echo .  
108 @echo . 比如:  
109 @echo .  %~n0 -auto -np  
110 :end
111 
112 ENDLOCAL  
113 @echo .  
114 if "%2" NEQ "-np" @pause
View Code

uninstall.bat

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

整理后的目录结构为:

使用JavaService.exe部署Java服务并启动服务:

运行install.bat

运行过程中,如果正行,cmd屏幕信息如下:

安装目录结构变化:

停止并卸载服务:

运行uninstall.bat.

运行过程中,如果正行,cmd屏幕信息如下:

参考文章:《【JavaService】部署Java jar为Windows后台服务 http://blog.csdn.net/alibert/article/details/49944721》

JavaService将jar发布为windows 服务  http://blog.csdn.net/alibert/article/details/49944823》

原文地址:https://www.cnblogs.com/yy3b2007com/p/5423412.html