Java魔法堂:以Windows服務的形式運行Java程序


一、前言                            

  由於防止維護人員誤操作關閉Java控制台程序,因此決定將其改造為以Windows服務的形式運行。弄了一個上午總算搞定了,下面記錄下來,以供日后查閱。

 

二、Java Service Wrapper                  

  官網地址:http://wrapper.tanukisoftware.com/doc/english/download.jsp

  JavaServiceWrapper以守護進程或windows服務的方式運行java程序。JSW提供四種方案改造原有項目,以實現守護進程或windows服務的方式運行。而且還提供JVM監控功能和自動重啟功能,反正十分強大的樣子。

  方式1:WrapperSimpleApp

  用於通過同一個類實現啟動和關閉的程序。
  官方推薦使用該方式加工原有項目,好處是簡單,且不用修改原有項目的代碼。

  步驟1:下載並解壓得到工具包,目錄結構如下    

    /
    |-- bin,wrapper控制windows服務的bat文件
    |-- conf,wrapper配置文件
    |-- doc,教程
    |-- lib,wrapper的依賴包
    |-- logs,日志
    |-- src,模板
      |-- conf
      |-- bin

      步驟2:搭建項目結構:新建項目發布目錄(假設為agent),然后將src下的conf和bin復制到agent下,並且將conf和bin下的文件重命名,去掉`.in`后綴。然后將bin/wrapper.exe復制到agent/bin/下,再將lib復制到agent下,得到目錄結構如下

    agent
     |-- lib
         |-- wrapper.dll
       |-- wrapper.jar
       |-- conf
         |-- wrapper.conf
       |-- bin
       |-- wrapper.exe
       |-- 一堆bat文件
     最后將原有項目的文件復制到bin目錄下。

      步驟3:配置agent/conf/wrapper.conf的參數

# 配置java命令路徑
wrapper.java.command=jre/bin/java

# 配置CLASSPATH路徑(並不會修改全局的環境變量)
# 若原有項目還依賴其他jar包,均需要添加進來
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=.

# 配置lib路徑
wrapper.java.library.path.1=../lib

# 配置服務的main class(就是原有項目的程序入口類)
wrapper.app.parameter.1=agent.Daemon

# 配置wrapper日志文件
wrapper.logfile=logs/Agent.log

# 配置系統服務名稱
wrapper.ntservice.name=AgentService

# 配置系統服務顯示的名稱
wrapper.ntservice.displayname=AgentService

# 配置系統服務描述
wrapper.ntservice.description=AgentService

# 配置系統服務的啟動方式,取值范圍是AUTO_START或DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# 配置內存溢出則重啟服務
wrapper.filter.trigger.1001=Exception in thread "*" java.lang.OutOfMemoryError
wrapper.filter.allow_wildcards.1001=TRUE
wrapper.filter.action.1001=RESTART
wrapper.filter.message.1001=The JVM has run out of memory.

      步驟4:安裝、卸載服務

           點擊對應的Install.bat和Uninstall.bat即可。

  2. 方式2:WrapperStartStopApp

  用於像tomcat那樣,啟動程序和關閉程序是分開的項目。該方式同樣不用修改原來項目的代碼。

  3. 方式3:WrapperListener

  該方式需要修改原來項目的代碼,但最靈活。

  4. 方式4:WrapperJarApp

  用於原有項目已經打包為jar或war包的情況,配置方式與`WrapperSimpleApp`相似,但`wrapper.app.parameter.1=jar或war包路徑`。該方式同樣不用修改原來項目的代碼

 

三、總結                                

    官方文檔以JBOSS為例子說明WrapperSimpleApp的使用,十分不好懂,幸好有前人記錄實操過程我才從苦海得救,感謝感謝。

    尊重原創,轉載請注明來自:http://www.cnblogs.com/fsjohnhuang/p/4019267.html  ^_^肥仔John

 

四、參考                                

http://blog.csdn.net/arjick/article/details/4526392


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM