我正在尋找一個庫,可以查看Windows服務的狀態以驗證服務是否已啓動並正在運行。我查看了Sigar庫,但它是GPL,因此我無法使用它。商業或BSD(ISH)許可證是必需的,因爲這將被捆綁到商業軟件中。在java中,有沒有辦法檢查Windows服務的狀態?
5
A
回答
4
如果沒有別的幫助,儘量想稍微不同的方式(如果可以的話,當然),例如:
- 有足夠的空閒/非自由軟件,它確實監測,包括Windows服務監控(例如,Nagios,Zabbix等)。這些監視器通常具有開放的API,您的Java應用程序可以以多種不同的方式集成到這些API中。
- 如果您可以控制依賴服務應用程序,請爲您的Java應用程序公開另一種不同的方式來檢查(例如,在端口上運行僞偵聽器,創建文件等)。 Windows服務不是一個跨平臺的東西,因此您不希望在短時間內得到支持。
0
我不知道任何庫,但取決於你需要得到多少詳細信息才能使用某些shell命令並解析輸出。
NET START 服務名
要麼啓動該服務,或給你回,告訴你它已經啓動的錯誤消息。我不知道任何能夠給你身份的命令。
3
我不認爲有任何純粹的Java方式來做到這一點,因爲一些操作系統沒有Windows那樣的「服務」概念。在我們的項目中,我們編寫了一個從命令行調用「sc」命令的包裝器。爲了得到一個服務的狀態,你可以這樣做:
SC \\一些計算機查詢「我的服務名」
你必須手動解析輸出,但它是非常簡單的。
0
我認爲這是檢查服務狀態的最好方法。
import java.util.*;
import java.sql.*;
import java.io.*;
import java.text.*;
public class doscmd
{
public static void main(String args[])
{
try
{
Process p=Runtime.getRuntime().exec("sc query browser"); //sc query is commond and browser is the name of service
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
if(line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("1"))
System.out.println("Stopped");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("2"))
System.out.println("Startting....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("3"))
System.out.println("Stopping....");
else
if (line.trim().substring(line.trim().indexOf(":")+1,line.trim().indexOf(":")+4).trim().equals("4"))
System.out.println("Running");
}
line=reader.readLine();
}
}
catch(IOException e1) { }
}
}
相關問題
- 1. 有沒有辦法在Windows Phone 7上編程檢查飛行模式狀態?
- 2. 有沒有辦法檢查靜音狀態?
- 3. 有沒有辦法檢查活動是onStop狀態還是onPause狀態?
- 4. C#檢查Windows服務狀態
- 5. NSIS檢查Windows服務狀態
- 6. 使用PowerShell檢查Windows服務狀態
- 7. 有沒有辦法檢查MS安全中心的病毒防護狀態?
- 8. 有沒有辦法在eloqua中動態檢查日期?
- 9. 有沒有辦法使用Java中的「文檔服務」?
- 10. 有沒有辦法檢查java中的變量標籤?
- 11. Swift 2.3:有沒有辦法找出位置服務,位置更新的狀態?
- 12. 檢查服務器狀態?
- 13. 有沒有辦法在Perl中檢查Windows中的管理員權限?
- 14. 有沒有辦法通過服務
- 15. 有沒有辦法在狀態欄(OSX)中編程定位狀態欄項目?
- 16. 有沒有辦法檢查request.user ManyToManyField
- 17. 有沒有辦法檢查空目錄?
- 18. 有沒有辦法檢查截斷表?
- 19. 有沒有辦法動態檢查類型的instanceof?
- 20. 有沒有辦法將HashiCorp Vault作爲Windows服務運行?
- 21. 有沒有辦法從Windows服務器生成Realm.io數據庫?
- 22. 有沒有辦法在ASP.NET中的web服務中使用System.Drawing?
- 23. 有沒有辦法檢查事務授予的鎖
- 24. ASP.NET有沒有辦法將應用程序狀態保存爲不同服務器上的會話狀態?
- 25. 有沒有辦法在windows/linux中用c檢查失敗的內存?
- 26. 有沒有辦法在java中查詢windows系統的特定程序窗口?
- 27. 有沒有辦法使用javascript檢測win服務包?
- 28. 有沒有辦法在Windows Mobile中安排任務?
- 29. 有沒有辦法在Qt中檢查重複的連接?
- 30. 有沒有辦法在javascript中檢測查看器的主頁?
在Java中這樣做的簡單方法 – 2010-03-25 17:50:02