创build一个可以在Linux上使用'service'运行的java应用程序的最佳方式是什么? 我打算使用这里提供的JSW,但不能使用这个许可证(许可证是GPL,或者据我所知,这个许可证费用很高)。 我需要一个Apache样式的许可证。
我正在使用maven构build,所以如果可以使用maven插件创build服务,那将是非常好的,但是其他任何build议都会很棒。
我见过Apache Commons Daemon ,有没有一个Maven插件? 文档似乎很稀疏,所以这个例子很好用
谢谢
守护进程不会杀死正在读取命名pipe道的孩子
在Linux上通过C ++代码启动/停止守护进程
将标准输出redirect到syslog
Linux / Bash文件描述符在执行守护进程时
nginx + uwsgi + debian +守护进程
重新查找丢失进程的X服务器视图
在perl中收到任何信号时睡眠是否会中断?
如何使用Jsvc作为守护进程启动Java程序
使用gdbdebugging正在运行的守护进程
如何控制后台进程/守护进程
Linux上的服务只是启动后台进程的shell脚本。 看看/etc/init.d – 你可以在文本编辑器中打开文件。 所有你需要的是一个bash脚本,以适当的方式响应参数的start和stop (例如, 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>
生成的文件如下所示:
myAppbinmyApp myAppbinmyApp.bat myAppbinwrapper-linux-x86-32 myAppbinwrapper-macosx-universal-32 myAppbinwrapper-solaris-x86-32 myAppbinwrapper-windows-x86-32.exe myAppconfwrapper.conf myAppliblibwrapper-linux-x86-32.so myAppliblibwrapper-macosx-universal-32.jnilib myAppliblibwrapper-solaris-x86-32.so myApplibwrapper-windows-x86-32.dll myApplibwrapper.jar
你可以看看下面的项目。
阿曲
Apache Deamon
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。