美文网首页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