创建Java应用程序以作为Windows服务运行

时间:2016-12-09 10:26:31

标签: java service windows-services

我想创建一个运行Java-Application的Windows服务。

使用

这没问题
sc.exe create myService binPath= "java -jar C:\to\my\service.jar"

当我尝试启动我创建的服务时,我得到了这个回复:

  

错误1053:服务未响应启动或控制   及时提出要求

不幸的是,我的程序似乎没有响应它正在运行的Windows服务。

如何与我的程序运行的Windows服务进行通信?

我尝试了NSSM,效果很好。但我不想使用其他第三方应用。 当我搜索答案时,我总会看到大多数人使用Java Service Wrapper

如何构建我的Java代码以接受来自Windows服务的消息?

这是我想要作为服务运行的时间打印程序的简单示例。我该怎么办?

package tst;

import java.util.Date;

public class Tester
{

    public static void main(String[] args)
    {
        Thread thread = new Thread()
        {

            public void run()
            {
                long start = System.currentTimeMillis();
                long end = start + 20 * 1000;

                while (System.currentTimeMillis() < end)
                {
                    Date date = new Date();
                    System.out.println("Time: " + date.toString());

                    try
                    {
                        Thread.sleep(5000);
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                }

            }
        };
        thread.start();
    }
}

1 个答案:

答案 0 :(得分:1)

除非您的应用程序实现与Windows Service Control Manager (SCM)交互所需的接口,否则您将无法启动,停止或操纵您的应用程序作为服务。您唯一的选择是使用服务包装器,如NSSM,JSW,甚至是Microsoft的旧功能Srvany utility