Запуск Java-приложения как службы

#java #command-line #jboss

#java #командная строка #jboss

Вопрос:

У нас есть java-приложение, которое по сути является длительным процессом. Он развернут на JBoss 6.1. Мы должны запустить его, перейдя по URL http://ip.ip.ip.ip:8080/MyApp/Monitor

Есть ли способ запустить его как службу через cli с некоторой возможностью запуска / остановки / перезапуска по мере необходимости?

Ответ №1:

Если это единственное приложение, запущенное в экземпляре JBoss, вы можете настроить свой JBoss на автоматический запуск приложения при его запуске, а затем выполнить шаги в http://community.jboss.org/wiki/JBossSystemService чтобы запустить JBoss как службу.

Если у вас есть другие приложения на экземпляре JBoss или вы хотите запускать / останавливать только приложение, а не весь сервер, вы можете написать Java-приложение, которое подключается к вашему экземпляру JBoss удаленно с помощью расширений управления Java и использовать компоненты JMX, предоставляемые JBoss, для запуска / остановки вашего приложения. Подробнее об интерфейсе JBoss JMX можно найти в http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch2.chapter.html Я знаю, что это из JBoss 4, но я не думаю, что они отказались от поддержки JMX в более новых версиях.

Комментарии:

1. Как мне настроить экземпляр JBoss для запуска моего приложения при запуске JBoss? Извините, я новичок в Java. Просто нужно правильно развернуть это приложение.

2. Если вы используете конфигурацию сервера по умолчанию, JBoss должен автоматически развертывать все приложения в каталоге развертывания. Как можно добиться развертывания, можно найти здесь: community.jboss.org/wiki/JBossDeploy

3. Он его развертывает, но мне нужно перейти к URL-адресу, чтобы фактически запустить приложение.

4. Является ли ваше приложение веб-приложением? На данный момент я не могу найти источник, но я прочитал в документах JBoss, что он должен автоматически запускать развернутые веб-приложения. :/

Ответ №2:

Сделать это консольным приложением?

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

Ответ №3:

Запустите вызов вашего приложения непосредственно из консоли, используя 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
  

Ответ №4:

Вы можете превратить его в службу Windows / unix с помощью

оболочка службы Java

Ответ №5:

Я бы рекомендовал использовать Apache Commons Daemon (или, возможно, YAJSW) для создания собственного класса контроллера-оболочки. Пример этого показан здесь. Контроллер-оболочка расширяет класс Daemon Commons-Daemon и может быть запущен в командной строке в виде :

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

Вы также могли бы, конечно, расширить пример, чтобы иметь свой собственный объект SysTray. Вы также можете реализовать свой класс контроллера как сценарий Beanshell, чтобы для его запуска не требовался предварительно скомпилированный класс.