利用JAVA Service Wrapper把JAVA程序作成windows服務

1、下面是整個程序的功能部分:java

public class TestService {
	private static Thread thread=null;  
    private static Service service = null;  
  
    
    /** 
    * 啓動服務方法(該方法必須有參數 String [] args) 
    * @param args 
    */  
    public static void main(String [] args)  
    {  
        System.out.println("啓動服務");  
        // 產生服務線程  
        service = new Service();  
        thread=new Thread(service);  
        try  
        {  
            // 將服務線程設定爲用戶線程,以免StartService方法結束後線程退出  
            thread.setDaemon(false);  
            if(!thread.isDaemon())  
            {  
                System.out.println("成功設定線程爲用戶線程!");  
            }  
  
            //啓動服務線程  
            thread.start();  
        }  
        catch(SecurityException se)  
        {  
            System.out.println("線程類型設定失敗!");  
        }  
    }
    
    /** 
     * 退出服務方法(該方法必須有參數 String [] args) 
     * @param args 
     */  
     public static void StopService(String[] args)  
     {  
         System.out.println("中止服務");  
         service.setRunFlag(false);  
     } 
}

public class Service implements Runnable {
	private boolean runFlag = true;  
	  
    /** 
    * 設定服務線程運行標誌值 
    * @param runFlag 
    */  
    public synchronized void setRunFlag(boolean runFlag)  
    {  
        this.runFlag = runFlag;  
    }  
  
    /** 
    * 取得服務線程運行標誌值 
    * @param void 
    */  
    private synchronized boolean getRunFlag()  
    {  
        return runFlag;  
    }  
  
    @Override  
    public void run()   
    {  
        System.out.println("服務線程開始運行");  
        while(getRunFlag())  
        {  
            Calendar cal = Calendar.getInstance();  
            long mis = cal.getTimeInMillis();  
            System.out.println("當前時間:" + mis);  
            try   
            {  
                Thread.sleep(1000*10);  
            }   
            catch (InterruptedException e)   
            {  
                e.printStackTrace();  
            }  
        }  
        System.out.println("服務線程結束運行");  
    }  
}

2、整個項目須要打包生成WPDAnalysis.jar,而後咱們就能夠作咱們的window服務了。sql

第一步在http://wrapper.tanukisoftware.com/doc/english/download.jsp下載咱們的java service wrapper工具,下載後解壓。工具分32位跟64位,看本身所需。app

第二步構建你的程序工做目錄,好比我構建D:\WPDAnalysis_64。而後在目錄下建造lib,logs,bin,conf等文件夾。其實目錄名字也能夠本身隨便定義,只要最後配置正確便可。同時把你的WPDAnalysis.jar也放在D:\WPDAnalysis_64下面。jsp

第三步把解壓後的文件夾中src\bin中的文件複製到新建的bin文件夾下面。並把全部文件的in後綴去掉。同時把解壓後文件夾中bin下的wrapper.exe也放到新建的bin下。ide

第四步把解壓後的文件夾中src\conf中的文件複製到新建的conf文件夾中(最好把conf下面)。把in後綴去掉。工具

第五步把解壓後的文件夾中lib中的wrapper.jar與wrapper.dll放大新建的lib下面。同時把WPDAnalysis程序所須要的第三方jar包夜放在這裏。我這裏使用sqljdbc4.jar。測試

第六步配置wrapper.conf文件,主要配置選項以下:this

#Java的位置  
wrapper.java.command=D:\Java\jdk1.6.0_31\bin\java  
#若是你係統已經配置了%JAVA_HOME%的環境變量,上面的就能夠不配置了。以下:  
#wrapper.java.command=%JAVA_HOME%/bin/java  
  
#classpath:  
wrapper.java.classpath.1=../WPDAnalysis.jar  
wrapper.java.classpath.2=../lib/wrapper.jar   
  
# Java Library Path (取決於Wrapper.DLL 或者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=wpdanalysis.WPDAnalysis  
  
#服務名稱  
wrapper.name=WPDAnalysis_64  
#服務部署名稱,會顯示到window服務中的名稱欄  
wrapper.displayname=Analysis WPD Data Into DataBase For X64  
#服務的描述  
wrapper.description=Analysis WPD Data Into DataBase For X64

配置之後,點擊bin文件夾下面的App.bat進行測試,若是可以在console中出現正常結果的話就代表配置正確。而後點擊InstallApp-NT.bat安裝服務,也能夠點擊UninstallApp-NT.bat卸載服務。成功安裝服務後能夠在window服務管理中看到哦。spa


以上就是java程序作成服務的步驟。線程

相關文章
相關標籤/搜索