一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解SpringBoot注冊Windows服務(wù)和啟動報(bào)錯(cuò)的原因

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

2021-07-21 14:26ITDragon龍 Java教程

這篇文章主要介紹了詳解SpringBoot注冊Windows服務(wù)和啟動報(bào)錯(cuò)的原因,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

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

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

winsw是?款可以將可執(zhí)?程序安裝成windows service的開源具,官方地址下載地址

制作步驟:

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

第二步:將下載的winsw.net2.exe 改名為myserver.exe

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

第四步:注冊和啟動服務(wù)

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<service>
 <!-- windows 服務(wù)唯一標(biāo)識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>
 <!-- 啟動的可執(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:啟動可執(zhí)行文件的全路徑,如果配置環(huán)境變量,則可以簡寫,所有這里填寫java

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

logpath:配置日志路徑

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

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

winsw常用命令

  • myserver.exe install:安裝服務(wù)
  • myserver.exe uninstall:刪除服務(wù)
  • myserver.exe start:啟動服務(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)上一次成功,沒有多余的煩惱。可生活哪有這么容易,在windows server 2012 r2的系統(tǒng)上啟動失敗。有錯(cuò)誤不可怕,可怕的是不會找錯(cuò)誤日志。

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

啟動windows服務(wù)失敗

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

?
1
2
3
4
5
6
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)沒有找到指定文件,而在winsw的xml文件中就已經(jīng)配置了executable,并且配置了環(huán)境變量。那為什么還提示文件沒有找到?抱著試一試的心態(tài),將java改為了全路徑。重新注冊服務(wù)并啟動,結(jié)果服務(wù)啟動成功了。一肚子的火不知道往那撒。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@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%"
# 注冊并啟動服務(wù)
myserver.exe uninstall
myserver.exe install
myserver.exe start
exit

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/itdragon/p/10513474.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 污污免费 | 国产卡一卡二卡3卡乱码免费 | 日本免费一区二区三区a区 日本免费三片在线观看 | tk白丝丨vk| 亚洲国产成人精品无码区99 | 精品国产麻豆免费人成网站 | 亚洲 日韩 国产 制服 在线 | 日日夜夜撸影院 | 精品国产自在在线在线观看 | bedfriend泰剧全集免费观看 | 97视频免费人人观看人人 | 免费网站国产 | 日本 在线播放 | 午夜国产精品影院在线观看 | 国模李丽莎大尺度啪啪 | 男人疯狂擦进女人下面 | 久久伊人在 | 武侠艳妇屈辱的张开双腿 | 午夜福利08550 | 亚洲精品6久久久久中文字幕 | 果冻传媒mv在线观看入口免费 | 亚洲国产天堂综合一区 | 大妹子最新视频在线观看 | 毛片手机在线视频免费观看 | 日本b站一卡二不卡三卡四卡 | 国产一级黄毛片 | 青青久久精品国产 | 男人天堂官方网站 | 蜜桃免费 | 欧美透逼视频 | 99re这里只有精品视频 | 青青草99 | 五月色婷婷网在线观看 | 欧美日韩1区2区 | 亚洲色图欧美色 | 干操网| 香港论理午夜电影网 | 2012年免费中文视频 | 星球大战成人h无删减版 | 国产亚洲精品第一综合另类 | 特级毛片免费视频观看 |