亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解SpringBoot注冊(cè)Windows服務(wù)和啟動(dòng)報(bào)錯(cuò)的原因

 更新時(shí)間:2019年03月13日 09:30:55   作者:ITDragon龍  
這篇文章主要介紹了詳解SpringBoot注冊(cè)Windows服務(wù)和啟動(dòng)報(bào)錯(cuò)的原因,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Windows系統(tǒng)啟動(dòng)Java程序會(huì)彈出黑窗口。黑窗口有幾點(diǎn)不好。首先它不美觀;其次容易誤點(diǎn)導(dǎo)致程序關(guān)閉;但最讓我匪夷所思的是:將鼠標(biāo)光標(biāo)選中黑窗口日志信息,程序竟然不會(huì)繼續(xù)執(zhí)行,日志也不會(huì)繼續(xù)輸出。從而導(dǎo)致頁(yè)面一直處于請(qǐng)求狀態(tài)。回車后程序才能正常執(zhí)行。同時(shí)客戶希望我們能部署在Windows系統(tǒng)上并且做到開機(jī)自動(dòng)啟動(dòng)。針對(duì)以上需求將系統(tǒng)程序注冊(cè)成Windows服務(wù)變得尤為重要。

針對(duì)于SpringBoot程序,目前主流的方法是采用winsw,簡(jiǎn)單方便??墒窃陂_發(fā)過(guò)程中,針對(duì)不同的系統(tǒng),啟動(dòng)服務(wù)可能會(huì)出現(xiàn)意想不到的結(jié)果。同樣的配置方法,在win10可以成功注冊(cè)并啟動(dòng)服務(wù)。而在windows server 2012 卻啟動(dòng)失敗。這里分享我的經(jīng)驗(yàn)。

注冊(cè)windows服務(wù)制作流程

winsw是⼀款可以將可執(zhí)⾏程序安裝成Windows Service的開源⼩⼯具,官⽹地址, 下載地址

制作步驟:

第一步:將springboot項(xiàng)目打包成MyServer.jar

第二步:將下載的WinSW.NET2.exe 改名為MyServer.exe

第三步:將下載的sample-minimal.xml 改名為MyServer.xml

第四步:注冊(cè)和啟動(dòng)服務(wù)

這里重點(diǎn)介紹 sample-minimal.xml 文件

<service>
 <!-- Windows 服務(wù)唯一標(biāo)識(shí)ID-->
 <id>My Server</id>
 <!-- Windows 服務(wù)名稱--> 
 <name>My Server</name> 
 <!-- Windows 服務(wù)描述--> 
 <description>This service is a service cratead from a minimal configuration</description> 
 <!-- 啟動(dòng)的可執(zhí)行文件的路徑,如果已經(jīng)配置環(huán)境變量,則不必寫全路徑(則其實(shí)是一個(gè)坑) -->
 <executable>java</executable> 
 <arguments> -jar MyServer.jar --spring.datasource.url=jdbc:mysql://localhost:3306/database </arguments> 
 <!-- 日志路徑,若目錄不存在,則默認(rèn)為配置文件所在的同一目錄--> 
 <logpath>ServerPath\log\dashboard\</logpath> 
 <!-- 日志模式,默認(rèn)為append追加模型,rotate為旋轉(zhuǎn)模式-->
 <logmode>rotate</logmode> 
</service>

executable:?jiǎn)?dòng)可執(zhí)行文件的全路徑,如果配置環(huán)境變量,則可以簡(jiǎn)寫,所有這里填寫Java

arguments:命令執(zhí)行的參數(shù)

logpath:配置日志路徑

logmode:日志輸出模式,默認(rèn)為append,官方文檔

  • append (追加模式)其特點(diǎn)是將日志文件全部輸出在一個(gè)文件中,這個(gè)文件可能會(huì)越來(lái)越大。
  • rotate(旋轉(zhuǎn)模式,推薦)當(dāng)日志文件大小達(dá)到10兆(默認(rèn)值),winsw會(huì)將日志重新輸出到另外一份日志文件,最多保留8個(gè)(默認(rèn)值)。
  • reset(重置模式)每次重啟服務(wù)都會(huì)重置日志文件。
  • none(忽略模式)幾乎不會(huì)生成日志文件。

winsw常用命令

  • MyServer.exe install:安裝服務(wù)
  • MyServer.exe uninstall:刪除服務(wù)
  • MyServer.exe start:?jiǎn)?dòng)服務(wù)
  • MyServer.exe stop:停⽌服務(wù)
  • MyServer.exe restart:重啟服務(wù)
  • MyServer.exe status:輸出當(dāng)前服務(wù)的狀態(tài)

MyServer.exe 是WinSW.NET2.exe文件。在win10系統(tǒng)上一次成功,沒(méi)有多余的煩惱??缮钅挠羞@么容易,在windows server 2012 r2的系統(tǒng)上啟動(dòng)失敗。有錯(cuò)誤不可怕,可怕的是不會(huì)找錯(cuò)誤日志。

啟動(dòng)windows服務(wù)失敗

