使用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_Study\windowsservice\JavaService_2_0_10-amd64

2,拷貝編譯好的TestTimer.jar包到服務安裝目錄的根目錄下:D:\Java_Study\windowsservice\JavaService_2_0_10-amd64\TestTimer.jar;

     及拷貝TestTimer工程依賴的外部包log4j-1.2.17.jar到服務安裝目錄的根目錄下:D:\Java_Study\windowsservice\JavaService_2_0_10-amd64\bin\log4j-1.2.17.jar;

3,把JavaService_2_0_10-amd64.zip解壓出的JavaService.exe文件拷貝到D:\Java_Study\windowsservice\JavaService_2_0_10-amd64\JavaService.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_Study\Java\jdk1.7.0_79
 16   
 17 rem 判斷JRE_HOME是否正確  
 18 if "%JRE_HOME%" == "" goto no_java
 19 if not exist "%JRE_HOME%\bin\java.exe" goto no_java
 20   
 21 rem 設置jvm內存分配情況  
 22 set JVM_MEMORY=-Xms128m -Xmx256m  
 23 rem 設置jvmdll使用哪一種模式  
 24 SET jvmdll=%JRE_HOME%\jre\bin\server\jvm.dll
 25 if not exist "%jvmdll%" goto no_java  
 26   
 27 rem 設置JavaService路徑  
 28 set JSBINDIR=D:\Java_Study\windowsservice\JavaService_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%\bin\log4j-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_Study\windowsservice
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》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM