2011-04-22 103 views
3

我一直在閱讀文檔,但無法啓動和停止服務。如何使用winrun4j創建Windows服務

我的.ini文件是:

main.class=test.TestService 
service.class=test.TestService 
service.id=StreamServer 
service.name=StreamServer 
service.description=Servidor que proporciona una comunicación con streams. 
service.controls=stop 
classpath.1=*.jar 

的TestService的類是:

package test; 

public class TestService{ 
    private static TestServer server; 

    public static void main (String[] args){ 
     if (args.length == 1){ 
      if (args[0].equals ("start")){ 
       if (server == null){ 
        server = new TestServer (5000); 
        server.start(); 
       } 
      }else if (args[0].equals ("stop")){ 
       if (server != null){ 
        server.stop(); 
        server = null; 
       } 
      } 
     } 
    } 
} 

我要修改這個類,但我不知道怎麼辦。

謝謝。

+1

你在閱讀什麼文件?您不能直接在Java中創建本機Windows服務。檢查[這個討論](http://stackoverflow.com/questions/68113/how-to-create-a-windows-service-from-java-app)的一些解決方案。 – jdigital 2011-04-22 20:16:58

+1

標題說winrun4j。 http://winrun4j.sourceforge.net/ – 2011-04-22 20:46:20

回答

5

看看樣品服務從winrun4j網站的頭版:當你的服務啓動

package org.boris.winrun4j.test; 

import org.boris.winrun4j.AbstractService; 
import org.boris.winrun4j.EventLog; 
import org.boris.winrun4j.ServiceException; 

/** 
* A basic service. 
*/ 
public class ServiceTest extends AbstractService 
{ 
    public int serviceMain(String[] args) throws ServiceException { 
     int count = 0; 
     while (!shutdown) { 
      try { 
       Thread.sleep(6000); 
      } catch (InterruptedException e) { 
      } 

      if (++count % 10 == 0) 
       EventLog.report("WinRun4J Test Service", EventLog.INFORMATION, "Ping"); 
     } 

     return 0; 
    } 
} 

的的ServiceMain方法被調用。在服務準備關閉之前,您不應該從此方法返回。同時檢查「關機」標誌 - 當您在服務控制面板上單擊「停止」時(或者需要停止服務時),該標誌將被設置爲true。

+0

謝謝。我認爲還有其他方法可以做到這一點,而不是通過投票。 – 2011-04-23 07:24:56

+0

這不是投票。你的服務必須繼續運行,做一些事情......例如等待輸入到套接字上。 – 2011-05-02 03:29:52