java项目打包windows服务
java项目打包为windows服务
在部署项目的时候,如果不对我们的项目进行服务化的话,一方面发布的时候极其的繁琐,另一方方面也会使访问速度变慢。
下面这两种方式是最好用的两种方式
NSSM
nssm是一个服务封装程序,可以把可执行文件封装为windows服务,其对比其他方案的优点有:
-
可以输出日志文件,把控制台当成一个简单的日志系统 随时修改服务属性 无需其他额外环境 不需要.net等其他环境的支持
使用
- 下载 这是一个官方的,下载最新的版本就行
- 解压后把nssm.exe复制出来,建议放到与jar包同级目录下(下文默认放在了一起)
- 编写执行脚本,这里有两种方式 如果你配置了java环境变量,直接把你要执行的脚本写成一个批处理脚本.bat 然后在当前目录下使用管理员权限执行nssm install path就直接选你的批次处理脚本,service name就是你服务的名称,startup dict 就写你的java包所在的目录 如果你没有配置java环境变量 path就指向你的java地址,startup dict 就写你的java包所在的目录, argument就是后面的参数,service name就是你服务的名称
- 设置日志输出目录 nssm提供了控制台日志的输出与错误日志的输出
- 设置日志回滚策略
- 设置描述
- 设置环境变量
- 启动服务 点击install service 安装服务,在当前目录用管理员权限打开命令行执行nssm start 服务名 这时候就完成了对jar包封装服务的全过程,下面是一些不常用的进阶内容
其他进阶内容
-
停止 编辑 删除服务 nssm stop 服务名 nssm edit 服务名 nssm remove 服务名 使用nssm set 使用nssm 的set 可以直接使用批处理文件来生成一个服务,具体代码如下 nssm install exam-api C:Program FilesJavajdk1.8.0_112injava.exe nssm set exam-api AppParameters -jar exam-api.jar --server.port=9090 nssm set exam-api AppDirectory D: est nssm set exam-api AppStdout D: estexam-api.log nssm set exam-api AppStderr D: esterror.log nssm start exam-api 直接编写一个批处理文件写入上述,用管理员运行就会生成一个服务,具体每个参数的含义可以参考上边图形化的参数
winsw
winsw是一款可将可执行程序安装成Windows Service的开源小工具,其唯一不足的就是需要电脑有.NET framework