将Java应用程序作为服务运行

时间:2011-09-28 12:41:17

标签: java command-line jboss

我们有一个java应用程序,它本质上是一个长期运行的过程。它部署在JBoss 6.1上。我们必须通过转到网址http://ip.ip.ip.ip:8080/MyApp/Monitor

来启动它

我们是否可以通过cli将其作为服务运行,并具备根据需要启动/停止/重启的能力?

5 个答案:

答案 0 :(得分:4)

如果它是JBoss实例上运行的唯一应用程序,您可以将JBoss配置为在启动时自动启动应用程序,然后按照http://community.jboss.org/wiki/JBossSystemService中的步骤运行JBoss作为服务。

如果您在JBoss实例上有其他应用程序,或者您只想启动/停止应用程序而不是整个服务器,您可以编写一个Java应用程序,使用Java Management Extensions远程连接到JBoss实例并使用JMX Bean由JBoss提供启动/停止您的应用程序。有关JBoss JMX接口的更多信息可以在http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch2.chapter.html中找到。我知道这是JBoss 4的,但我不认为他们在新版本中放弃了JMX支持。

答案 1 :(得分:0)

将其设为控制台应用程序?

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

答案 2 :(得分: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

答案 3 :(得分:0)

您可以使用

将其转换为windows / unix服务

java service wrapper

答案 4 :(得分:0)

我建议使用Apache Commons Daemon(或者可能是YAJSW)来创建自己的包装器控制器类。一个例子是shown here。包装器控制器扩展了Common-Daemon的Daemon类,它可以在命令行上运行:

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

当然,您也可以将示例扩展为拥有自己的SysTray对象。您还可以将控制器类实现为Beanshell脚本,以便它不必是要运行的预编译类。