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

Слишком много ненужного сахара просто добавляет чрезмерное увеличение размера к языкам. Я назвал бы имена, но затем я просто гореть.:) Кроме того, иногда язык использует синтаксический сахар вместо того, чтобы делать реальную реализацию. Например, существует язык, который должен остаться неназванным, чей "реализация дженериков" является просто тонким слоем синтаксического сахара.

18
задан vitaut 29 January 2012 в 18:59
поделиться

3 ответа

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

Посмотрите в Сценарии инициализации и Введение в службы, уровни выполнения и сценарии rc.d

20
ответ дан 30 November 2019 в 07:28
поделиться

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


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

упомянутая страница:

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


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

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

  <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
13
ответ дан 30 November 2019 в 07:28
поделиться

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

3
ответ дан 30 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: