我想创建一个运行我的 Java 应用程序的 Windows 服务。
这通过使用没问题
sc.exe create myService binPath= "java -jar C:\to\my\service.jar"
当我尝试启动我创建的服务时,我得到了这个响应:
Error 1053: The service did not respond to the start or control request in a timely fashion
不幸的是,我的程序似乎没有响应它正在运行的 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();
}
}
最佳答案
除非您的应用程序实现了与 Windows Service Control Manager (SCM) 交互所需的接口(interface),您将无法启动、停止或操作您的应用程序即服务。您唯一的选择是使用服务包装器,例如 NSSM、JSW 或什至是 Microsoft 的旧产品但仍然可用 Srvany utility .
关于java - 创建 Java 应用程序以作为 Windows 服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058215/