日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

【JavaService】部署Java jar为Windows后台服务

發(fā)布時間:2025/3/14 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JavaService】部署Java jar为Windows后台服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 將Java jar文件部署為Windows后臺服務(wù)有多種方法:Service Installer、Java service Wrapper、JavaService.exe等等。這里介紹下使用JavaService.exe來部署windows后臺服務(wù)的方法。

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

2. 安裝JavaService.exe
?? 將下載的zip包解壓縮到任意目錄即可

3. 編譯一個測試jar(請從附件中下載): 每天11:00:00向time.log文件中寫入當(dāng)前時間

Java代碼 ?
  • public?static?void?main(String[]?args)?{??
  • ??
  • ????????//?schedule?task執(zhí)???
  • ????????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?{?????????????????
  • ????????????????????????????//?向緩沖區(qū)寫成功后?執(zhí)?緩沖區(qū)刷新?使文件內(nèi)容生效??
  • ????????????????????????????if?(outSW?!=?null)?{??
  • ????????????????????????????????outSW.close();??
  • ????????????????????????????}??
  • ????????????????????????????//關(guān)?文件流??
  • ????????????????????????????if?(writerStream?!=?null)?{???
  • ????????????????????????????????writerStream.close();??
  • ????????????????????????????}??
  • ??????????????????????????
  • ????????????????????}?catch?(final?IOException?e)?{??
  • ????????????????????????e.printStackTrace();??
  • ????????????????????}??
  • ??
  • ????????????????}??
  • ????????????}??
  • ????????},?new?DailyIterator(11,?0,?0));??
  • ????}??


  • 4. 在jar文件所在的目錄下,建立如下批處理文件,執(zhí)行后即可完成服務(wù)的注冊和auto start

    Java代碼 ?
  • @echo?off??
  • ??
  • rem?修改控制臺顏色??
  • color?1d??
  • ??
  • rem?*?使用JavaService將TestTimer安裝為Windows服務(wù)的腳本??
  • 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?開始批處理文件中環(huán)境改動的本地化操作,在使用endlocal后環(huán)境將恢復(fù)到原先的內(nèi)容??
  • SETLOCAL??
  • ??
  • rem?設(shè)置環(huán)境變量,指向當(dāng)前路徑??
  • SET?BASE_PATH=%CD%??
  • ??
  • rem?設(shè)置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?設(shè)置jvm內(nèi)存分配情況??
  • set?JVM_MEMORY=-Xms128m?-Xmx256m???
  • ??
  • rem?設(shè)置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?設(shè)置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?處理該批處理的輸入?yún)?shù),后臺服務(wù)啟動模式:自動??
  • SET?svcmode=??
  • if?"%1"?==?"-manual"?SET?svcmode=-manual??
  • if?"%1"?==?"-auto"?SET?svcmode=-auto??
  • ??
  • ??
  • rem?設(shè)置JAVA_OPTS??
  • set?JAVA_OPTS=%JAVA_OPTS%?-Djava.class.path="%BASE_PATH%\TestTimer.jar"??
  • set?JAVA_OPTS=%JAVA_OPTS%?%JVM_MEMORY%??
  • ??
  • rem?設(shè)置startstop??
  • SET?START_STOP=-start?cn.test.timer.TestTimer??
  • ??
  • ??
  • rem?設(shè)置Log文件路徑??
  • set?OUT_ERR=-out?"%BASE_PATH%\service_out.log"?-err?"%BASE_PATH%\service_err.log"??
  • ??
  • rem?設(shè)置desp??
  • set?DESP=-description?"TestTimer?Service"???
  • ??
  • rem?設(shè)置執(zhí)行命令行??
  • 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?執(zhí)行安裝命令??
  • %runcmd%??
  • ??
  • rem?啟動服務(wù)??
  • net?start?TestTimerService??
  • ??
  • if?ERRORLEVEL?1?goto?js_error??
  • ??
  • goto?end??
  • ??
  • :no_java??
  • @echo?.?沒有Java運(yùn)行環(huán)境,安裝腳本不能運(yùn)行??
  • goto?error_exit??
  • ??
  • :no_peer??
  • @echo?.?啟動文件TestTimer.jar不存在,安裝腳本不能運(yùn)行??
  • goto?error_exit??
  • ??
  • ??
  • :no_jsexe??
  • @echo?.?可執(zhí)行文件JavaService.exe?不存在,安裝腳本不能運(yùn)行??
  • goto?error_exit??
  • ??
  • ??
  • :js_error??
  • @echo?.?TestTimerService在安裝為服務(wù)的過程中發(fā)生了錯誤,請檢查相關(guān)日志文件??
  • goto?error_exit??
  • ??
  • :error_exit??
  • ??
  • @echo?.??
  • @echo?.?安裝失敗,不能將?TestTimer安裝為Windows服務(wù)??
  • @echo?.??
  • @echo?.?命令格式:??
  • @echo?.??
  • @echo?.??%~n0?[-auto?/?-manual]?[-np]??
  • @echo?.??
  • @echo?.?其中:??
  • @echo?.??-auto?(默認(rèn))?or?-manual?參數(shù)說明了服務(wù)的啟動模式:自動或者手動??
  • @echo?.??-np?批處理命令執(zhí)行完畢后不暫停??
  • @echo?.??
  • @echo?.?比如:??
  • @echo?.??%~n0?-auto?-np??
  • ??
  • :end??
  • ENDLOCAL??
  • @echo?.??
  • if?"%2"?NEQ?"-np"?@pause??

  • 注意: 其中JRE_HOME 和 JSBINDIR(javaservice路徑) 視安裝路徑而異。

    5. 停止并卸載服務(wù)的批處理文件,其中service 名稱必須與上面注冊的service名稱一致

    Java代碼 ?
  • @echo?off??
  • ??
  • rem?修改控制臺顏色??
  • color?1d??
  • ??
  • rem?*?使用JavaService卸載TestTimerService服務(wù)的腳本??
  • 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?開始批處理文件中環(huán)境改動的本地化操作,在使用endlocal后環(huán)境將恢復(fù)到原先的內(nèi)容??
  • SETLOCAL??
  • ??
  • rem?設(shè)置環(huán)境變量??
  • SET?BASE_PATH=E:\AccountingTool\Release\AccountingTool\??
  • ??
  • rem?設(shè)置JavaService的路徑??
  • set?JSBINDIR=%BASE_PATH%\JavaService-2.0.10??
  • set?JSEXE=%JSBINDIR%\JavaService.exe??
  • ??
  • rem?卸載服務(wù)前先停止服務(wù)??
  • net?stop?TestTimerService??
  • ??
  • rem?設(shè)置執(zhí)行命令行??
  • set?runcmd="%JSEXE%"?-uninstall?TestTimerService??
  • ??
  • %runcmd%??
  • ??
  • @echo?.??
  • ??
  • ENDLOCAL??
  • @echo?.??
  • if?"%2"?NEQ?"-np"?@pause?
  • 轉(zhuǎn)載于:https://www.cnblogs.com/hyl8218/p/5084887.html

    總結(jié)

    以上是生活随笔為你收集整理的【JavaService】部署Java jar为Windows后台服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。