18

Linuxで「サービス」を使用して実行できるJavaアプリケーションを作成する最良の方法は何ですか? ここで入手可能な JSW を使用するつもりでしたが、そのライセンスを使用することはできません (ライセンスは GPL であるか、私が知る限り、お金がかかります)。Apache スタイルのライセンスが必要です。

私はビルドにmavenを使用しているので、mavenプラグインを使用してサービスを作成できれば素晴らしいと思いますが、他の提案は素晴らしいでしょう.

私はApache Commons Daemonを見てきましたが、このための maven プラグインはありますか? ドキュメントはまばらに見えるので、これの実例は良いでしょう...

ありがとう

4

3 に答える 3

20

Linux のサービスは、バックグラウンド プロセスを開始する単なるシェル スクリプトです。/etc/init.dファイルをテキスト エディタで開くことができます。必要なのは、パラメーターに適切な方法で応答する bash スクリプトだけですstart(stopたとえばstart、サービスを開始してプロセス ID を既知の場所に記録し、stop作成したファイルの PID でプロセスを強制終了します)。に置き/etc/init.dます。

Init ScriptsAn Introduction to services, runlevels, and rc.d scripts をご覧ください

于 2009-08-21T11:11:59.657 に答える
13

私の知る限り、Apache Daemon またはAkuma用の Maven プラグインはありません。ただし、 maven-exec-pluginを使用して Maven ビルド内からそれらを呼び出そうとすることはできます。


あなたの会社が GPL ライセンス製品の使用について留保している限り、使用の意味について読む価値があります。企業が恐れるほど毒性はありません。GPLの解釈は次のとおりです。もちろん、法律上は何の重みもありませんが (私は弁護士ではありませんので、正しくないか、判例によって裏付けられていない可能性があります)、法律関係者との会話を始めるには十分かもしれません。

参考ページより:

著作権で保護された作品を別の作品と単純に組み合わせるだけでは、派生作品は作成されません。元の著作物は何らかの方法で変更する必要があります。結果として得られる二次的著作物は、それ自体が「作者のオリジナル作品を表す」ものでなければなりません。したがって、ライセンシーが元の GPL ライセンス プログラムを変更せずに単に実行する場合、派生物を作成していません。


Appassemblyr Maven プラグインがあり、必要なことを実行すると思います (ただし、JSW ラッパーは作成されます)。シェル スクリプト (およびバッチ ファイル) を作成し、すべてのアプリケーション jar をディレクトリに収集します。オプションで、JSW ベースのデーモン構成を作成するように構成できます。

target/appassemblyr フォルダーにスタンドアロン アプリケーションを生成し、target/appassemblyr/jsw/myApp ディレクトリに JSW ラッパー ファイルを生成する構成の例を次に示します。プロジェクトの 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
于 2009-08-21T12:55:12.513 に答える
3

以下のプロジェクトをご覧いただけます。

于 2009-08-21T10:55:53.697 に答える