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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 压缩jar 仓库,java服务安装(一):使用java service wrapper及maven打zip包

發(fā)布時間:2025/3/12 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 压缩jar 仓库,java服务安装(一):使用java service wrapper及maven打zip包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

tags: java jsw maven zip

1、概述

使用java開發(fā)程序,在windows平臺下,一般有web應(yīng)用,后臺服務(wù)應(yīng)用,桌面應(yīng)用:

web應(yīng)用多數(shù)打成war包在web容器(如tomcat,jetty等)中運(yùn)行

桌面應(yīng)用一般打成jar包或exe文件運(yùn)行

后臺服務(wù)應(yīng)用一般打成jar包,然后使用命令行(如java -jar xxx.jar)運(yùn)行

前面兩種運(yùn)行方式在本文不作討論,主要描述java開發(fā)的后臺服務(wù)程序(如定時任務(wù)程序,文件處理,數(shù)據(jù)備份等)。

1.1、為什么要用服務(wù)形式運(yùn)行

若使用命令行方式運(yùn)行java程序,把命令寫成腳本(如bat腳本)運(yùn)行即可,但命令行方式有其不方便之處,如命令行窗口不能關(guān)閉,關(guān)閉即停止,因此維護(hù)人員容易誤操作(關(guān)閉窗口使程序停止);若服務(wù)器宕機(jī)或其它原因,程序往往無法在服務(wù)器重啟時自動啟動。在windows下,很多程序都是以服務(wù)的形式運(yùn)行,這也符合windows的管理。因此,建議使用服務(wù)形式運(yùn)行,操作方便。

1.2、如何讓java程序以服務(wù)形式運(yùn)行

有幾種方法可以讓java程序以服務(wù)形式運(yùn)行:

Java Service Wrapper目前業(yè)界最知名、最成熟的解決方案,添加任何額外的代碼即可使用,不足之處是收費(fèi)、64位版本需要購買Licence,不過在64位使用32位的也關(guān)系不大(除非你的程序需要很大的運(yùn)算量)。

Apache Commons Daemon著名的Apache Commons工具包的成員,按規(guī)則添加啟動程序,再編寫腳本實現(xiàn)。

其它的(如WinRun4J,Launch4j)未使用過,更多可參考java開源打包工具

本文主要講解使用java service wrapper把java程序作為windows的服務(wù)運(yùn)行,它不需要添加任何代碼,配置即可。

1.3、打包需求

java程序打包一般打成jar包,如果是供其它調(diào)用打包成一個jar包上傳到倉庫,其它人可以引用,這種方式可行,如果它是獨(dú)立的程序,有其它的額外文件(如配置文件,本文中說的wrapper文件),打成jar包就比較難處理了,因此,更多的情況是把程序把成zip包以便傳輸,并規(guī)定好程序包目錄結(jié)構(gòu),打包時打成一個zip包,解壓即用。如下是我經(jīng)常用到的一種包結(jié)構(gòu):

說明:

classes目錄:存放所有java編譯文件及資源配置文件

lib目錄:存放所有程序使用到所有依賴jar

wrapper:所有存放wrapper相關(guān)的文件,包括運(yùn)行腳本bin,wrapper的配置文件conf,wrapper使用的依賴lib,及日志存放目錄

因此,需要使用maven把程序打成zip包,解壓出來后就是上述的目錄結(jié)構(gòu),可直接運(yùn)行。

2、程序示例

按前面所說的要求,本文以下面的一個示例進(jìn)行講解,示例使用標(biāo)準(zhǔn)maven archetype結(jié)構(gòu),只實現(xiàn)了一個簡單的文件寫入內(nèi)容的功能,使用jsw對程序進(jìn)行包裝,并把它使用maven打包成zip,解壓后直接使用jsw的bin下的腳本安裝或卸載服務(wù)。

從圖中可見,程序很簡單,僅一個java類FileLogger用于寫日志到文件,使用log4j(1.2.16版本,現(xiàn)在流行slf4j和logback了)輸出日志內(nèi)容。日志路徑是當(dāng)前的classpath下的logs目錄。log4j使用參考它的官網(wǎng),當(dāng)前我們主要關(guān)注以下兩點(diǎn):

wrapper文件夾:當(dāng)前只配置windows,存放jsw的文件,以便把程序包裝為服務(wù)安裝。若是linux,可自行添加文件夾。

pom.xml及assembly文件夾:用于maven配置按需打包成zip包,zip包內(nèi)容如上面"打包需求"所示。

3、maven打zip包

3.1、maven-assembly-plugin介紹

maven-assembly-plugin是maven中用于構(gòu)建發(fā)布包的插件,“assembly”是把一組文件、目錄、依賴元素組裝成一個歸檔文件,不僅支持創(chuàng)建二進(jìn)制歸檔文件,也支持創(chuàng)建源碼歸檔文件。目前Assembly插件支持如下格式的歸檔文件:

zip 打zip包

tar.gz 打tar.gz包

tar.bz2 打tar.bz2包

jar 打jar包

dir 直接打包目錄

war 打war包

使用方法也比較簡單,可參考maven官網(wǎng)的assembly,一般是三個步驟

工程的pom.xml里配置Assembly插件。

自定義打包格式的描述符

運(yùn)行"mvn package"或"mvn assembly:assembly"命令即可

3.2、maven-assembly-plugin配置

如下所示,在pom.xml文件中的build>plugins元素下配置assembly插件,請看注釋說明:

org.apache.maven.plugins

maven-assembly-plugin

2.2.1

make-wrapper-win-zip

