6

我正在寻找一个库,它允许我查找 Windows 服务的状态以验证该服务是否已启动并正在运行。我查看了 Sigar 库,但它是 GPL,因此我无法使用它。需要商业或 BSD(ish) 许可证,因为这将捆绑到商业软件中。

4

3 回答 3

5

如果没有其他帮助,请尝试考虑一种稍微不同的方法(当然,如果可以的话),例如:

  • 有很多免费/非免费软件可以进行监控,包括 Windows 服务监控(例如 nagios、Zabbix 等)。这些监视器通常具有开放的 API,您的 Java 应用程序可以通过多种不同的方式集成到其中。
  • 如果您可以控制依赖的服务应用程序,请公开另一种不同的 Java 应用程序检查方式(例如,在端口上运行虚拟侦听器、创建文件等)。Windows 服务不是一个跨平台的东西,因此你不会期望很快就会得到支持。
于 2008-09-24T15:15:09.293 回答
4

我认为没有任何纯 Java 方法可以做到这一点,因为某些操作系统没有 Windows 那样的“服务”概念。在我们的项目中,我们为从命令行调用“sc”命令编写了一个包装器。要获取服务的状态,您可以执行以下操作:

sc \\some-computer 查询“我的服务名称”

您必须手动解析输出,但这非常简单。

于 2008-09-24T14:12:30.037 回答
0

我不知道任何库,但根据您需要了解的详细程度,您可能会使用一些 shell 命令并解析输出。

NET START服务名称

将启动该服务,或者给您返回一条错误消息,告诉您它已经启动。不过,我不知道有任何命令可以为您提供状态。

于 2008-09-24T14:03:24.643 回答