服務(wù)啟動(dòng)成功后自動(dòng)關(guān)閉,配置的日志文件也沒(méi)有生成。嘗試用cmd執(zhí)行java -jar的命令,服務(wù)可以正常啟動(dòng)。但可具體是什么錯(cuò)誤卻不得而知。其實(shí)Windows服務(wù)是有日志管理的。選擇:控制面板---管理工具---事件查看器---window日志---應(yīng)用程序---找出對(duì)應(yīng)服務(wù)的日志。如下:

Service cannot be started. 
System.ComponentModel.Win32Exception: The system cannot find the file specified 
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
at winsw.WrapperService.StartProcess(Process processToStart, String arguments, String executable) 
at winsw.WrapperService.OnStart(String[] _) 
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

提示很清楚,系統(tǒng)沒(méi)有找到指定文件,而在winsw的xml文件中就已經(jīng)配置了executable,并且配置了環(huán)境變量。那為什么還提示文件沒(méi)有找到?抱著試一試的心態(tài),將java改為了全路徑。重新注冊(cè)服務(wù)并啟動(dòng),結(jié)果服務(wù)啟動(dòng)成功了。一肚子的火不知道往那撒。

為了避免這種事情再次發(fā)生,決定將executable的內(nèi)容設(shè)置成Java的全路徑,于是簡(jiǎn)單寫了一個(gè)bat文件。

@echo off
# 獲取java環(huán)境變量 
set JAVA_HOME=%JAVA_HOME%
echo %JAVA_HOME%
# 替換java路徑
setlocal enabledelayedexpansion
set file=%cd%\MyServer.xml
set file_tmp=%cd%\MyServer_tmp.xml
set source=JAVAHOME
set replaced=%JAVA_HOME%\bin\java

for /f "delims=" %%i in (%file%) do (
  set str=%%i
    set "str=!str:%source%=%replaced%!"
    echo !str!>>%file_tmp%
)
move "%file_tmp%" "%file%"
# 注冊(cè)并啟動(dòng)服務(wù)
MyServer.exe uninstall
MyServer.exe install
MyServer.exe start
EXIT 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring中DeferredResult異步處理

    Spring中DeferredResult異步處理

    DeferredResult是Spring中處理異步請(qǐng)求的強(qiáng)大工具,可以幫助改善應(yīng)用程序的性能和用戶體驗(yàn),本文就來(lái)介紹一下Spring中DeferredResult異步處理,感興趣的可以了解一下
    2023-12-12
  • HttpClient HttpRoutePlanner接口確定請(qǐng)求目標(biāo)路由

    HttpClient HttpRoutePlanner接口確定請(qǐng)求目標(biāo)路由

    這篇文章主要為大家介紹了使用HttpClient HttpRoutePlanner接口確定請(qǐng)求目標(biāo)路由,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java Process詳解及實(shí)例

    Java Process詳解及實(shí)例

    這篇文章主要介紹了Java Process詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • JAVA文件讀取常用工具類(8種)

    JAVA文件讀取常用工具類(8種)

    JAVA操作文件在經(jīng)常會(huì)使用到,本文匯總了部分JAVA操作文件的讀取常用工具類,主要介紹了8種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-08-08
  • Java?switch?case語(yǔ)句舉例詳解

    Java?switch?case語(yǔ)句舉例詳解

    這篇文章主要給大家介紹了關(guān)于Java?switch?case語(yǔ)句舉例詳解的相關(guān)資料,switch case語(yǔ)句是一種流程控制語(yǔ)句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊,需要的朋友可以參考下
    2023-10-10
  • 使用springboot配置文件yml中的map形式

    使用springboot配置文件yml中的map形式

    這篇文章主要介紹了springboot配置文件yml中的map形式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot+Querydsl?框架實(shí)現(xiàn)復(fù)雜查詢解析

    SpringBoot+Querydsl?框架實(shí)現(xiàn)復(fù)雜查詢解析

    本篇主要將介紹的是利用spring query dsl框架實(shí)現(xiàn)的服務(wù)端查詢解析和實(shí)現(xiàn)介紹,對(duì)SpringBoot?Querydsl?查詢操作感興趣的朋友一起看看吧
    2022-05-05
  • Spring boot 整合KAFKA消息隊(duì)列的示例

    Spring boot 整合KAFKA消息隊(duì)列的示例

    這篇文章主要介紹了Spring boot 整合 KAFKA 消息隊(duì)列的示例,幫助大家更好的理解和使用spring boot框架,感興趣的朋友可以了解下
    2020-10-10
  • Java之使用POI教你玩轉(zhuǎn)Excel導(dǎo)入與導(dǎo)出

    Java之使用POI教你玩轉(zhuǎn)Excel導(dǎo)入與導(dǎo)出

    這篇文章主要介紹了Java之使用POI教你玩轉(zhuǎn)Excel導(dǎo)入與導(dǎo)出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java設(shè)計(jì)模式單例模式(Singleton)用法解析

    Java設(shè)計(jì)模式單例模式(Singleton)用法解析

    這篇文章主要介紹了Java設(shè)計(jì)模式單例模式(Singleton)用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論