package

single

jsw-test

true

${project.build.directory}

src/main/assembly/wrapper-win-zip.xml

復(fù)制代碼

assembly插件在pom.xml的配置比較簡單,回答幾個問題即可:

在什么時候打包:phase,

打包出來的名稱是什么:finalName

是否添加id到名稱后綴:appendAssemblyId

打包后輸出到哪里:outputDirectory

使用哪個描述符進(jìn)行打包操作:descriptor

3.3、描述符wrapper-win-zip.xml配置

前面講到要使用一個描述符進(jìn)行打包操作,即wrapper-win-zip.xml,此類文件可統(tǒng)一存放在目錄src/main/assembly中,以便統(tǒng)一管理。wrapper-win-zip.xml的格式如下所示:

wrapper-win

zip

false

false

/lib

${project.build.directory}/classes

/classes

install/wrapper/windows

/wrapper

復(fù)制代碼

詳細(xì)參考官網(wǎng)assembly的配置說明 說明一下,按上述的配置,使用maven命令進(jìn)行打包(mvn package),在target目錄會輸出的是一個jsw-test-wrapper-win包,當(dāng)前此包名稱不影響程序運(yùn)行,讀者可自行個性,包下面直接是三個文件夾(classes,lib,wrapper)。至此,即可以使用maven打出自定義的zip包。

4、jsw集成java后臺服務(wù)

jsw在不添加任何代碼的情況下可以直接使用,把java程序安裝為windows服務(wù),這樣就可以隨著系統(tǒng)的運(yùn)行而自動運(yùn)行。

4.1、jsw介紹與下載

到j(luò)ava service wrapper官網(wǎng)下載,它支持各種操作系統(tǒng),按系統(tǒng)下載即可,這里講解windows的,下載32位(64位的收費(fèi))。

下載解壓后,內(nèi)容如下:

bin:wrapper運(yùn)行文件及安裝腳本

conf:配置文件目錄

doc:說明文檔

lib:wrapper本身要用到的包和dll文件

logs:日志目錄

src:wrapper提供的模板文件(包括bin腳本和conf文件),用戶直接復(fù)制這里的再修改為自己的腳本即可。

4.2、添加jsw到j(luò)ava程序

java程序中添加jsw的步驟很簡單,主要以下兩步:

復(fù)制必要的wrapper文件到程序需要的目錄中;只有四個目錄是必要的:"bin","conf","lib","logs",如當(dāng)前示例中,在main目錄下新建wrapper目錄,復(fù)制上面wrapper的的"bin","conf","lib","logs"這四個文件夾到此目錄。去掉jsw的測試文件,最后結(jié)構(gòu)如下:

修改conf/wrapper.conf文件, 一般會把經(jīng)常修改的作為變量放在前面,以便后面配置使用,如當(dāng)前示例,會先設(shè)置以下變量

rem 程序目錄位置

set.APP_HOME=../..

rem java目錄位置

set.JAVA_HOME=E:/Program Files/Java/jdk1.8.0_51

rem 服務(wù)英文名稱

set.SERVICE_EN_NAME=jsw-test

rem 服務(wù)中文名稱

set.SERVICE_CH_NAME=jsw測試

rem 服務(wù)描述

set.SERVICE_DESCRIPTION=jsw測試

rem 你的Java應(yīng)用程序的運(yùn)行類(主類)

set.USER_MAIN_CLASS=service.FileLogger

然后主要設(shè)置以下配置(%var%為變量引用),其它配置按默認(rèn)即可。如有個性化需求,可看官方文檔

JVM位置: wrapper.java.command=%JAVA_HOME%/bin/java

你的Java應(yīng)用程序的運(yùn)行類(主類) wrapper.app.parameter.1=%USER_MAIN_CLASS%

你的Java程序所需的類路徑: wrapper.java.classpath.1=../lib/wrapper.jar wrapper.java.classpath.2=%APP_HOME%/classes wrapper.java.classpath.3=%APP_HOME%/lib/*

你的Wrapper.DLL或wrapper.jar所在的目錄 wrapper.java.library.path.1=../lib

注冊為服務(wù)的名稱和顯示名,你可以隨意進(jìn)行設(shè)置 wrapper.name=%SERVICE_EN_NAME% wrapper.displayname=%SERVICE_CH_NAME% wrapper.description=%SERVICE_DESCRIPTION%

日志文件位置 wrapper.logfile=../logs/wrapper.log

配置完之后,使用bin下的腳本可進(jìn)行相應(yīng)的安裝,卸載操作。

4.3、安裝與卸載

服務(wù)安裝 運(yùn)行InstallTestWrapper-NT.bat即可安裝,在日志輸出目錄可查看日志檢查是否正常啟動。安裝成功后可在控制面板-管理程序-服務(wù)中看到注冊的服務(wù)名稱(當(dāng)前示例是jsw測試),并可進(jìn)行啟動、關(guān)閉等操作。若啟動失敗,則需根據(jù)日志輸出檢查(一般是配置問題)。

服務(wù)卸載 運(yùn)行UninstallTestWrapper-NT.bat進(jìn)行卸載服務(wù)。

4.4、打包并測試

使用maven打包,mvn package,按前面的配置,即可輸出zip包,見前面的程序示例,把zip包放到服務(wù),解壓,即可使用wrapper安裝服務(wù)。

5、附件

源碼:jsw-test.zip ; 密碼:3hs5

總結(jié)

以上是生活随笔為你收集整理的java 压缩jar 仓库,java服务安装(一):使用java service wrapper及maven打zip包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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