美文网首页JavaJava学习笔记
winsw:“let everything to be a se

winsw:“let everything to be a se

作者: bugWriter_y | 来源:发表于2019-06-01 10:03 被阅读20次

winsw,一个能将windows上运行的程序转换成系统服务的工具。

我们都知道spring boot程序能自启动,打好包后直接运行java命令就能启动项目,不需要依赖tomcat等web容器。如果是linux系统还好说,linux能在后台运行命令。但是windows就不是很方便了,命令执行完毕后总有一个黑窗口是不能关闭的。

今天我们就利用winsw来让spring boot程序部署在windows系统上,并且实现自启动。

工具

1. spring boot项目
2. winsw

第一步准备spring boot项目

这里我们写一个简单的小项目,就叫demo吧。如果已经有spring boot项目了略过。

1. application.yaml
app:
  name: demo1
2. Application.java
@SpringBootApplication
@RestController
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    @Value("${app.name}")//读取配置文件里的app.demo变量,值为demo1
    private String name;
    @GetMapping({"","/","index"})//浏览器访问localhost:8080后页面输出demo1
    public String index(){
        return name;
    }
}
3. 打包

使用maven命令打包后会在项目的target目录下生成demo-0.0.1-SNAPSHOT.jar

4. 部署

将打好的jar包复制到一个目录下,例如d:\projects\demo。

5. 运行命令启动项目
java -jar demo-0.0.1-SNAPSHOT.jar
6. 浏览器打开访问localhost:8080
  1. 能访问
  2. 页面输出demo1
7. 修改配置,重启项目

普通的spring项目最后打包的是一个war包,部署到tomcat后会自动解压,我们可以更改解压后的配置文件。

但是spring boot是直接运行的jar包,并不会有解压的操作。想要在启动的时候修改配置文件,这里提供两种方法。

  • (简单)启动命令增加参数

java -jar demo-0.0.1-SNAPSHOT.jar --app.name=demo2

  • 推荐)增加外部配置文件目录

增加config目录,将application.yaml复制到config下。spring boot启动会读取config目录下的配置文件并覆盖掉jar包里面的配置文件

截图1559352082.png 截图1559352092.png 截图1559352108.png 截图1559352202.png

第二步利用winsw将spring boot项目变成服务

1. 下载winsw
截图1559352615.png 截图1559352680.png

选择最新的版本(例如2.2.0),然后下载winsw-xxx-bin.exe。

2. 修改为winsw.exe方便使用。将exe文件移动到部署目录(本例是:d:\projects\demo)
3. 编写winsw.xml

注意上述第2步exe文件的名字和第3步xml文件的名字必须一致。如果你的exe文件时winsw-2.2.0-bin.exe,那么xml的文件名也必须是winsw-2.2.0-bin.xml

<service>
  <id>demo</id>
  <name>demo</name>
  <description>这里是服务描述信息</description>
  <executable>java</executable>
  <arguments>-jar demo-0.0.1-SNAPSHOT.jar</arguments>
  <logmode>rotate</logmode>
</service>

id和name

  1. 安装服务以后,服务名就是此处的name值

  2. 尽量一致

  3. 尽量短

  4. windows service中唯一

description是描述信息,随便填,不要破坏xml结构就行了

executable是执行的命令。这里是java

  1. 直接写java意味着你已经在环境变量里面配置了java_home
  2. 如果没有配置环境变量,那么你需要写全路径。例如(d:\dev\jdk8\bin\java)

arguments是命令执行需要的参数,这里是-jar demo-0.0.1-SNAPSHOT.jar

logmode是日志记录的方式

具体信息可以参考github

4. 安装服务

用管理员进入cmd命令行

winsw install

可能提示需要你安装.net之类的,安装就好了

5. 运行服务并测试
winsw start

启动完毕后访问浏览器看结果

6. 关闭,重启,删除服务,查看服务状态
winsw stop/restart/uninstall/status
7. 看日志

有任何安装、启动的问题可以去查看错误日志

截图1559354127.png

相关文章

网友评论

    本文标题:winsw:“let everything to be a se

    本文链接:https://www.haomeiwen.com/subject/vlsotctx.html