我们有一个java应用程序,它本质上是一个长期运行的过程。它部署在JBoss 6.1上。我们必须通过转到网址http://ip.ip.ip.ip:8080/MyApp/Monitor
我们是否可以通过cli将其作为服务运行,并具备根据需要启动/停止/重启的能力?
答案 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服务答案 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脚本,以便它不必是要运行的预编译类。