2011-04-22 99 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