使用Java Service Wrapper 把Java程式作為Windows系統服務

來源:互聯網
上載者:User

轉自:http://www.cjsdn.net/post/view?bid=21&id=95116&sty=1&tpg=3&age=0

Java程式很多情況下是作為服務程式啟動並執行,在Un*x平台下可以利用在命令後加“&”把程式作為後台服務運行,但在Windows下看作那個Console視窗在案頭上,你是否一直擔心別的同時把你的Console視窗關閉?是否懷念用VC寫的Win32服務程式?
翻開JBOSS、Tomcat的發布包,發現他們都使用了一個Open source——Java Service Wrapper。用Java Service Wrapper可以輕鬆解決我們的需求,讓我們的服務程式成為 Win32系統服務。
當然,在Un*x下也可以使用Java Service Wrapper,可以避免加“&”的粗暴方式,導致每天收到一堆mail,通過Java Service Wrapper提供的日誌方式查看運行資訊。
Java Service Wrapper功能很強大,同時支援Windows及Un*x平台,提供三種方式把你的Java程式封裝成系統服務,這裡只介紹最簡單的一種方式,因這種方式無需對已有的服務程式作任何改變,僅僅增加幾個script、設定檔就可以把你的Java服務程式改造成系統服務程式了。
當然在使用之前需要到http://sourceforge.net/project/showfiles.php?group_id=39428下載Java Service Wrapper的發布包。

下面簡單介紹一下具體的使用步驟:
1.  將下載的Java Service Wrapper包解壓到本地,目錄為{WRAPPER_HOME};
2.  服務應用程式名稱為MyServApp,在目錄d:\MyServApp下建立bin、conf、logs、lib目錄;並把你的已有應用程式如NioBlockingServer.class拷貝到該目錄下;
3.  將{WRAPPER_HOME}\src\bin\下的遺以下檔案拷貝到MyServApp目錄下,並重新命名。
{WRAPPER_HOME}\bin\Wrapper.exe C:\ MyServApp \bin\Wrapper.exe
{WRAPPER_HOME}\src\bin\App.bat.in C:\ MyServApp\bin\MyApp.bat
{WRAPPER_HOME}\src\bin\InstallApp-NT.bat.in C:\ MyServApp\bin\InstallMyApp-NT.bat
{WRAPPER_HOME}\src\bin\UninstallApp-NT.bat.in C:\ MyServApp\bin\UninstallMyApp-NT.bat
4.  將{WRAPPER_HOME}\lib下的以下檔案拷貝到C:\ MyServApp \lib目錄下
{WRAPPER_HOME}\lib\Wrapper.DLL
{WRAPPER_HOME}\lib\wrapper.jar
5.  將{WRAPPER_HOME}\src\conf\wrapper.conf.in拷貝到C:\ MyServApp \conf目錄下並命名為wrapper.conf;並修改wrapper.conf檔案,在其中配置您的應用服務。
主要修改以下幾項即可:
#你的JVM位置:
wrapper.java.command=D:\Sun\j2sdk1.4.0_03\bin\java
#運行參數:如:
wrapper.java.additional.1=-Dprogram.name=run.bat
#classpath:
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../bin/.
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib
#MAIN CLASS 此處決定了使用Java Service Wrapper的方式
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
#你的Java應用類
wrapper.app.parameter.1= NonBlockingServer
# 服務名
wrapper.ntservice.name=NB

# Display name of the service
wrapper.ntservice.displayname=Nio Nonblocking Server
# 服務描述
wrapper.ntservice.description=Nio Nonblocking Server
其他的配置根據你的需要改變即可
6.  對以上配置的MyApp.bat進行測試,運行MyApp.bat,就像在Console視窗下運行Tomcat一樣;
7.  對以上配置的服務進行測試,運行C:\ MyServApp\bin\InstallMyApp-NT.bat將把你的應用(此處為NioBlockingServer)安裝到Win32系統服務中了。
8.  開啟控制台-管理程式-服務,看到Nio Nonblocking Server已經在系統服務中了,其他用法就與我們熟悉的Windows服務一樣了。

Tomcat使用的是Java Service Wrapper模式二,這種方式需要對已有的程式進行小的改動,但可以通過Socket連接埠的方式控制服務程式核心的啟動,更加靈活。Java Service Wrapper提供的模式三比較複雜,需要作出更多的編碼,我沒有研究。
採用模式一,即可簡單有效把我們的服務程式封裝成為系統服務程式,並增強了日誌功能,我們可以把MyServApp的幾個檔案做成模板,每次修改檔案名稱,設定檔就可以了,有精力的朋友更可以做成Eclipse的plugin,滑鼠點點就把應用配成服務了。

附件是一個模板,可以直接修改檔案名稱和設定檔就可以把服務改造了。
希望本文能對大家有所協助,當然也申請加分了,我的2分實在不夠混的了。 

/Files/cai9911/NTServiceWrapperTemplate.rar

====================
自己做的一個例子,可以直接拿來修改:
(寫下來備忘)

主要修改config/wrapper.conf 一個地方:
wrapper.app.parameter.1= HelloWorld  <要啟動的類>

其他的可以修改應用程式的服務名稱等.

/Files/cai9911/JavaService.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.