簡體   English   中英

將Java應用程序作為服務運行

[英]Running Java application as a service

我們有一個Java應用程序,它實際上是一個長期運行的過程。 它已部署在JBoss 6.1上。 我們必須通過轉到URL http://ip.ip.ip.ip:8080/MyApp/Monitor來啟動它

有沒有一種方法可以通過cli將它作為服務運行,並具有根據需要啟動/停止/重新啟動的功能?

如果它是在JBoss實例上運行的唯一應用程序,則可以將JBoss配置為在啟動時自動啟動應用程序,然后按照http://community.jboss.org/wiki/JBossSystemService中的步驟運行JBoss即服務。

如果您在JBoss實例上有其他應用程序,或者只想啟動/停止該應用程序而不是整個服務器,則可以編寫一個Java應用程序,該Java應用程序使用Java Management Extensions遠程連接到您的JBoss實例,並使用JBoss提供的JMX Bean。啟動/停止您的應用程序。 有關JBoss JMX接口的更多信息,請參見http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch2.chapter.html。我知道這是JBoss 4的,但我不認為他們放棄了JBoss 4的支持。較新的版本。

使其成為控制台應用程序嗎?

public static void main(String [] args)
{
    doStuffThatMyAppMonitorNormallyDoes();
}

使用java命令直接從控制台向應用程序調用。

范例

public class MonitorService{

 ..

 public static void main(String[] args) {
  if(args[0].equalsIgnoreCase("-start")
  {
    //Do start routine
  }
  else if(args[0].equalsIgnoreCase("-stop")
  {
    //Do stop routine
  }
 }

 ...

}

如下運行程序。

Java MonitorService -start

您可以使用以下方法將其轉換為Windows / unix服務

Java服務包裝器

我建議使用Apache Commons Daemon(或也許是YAJSW)來創建自己的包裝控制器類。 這里顯示了一個示例。 包裝器控制器擴展了Commons-Daemon的Daemon類,可以在命令行上以以下形式運行:

java -cp . WrapperController.class -windowsStop
java -cp . WrapperController.class -windowsStart
java -cp . WrapperController.class -verify

當然,您也可以將示例擴展為具有自己的SysTray對象。 您還可以將您的控制器類實現為Beanshell腳本,這樣它就不必是預編譯的類即可運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM