2011-09-28 73 views
2

我們有一個基本上是長時間運行的java程序。它部署在JBoss 6.1上。我們必須通過訪問網址http://ip.ip.ip.ip:8080/MyApp/Monitor將Java應用程序作爲服務運行

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

回答

4

如果是JBoss的實例中運行的唯一應用,你可以配置你的JBoss在啓動時自動啓動,你的應用程序,然後按照http://community.jboss.org/wiki/JBossSystemService步驟運行JBoss作爲一項服務。

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

+0

如何在JBoss啓動時配置JBoss實例來啓動我的應用程序?對不起,我是Java新手。只需要讓這個應用程序正確部署。 – HyderA

+0

如果您使用默認的服務器配置,JBoss應該自動部署deploy目錄中的所有應用程序。如何實現部署可以在這裏找到:http://community.jboss.org/wiki/JBossDeploy – Gandalf

+0

它部署它,但我必須導航到一個URL來實際運行應用程序。 – HyderA

0

使它成爲控制檯應用程序?

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

使用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 
0

我會建議使用Apache的百科全書守護進程(或者YAJSW)來創建自己的包裝控制器類把它轉化爲在Windows/Unix的服務。一個例子是shown here。該包裝控制器擴展了監控程序類下議院守護程序和它可能的形式在命令行上運行:

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

你也當然,擴展示例有自己的系統托盤的對象。您也可以將您的控制器類實現爲Beanshell腳本,以便它不需要是預編譯的類即可運行。

相關問題