美文网首页
window下使用javaservice打包jar成为系统服务

window下使用javaservice打包jar成为系统服务

作者: 有时右逝 | 来源:发表于2017-11-14 16:42 被阅读0次

前言

目前在公司负责开发一个网络模块,该模块常驻内存,监听某个端口进行通信。初期使用的时java -jar xxx.jar 命令运行。每次都需要登录远程服务器,打开cmd,输入上面的命令。由于无线网络缓慢,远程桌面卡顿,导致每天耗费大量时间,作为一个技术人员,自然需要改变这样的情况,于是这里使用了jenkins进行自动部署,其中就遇到一个需求,需要将jar打包成系统服务,方便自动部署后进行服务重启。

系统环境

image.png

我的使用场景

  1. 配置好pom.xml
  2. 提交代码到码云
  3. 触发jenkins的构建,产生target文件夹,
  4. jenkins执行批处理,拷贝target文件到D:\Program Files\lightai-net 关闭服务,再启动服务.

从而实现该网络模块的自动化部署。

构建完成之后的脚本如下


image.png

打包jar 成服务的步骤

  • 准备好jar包。这里不做过多解释。这里提供下我的pom.xml中build配置。
<build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.insigmaunited.lightai.main.LightaiServer</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

其中
<mainClass>com.insigmaunited.lightai.main.LightaiServer</mainClass> 需要修改你自己的入口类。

在项目的目录下执行 mvn clean package 即可产生文件夹 target如果配置了jenkis构建,则该命令是jenkins完成

image.png
  • 拷贝target进入 D:\Program Files\lightai-net

  • 下载 javaservice文件。 http://download.forge.ow2.org/javaservice/JavaService_2_0_10-amd64.zip
    解压之后,拷贝javaservice.exed:programfiles\lightai-net
    此时的文件夹如下:

    image.png
  • 在当前文件夹 打开命令窗口。按住shift,点击鼠标右键,选择在此处打开命令窗口
    执行如下命令

JavaService.exe -install lightai-net "%JAVA_HOME%"/jre/bin/server/jvm.dll -Xms500m -Xmx500m -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;"%CD%"/lib;"D:\Program Files\lightai-net\lightai-net-1.0.0.jar";"%CD%"/classes -start com.insigmaunited.lightai.main.LightaiServer -method main -out "D:\Program Files\lightai-net\log.log" -err "D:\Program Files\lightai-net\err.log"

命令的参数解释

  1. -install lightai-net 表示注册的服务名 是 lightai-net
  2. "%JAVA_HOME%"/jre/bin/server/jvm.dll -Xms500m -Xmx500m -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;"%CD%"/lib;"D:\Program Files\lightai-net\lightai-net-1.0.0.jar";"%CD%"/classes 表示jvm路径和classpath路径。 如果你配置和我相同,只需要修改 "D:\Program Files\lightai-net\lightai-net-1.0.0.jar" 为你的jar包。
  3. -start com.insigmaunited.lightai.main.LightaiServer -method main 表示服务启动时执行的入口类和方法。
  4. -out "D:\Program Files\lightai-net\log.log" -err "D:\Program Files\lightai-net\err.log" 表示服务执行中输出到指定文件log.log ,如果出现错误,则输出到err.log

执行命令的结果


image.png
  • 查看服务。
    通过 控制面板 进入 管理工具 再进入服务 即可查看我们的新增的服务
    image.png

吐槽

这个打包,耗时较多。主要是网络上文章很多,每一个都有一些差异。我直接拷贝无法执行运行。这里建议大家如果首次尝试,最好确保目录我一样。

相关文章

网友评论

      本文标题:window下使用javaservice打包jar成为系统服务

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