最近在公司做一數據採集的java應用(非web項目),考慮到用戶操作的便捷性,沒有采用javac編譯java執行的方式運行,而是利用java service wrapper來將其封裝成windows服務。
另外,該java service wrapper封裝windows服務也適用於在web項目中,用戶使用tomcat或jboss應用服務器啓動後桌面出現黑色框框,這個黑色框框極易被用戶不小心關掉,引起不必要的麻煩。這個時候將應用封裝爲windows服務,可避免以上的問題。
下面將以非web項目爲例介紹封裝windows服務的過程。
一、下載
官方網址:http://wrapper.tanukisoftware.com/doc/english/download.jsp
大家可以根據自己的需求下載相應的版本,但需要注意的是Standard和Professional兩個版本是需要listence的,也就是需要錢的,否則每次啓動只能使用15分鐘將自動停止服務。
二、簡介
我這裏下載的是windows x86 32-bit Community版本,下載後的文件結構如下:
以下是官方給出的一些Wrapper的優點:
(1) 使用我們的產品無須在你的程序中添加任何額外的代碼。
(2) 當你的程序或JVM出現問題時會自動響應事先定製的策略。
(3) 當出現問題時會及時進行通知。
(4) 完善的日誌記錄功能可以更好爲您提供支持。
(5) 在不同的系統上你可以指定一個標準的流程相同流程,也就是說相同的程序可以不必修改即運行於不同系統。
(6) 可以將你的應用安裝成windows或unix的服務或守護進程。
三、封裝應用
參考地址:http://wrapper.tanukisoftware.com/doc/english/qna-service.html
以我的項目airport爲例說明,在F盤新建airport文件夾作爲應用的根目錄,在airport下面新建如下文件夾(airprot目錄以“%WRAPPER_HOME%”表示):
將下載的wrapper中的文件分別複製到到相應目錄下:
以上這些copy操作中間兩項不是必須的,根據需要操作,詳細信息參考上面的地址。
下面對%EXAMPLE_HOME%\conf\wrapper.conf配置文件進行修改:
這個截圖是官方給出的參考資料,其中wrapper.app.parameter.1指向程序的入口,即main方法所在類,wrapper.java.classpath.*依次指出程序所需的jar包,最後一個指向應用的class編譯文件目錄../lib/classes,我的具體配置文件可以在這裏下載http://download.csdn.net/detail/ningzuobei/9144371。
最終我的airport的結構如下:
以上方法是使用WrapperSimpleAPP集成實現的,還可以使用WrapperStartStopAPP集成實現。二者區別與聯繫:
第一種:方式簡單,而且java service wrapper極度推薦的一種方式。這種方式當wrapper停止的時候jvm中的線程不會清除,當然在wrapper通過system.exit(int)來推出jvm。但是如果應用程序有自己的鉤子函數來做清除的話,當wrapper停止的時候會給應用程序一個機會去清除jvm的線程佔用的資源,之後再退出jvm,如果沒有鉤子的話就相當於windows中的ctrl+c操作。
第二種:特別用於啓動時會開啓一個服務端socket等待連接,而關閉時則通過連接觸發應用的停止,就像TOMCAT這些應用服務器啓動和關閉的時候就適合這種集成方式。這種方式和上面的方式不同之處是在wrapper退出jvm的時候會清除。其具體配置是:具體配置查看wrapper官方網址。
四、部署測試
1、程序在console中運行測試:在cmd命令行窗口中進入%EXAMPLE_HOME%目錄下執行如下命令bin\wrapper.exe -c ..\conf\wrapper.conf,如果窗口中出現如下信息則說明運行成功,然後Ctrl+C即可停止運行。
2、以服務形式運行測試:如果以上運行有錯,則進行調試修改,如果無誤,則可以放心安裝服務。
安裝服務:同樣在cmd命令行窗口中進入%EXAMPLE_HOME%目錄下執行命令bin\wrapper.exe -i ..\conf\wrapper.conf,如果窗口中出現如下信息則說明安裝成功。然後在服務中即可查看到該服務如下圖所示:
啓動服務:在cmd命令行窗口中進入%EXAMPLE_HOME%目錄下執行命令bin\wrapper.exe -t ..\conf\wrapper.conf,如果窗口中出現如下信息則說明啓動成功。
停止服務:在cmd命令行窗口中進入%EXAMPLE_HOME%目錄下執行命令bin\wrapper.exe -p ..\conf\wrapper.conf即可停止服務。
刪除服務:在cmd命令行窗口中進入%EXAMPLE_HOME%目錄下執行命令bin\wrapper.exe -r ..\conf\wrapper.conf即可刪除服務。