我想创建一个运行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();
}
}
答案 0 :(得分:1)
除非您的应用程序实现与Windows Service Control Manager (SCM)交互所需的接口,否则您将无法启动,停止或操纵您的应用程序作为服务。您唯一的选择是使用服务包装器,如NSSM,JSW,甚至是Microsoft的旧功能Srvany utility。