在java中,有没有办法检查Windows服务的状态?

时间:2008-09-24 13:57:53

标签: java windows-services system-monitoring system-status

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

  

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

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

答案 2 :(得分:0)

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

NET START servicename

将启动该服务,或者返回一条错误消息,告知您已经启动该服务。我不知道任何只会给你状态的命令。