https://blog.csdn.net/masson32/article/details/51802732
使用java开发程序,在windows平台下,一般有web应用,后台服务应用,桌面应用:
- web应用多数打成war包在web容器(如tomcat,jetty等)中运行
- 桌面应用一般打成jar包或exe文件运行
- 后台服务应用一般打成jar包,然后使用命令行(如java -jar xxx.jar)运行
前面两种运行方式在本文不作讨论,主要描述java开发的后台服务程序(如定时任务程序,文件处理,数据备份等)。
1、为什么要用服务形式运行
若使用命令行方式运行java程序,把命令写成脚本(如bat脚本)运行即可,但命令行方式有其不方便之处,如命令行窗口不能关闭,关闭即停止,因此维护人员容易误操作(关闭窗口使程序停止);若服务器宕机或其它原因,程序往往无法在服务器重启时自动启动。在windows下,很多程序都是以服务的形式运行,这也符合windows的管理。因此,建议使用服务形式运行,操作方便。
2、如何让java程序以服务形式运行
有几种方法可以让java程序以服务形式运行:
- Java Service Wrapper目前业界最知名、最成熟的解决方案,添加任何额外的代码即可使用,不足之处是收费、64位版本需要购买Licence,不过在64位使用32位的也关系不大(除非你的程序需要很大的运算量)。
- Yet Another Java Service Wrapper类似JSW的开源实现版本,不过官方支持不怎么好。
- Apache Commons Daemon著名的Apache Commons工具包的成员,按规则添加启动程序,再编写脚本实现。
- 其它的(如WinRun4J,Launch4j)未使用过,更多可参考java开源打包工具
本文主要讲解使用java service wrapper把java程序作为windows的服务运行,它不需要添加任何代码,配置即可。
3、打包需求
java程序打包一般打成jar包,如果是供其它调用打包成一个jar包上传到仓库,其它人可以引用,这种方式可行,如果它是独立的程序,有其它的额外文件(如配置文件,本文中说的wrapper文件),打成jar包就比较难处理了,因此,更多的情况是把程序把成zip包以便传输,并规定好程序包目录结构,打包时打成一个zip包,解压即用。如下是我经常用到的一种包结构: