java-wrapper-service.zip 在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护. 现在比较流行的微服务都是以jar包的方式来构建服务并发布的. 在linux环境是很好处理的,执行一个shell脚本,让其在后台运行时非常容易的.
但是在window环境时,就会出现很多问题:
- bat批处理的脚本窗口很难隐藏掉
- 但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启。解决服务器重启的传统做法是编写一段shell脚本随服务器启动而运行,但是这样做只是治标,那么我们想寻求一种“治本”的方式该怎么办呢?
Java Service Wrapper就轻松而简单的为我们解决了这些问题。"Java Service Wrapper"顾名思义,将我们的Java程序包装成系统服务,这样就可以随着系统的运行而自动运行,当然Java Service Wrapper(下面简称Wrapper)的功能绝不仅于此。 Wrapper下载地址:点击调整到下载地址
注意事项: 在下载页面的提示语,之前没太在意,吃了大亏.Community 版本的windows x64位不支持
推荐下载Professional版本,虽然是需要授权的,但是自己学习使用还是可以玩耍一下的.
好了下载完成之后
我们只需要几个核心的文件
- wrapper.jar 核心文件,位于lib文件夹中
- wrapper.exe 因为是在windows系统中运行所以需要。位于bin文件夹中
- wrapper.dll 因为是在windows系统中运行所以需要。 位于lib文件夹中
- wrapper.conf 核心配置文件,位于src/conf文件夹中,将后缀名conf.in改成conf
- App.bat (可选)运行你的程序,位于src/bin文件夹中, 将后缀名conf.in改成conf
- InstallApp-NT.bat (可选)将你的程序配置为系统服务,位于src/bin文件夹中, 将后缀名conf.in改成conf
- UninstallApp-NT.bat (可选)将你的程序从系统服务中删除,位于src/bin文件夹中, 将后缀名conf.in改成conf
- StartApp-NT.bat (可选)启动程序的系统服务,位于src/bin文件夹中, 将后缀名conf.in改成conf
- StopApp-NT.bat (可选)停止程序的系统服务,位于src/bin文件夹中, 将后缀名conf.in改成conf
- XXX.jar/XXX.class 你的程序
其他的没什么讲的,就说下重点需要修改的配置文件 wrapper.conf
#指定java的jdk运行环境
wrapper.java.command=./java/1.7/jdk/bin/java
#指定程序的主启动类
wrapper.java.mainclass=Main
#指定需要依赖的jar包
wrapper.java.classpath.1=./wrapper.jar
wrapper.java.classpath.2=./lib/commons-io-2.4.jar
wrapper.java.classpath.3=./lib/log4j-1.2.17.jar
wrapper.java.classpath.5=.
#指定启动参数(main方法的args[])
wrapper.app.parameter.1=1
#加入到window服务中的一些配置
# Name of the service
wrapper.name=huangtaiji
# Display name of the service
wrapper.displayname=huangtaiji Wrapper Sample Application
# Description of the service
wrapper.description=huangtaiji
# Service dependencies. Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=
# Mode in which the service is installed. AUTO_START, DELAY_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START
# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false
其中一些其他的配置都可以自定义修改, 以上配置基本够用了.
自己的程序编写
Main.java程序
import org.tanukisoftware.wrapper.WrapperListener;
import org.tanukisoftware.wrapper.WrapperManager;
public class Main implements WrapperListener{
public static void main(String[] args) throws Exception{
HuangTaiJi.main(args);
WrapperManager.start(new Main(),args);
}
public Integer start(String[] args) {
System.out.println("start()");
return null;
}
public int stop(int exitCode) {
System.out.println("stop(" + exitCode + ")");
return exitCode;
}
public void controlEvent(int event) {
System.out.println("controlEvent(" + event + ")");
}
}
HuangTaiJi.java
public class HuangTaiJi{
public static void main(String[] args) throws Exception{
System.out.println("start");
System.out.println("OK");
System.out.println("end");
}
}
所有工作准备就绪,下面就是见证奇迹的时候
- 双击执行InstallApp-NT.bat
- 打开计算机的服务 找到 huangtaiji 服务 , 并启动该服务
- 查看日志是否执行成功
附上我在实践中的例子: java-wrapper-service.zip 附上线上使用的例子: GMS-JOB