Инструмент для создания службы демона Java в Linux [закрыт]

каков наилучший способ создания приложения java, которое можно запустить с помощью "службы" в Linux? Я собирался использовать доступный JSW здесь, но не может использовать лицензию на это (лицензия либо GPL, либо стоит денег, насколько я могу судить). Мне нужна Лицензия apache style.

Я использую Maven для сборки, поэтому было бы здорово, если бы можно было создать сервис с помощью Maven плагин, но любые другие предложения, было бы здорово.

Я видел Демон Apache Commons, есть ли плагин maven для этого? Документация кажется разреженной, поэтому рабочий пример этого был бы хорошим...

спасибо

3 ответов


службы в Linux - это просто сценарии оболочки, которые запускают фоновые процессы. Посмотрите в /etc/init.d - вы можете открывать файлы в текстовом редакторе. Все, что вам нужно, это скрипт bash, который отвечает на параметры start и stop соответствующим образом (например. start запустит вашу службу и запишет идентификатор процесса в известном месте,stop убьет процесс с помощью PID из созданного вами файла), а затем поместите его в /etc/init.d.

посмотреть Init Скрипты и введение в службы, уровни выполнения и rc.D скрипты


насколько я знаю, нет плагина Maven для демона Apache или Акумы. Хотя вы можете попытаться вызвать их из сборки Maven, используя maven-exec-plugin.


что касается оговорок ваших компаний об использовании продуктов, лицензированных GPL, стоит прочитать о последствиях использования. Она не так опасна, как опасаются корпорации. Вот это интерпретация GPL. Он конечно не несет вес в законе (и не может быть правильным или поддержанным прецедентом, я не адвокат), но может быть достаточным, чтобы позволить вам начать разговор с вашими юридическими людьми.

со ссылочной страницы:

простое объединение защищенной авторским правом работы с другой работой не создает производную работу. Оригинал авторской работы должны быть изменены в некотором роде. Полученное производное произведение должно само " представлять собой оригинальное произведение авторства."Итак, если лицензиат не изменяет оригинальную лицензионную программу GPL, а просто запускает ее, не создавая производную работу.


есть appassembler Maven плагин что я думаю, делает то, что вам нужно (хотя он создает обертки JSW). Он создает сценарий оболочки (и файл bat) и собирает все банки приложений в каталог. Это может быть дополнительно настроить для создания конфигураций демонов на основе JSW.

вот пример конфигурация, которая будет генерировать автономное приложение в папке target/appassembler и генерировать файлы оболочки JSW в каталоге target/appassembler/jsw/myApp. Обратите внимание на сборку цель привязана к интеграции-тест, созданный этап, чтобы обеспечить банку проекта. Для генерации выходного прогона mvn проверить или просто генерировать обертки службы run mvn пакет:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
      <execution>
        <id>assemble-standalone</id>
        <phase>integration-test</phase>
        <goals>
          <goal>assemble</goal>
        </goals>
        <configuration>
          <programs>
            <program>
              <mainClass>name.seller.rich.MyMainClass</mainClass>
              <name>myShellScript</name>
            </program>
          </programs>
          <platforms>
            <platform>windows</platform>
            <platform>unix</platform>
          </platforms>
          <!--collect all jars into the lib directory-->
          <repositoryLayout>flat</repositoryLayout>
          <repositoryName>lib</repositoryName>
        </configuration>
      </execution>
      <execution>
        <id>generate-jsw-scripts</id>
        <phase>package</phase>
        <goals>
          <goal>generate-daemons</goal>
        </goals>
        <configuration>
          <!--declare the JSW config -->
          <daemons>
            <daemon>
              <id>myApp</id>
              <mainClass>name.seller.rich.MyMainClass</mainClass>
              <commandLineArguments>
                <commandLineArgument>start</commandLineArgument>
              </commandLineArguments>
              <platforms>
                <platform>jsw</platform>
              </platforms>              
            </daemon>
          </daemons>
          <target>${project.build.directory}/appassembler</target>
        </configuration>
      </execution>
    </executions>
  </plugin>

Для справки сгенерированные файлы следует:

myApp\bin\myApp
myApp\bin\myApp.bat
myApp\bin\wrapper-linux-x86-32
myApp\bin\wrapper-macosx-universal-32
myApp\bin\wrapper-solaris-x86-32
myApp\bin\wrapper-windows-x86-32.exe
myApp\conf\wrapper.conf
myApp\lib\libwrapper-linux-x86-32.so
myApp\lib\libwrapper-macosx-universal-32.jnilib
myApp\lib\libwrapper-solaris-x86-32.so
myApp\lib\wrapper-windows-x86-32.dll
myApp\lib\wrapper.jar

вы можете посмотреть следующие проекты.