Запустите Java JAR-файл во время запуска в Linux - PullRequest
1 голос
/ 07 марта 2012

Ситуация:

У меня есть файл jar на серверном ПК (ПК выступает в роли сервера), a.jar , который будет выполнять бесконечный цикл для прослушивания TCPIP-соединения с клиентского ПК . Когда соединение установлено, клиентский ПК может отправить файл zip на серверный ПК , a.jar распакует его и выполнит скрипт с этим zip, который запустит другой полноэкранный java-файл, b.jar .

a.jar также будет пытаться запустить b.jar во время загрузки, если b.jar уже существует.


Подход 1:

Я написал скрипт в / etc / init.d / для запуска a.jar , так как это бесконечный цикл, система зависает навсегда во время загрузки ( в терминале экран, даже не могу войти в GUI ). Я должен загрузиться в однопользовательском режиме, чтобы удалить этот скрипт, чтобы нормально загрузиться.


Подход 2:

Когда я изменил скрипт для запуска a.jar в качестве демона, он работает нормально, прослушивает соединение, я могу подключиться к server pc и отправить zip-файл.

Проблема:

  1. b.jar не выполняется, даже если права на выполнение и все файлы установлены правильно.
  2. После того, как я отправил zip-файл, выполняется b.jar (, поскольку оно подключено к устройству и это устройство активировано ). Но полноэкранное отображение не отображается, как при запуске через терминал.

Причины этого

Это может показаться немного сложным, но из-за того, что b.jar будет постоянно обновляться и его нужно будет запускать автоматически после обновления, поэтому я использую a.jar для распаковки и выполните новую версию fo b.jar .

И b.jar требуется для запуска от имени пользователя root, так как он необходим для доступа к последовательному порту.

( Серверный компьютер должен быть автоматизирован, поэтому необходимо запускать b.jar во время запуска и дистанционно управлять )


Вопрос

Могу ли я знать, есть ли лучший способ сделать это? Или что я сделал не так? Может кто-нибудь показать мне лучший скрипт для запуска при запуске?

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Я думаю, что если вы хотите запустить приложение как демон, лучшим решением будет использование Apache Jsvc :

Jsvc - это набор библиотек и приложений для создания Java приложения работают в UNIX проще. Jsvc позволяет приложение (например, Tomcat) для выполнения некоторых привилегированных операций в качестве пользователя root (например, bind на порт <1024), а затем переключить личность непривилегированного пользователя. Он может работать на Win32 через слой эмуляции Cygwin, однако Win32 вместо этого пользователи могут предпочесть использовать procrun, что позволяет приложению работать как служба Windows. </p>

1 голос
/ 07 марта 2012

Подход 1 должен работать, но вы должны запустить java-процесс в фоновом режиме, добавив & к команде.

Но есть лучшие решения для запуска Java-приложений в качестве демона.Вышесказанное можно считать быстрым исправлением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...