最近工作需要将java程序打包发布,并且能安装成windows服务,而且需要在没有安装jre的机器上运行。研究了一下java service wrapper,在网上找了相关的资料,但是都说得不是很详细,照着做有一定难度。所以我分步总结了一下,希望给遇到相同问题的同仁一点帮助。
- 首先下载java service wrapper包,我下载的是wrapper-windows-x86-32-3.2.3,并解压,这里假设解压到warpper3.2.3文件下
- 新建一个文件夹命名为test,在此文件夹内建立五个文件夹,分别命名bin,logs,application,lib,conf,然后将jre复制到test文件夹内,并将jre文件夹改名为jre。
- 将编译后的java工程中的bin文件夹,和lib文件夹(如果用到了第三方jar包的话,没用到的话可以不复制lib)复制到application文件夹中
- 将warpper3.2.3/src/bin下面的App.bat.in,InstallApp-NT.bat.in,UninstallApp-NT.bat.in三个文件复制到test/bin中,并分别改名,去掉“.in”。
- 将warpper3.2.3/bin下面的Wrapper.exe复制到test/bin
- 将warpper3.2.3/conf下面的wrapper.conf复制到test/conf
- 将wrapper3.2.3/lib下面的wrapper.jar和wrapper.dll复制到test/lib
- 完成以上几步后,打开test/conf/wrapper.conf
l 找到
# Java Application
wrapper.java.command=java
改成
# Java Application
wrapper.java.command=../jre/bin/java
这里是指定jre的路径
l 找到
wrapper.java.mainclass=org.tanukisoftware.wrapper.test.Main
改成
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
这里是指定wrapper的启动方式,用wrapper代理启动
l 找到
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3
# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=64
改成
# Initial Java Heap Size (in MB)
wrapper.java.initmemory=128
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256
这里是限制服务所占用的最小和最大内存,也可以不改
l 找到
# needed starting from 1
wrapper.java.classpath.1=../lib/wrappertest.jar
wrapper.java.classpath.2=../lib/wrapper.jar
改成
# needed starting from 1
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../application/lib/*.jar
wrapper.java.classpath.3=../application/bin/
这里是指定服务所需要用到的jar包及class文件
l 找到
# Application parameters. Add parameters as needed starting from 1
#wrapper.app.parameter.1=
改成
# Application parameters. Add parameters as needed starting from 1
wrapper.app.parameter.1=com.xxx.yyy.Mainclass
这里是指定main class,com.xxx.yyy.Mainclass是main方法所在类,记住要去掉前面的#号才能生效!
l 找到
# Name of the service
wrapper.ntservice.name=testwrapper
# Display name of the service
wrapper.ntservice.displayname=Test Wrapper Sample Application
# Description of the service
wrapper.ntservice.description=Test Wrapper Sample Application Description
改成
# Name of the service
wrapper.ntservice.name=服务名
# Display name of the service
wrapper.ntservice.displayname=服务显示名
# Description of the service
wrapper.ntservice.description=对服务的描述
这里是指定服务的名称,显示名,及服务描述
- 完成上述步骤后,可以进行测试了
运行test/bin/App.bat,如果没有异常信息说明配置成功!然后可以执行InstallApp-NT.bat安装服务,执行UninstallApp-NT.bat卸载服务。
需要注意的一点是,采用这种方式启动java程序,那么根目录就是test/bin,而不是test/application,所以如果在程序中用到了根目录下的资源(如配置文件,图片等),需要复制到test/bin下面来。
附上文件夹结构:
test--conf—wrapper.conf
--bin--App.bat,InstallApp-NT.bat,UninstallApp-NT.bat,Wrapper.exe
--lib—wrapper.dll,wrapper.jar
--application—bin,lib
--logs
--jre
这是示例程序下载地址http://d.download.csdn.net/down/1973862/itpentiuman