在Linux上创buildJava守护程序服务的工具

创build一个可以在Linux上使用'service'运行的java应用程序的最佳方式是什么? 我打算使用这里提供的JSW,但不能使用这个许可证(许可证是GPL,或者据我所知,这个许可证费用很高)。 我需要一个Apache样式的许可证。

我正在使用maven构build,所以如果可以使用maven插件创build服务,那将是非常好的,但是其他任何build议都会很棒。

我见过Apache Commons Daemon ,有没有一个Maven插件? 文档似乎很稀疏,所以这个例子很好用

谢谢

Linux上的服务只是启动后台进程的shell脚本。 看看/etc/init.d – 你可以在文本编辑器中打开文件。 所有你需要的是一个bash脚本,以适当的方式响应参数的startstop (例如, start将启动你的服务,并在已知的位置记录进程ID, stop将使用你创建的文件中的PID来stop进程),然后把它放在/etc/init.d

查看Init脚本和服务,runlevels和rc.d脚本的介绍

据我所知,Apache Daemon或者Akuma没有Maven插件。 尽管你可以尝试使用maven-exec-plugin从Maven构建中调用它们。


至于贵公司对使用GPL许可产品的保留意见,值得一读使用的含义。 它不像企业恐惧那样具有毒性。 这是对GPL的解释 。 当然,这在法律上并不重要(可能不是正确的或先例支持,我不是律师),但也许足以让你开始与你的法律人士的谈话。

从参考页面:

简单地将受版权保护的作品与其他作品相结合不会产生衍生作品。 原版作品必须以某种方式进行修改。 由此产生的衍生作品本身必须“代表作者的原创作品”。 因此,如果被许可人不修改原始的GPL许可程序,而只是运行它,他不会创建衍生作品。


有一个Appassembler的Maven插件 ,我认为你所需要的(尽管它创建JSW包装)。 它创建一个shell脚本(和一个bat文件),并将所有的应用程序jar收集到一个目录中。 可以选择将其配置为创建基于JSW的守护程序配置。

以下是一个配置示例,它将在target / appassembler文件夹中生成独立应用程序,并在target / appassembler / jsw / myApp目录中生成JSW封装文件。 注意汇编目标被绑定到集成测试阶段,以确保项目的jar被创建。 要生成输出运行mvn验证或只生成服务包装运行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 

你可以看看下面的项目。

  • 阿曲
  • Apache Deamon