发布Java程序为Windows服务[Java Service Wrapper]



发布Java程序为Windows服务[Java Service Wrapper]

 

☆下载Windows版本:http://nchc.dl.sourceforge.net/sourceforge/wrapper/wrapper-windows-x86-32-3.2.3.zip
☆假设项目放在目录project文件夹下,发布的包放在project/lib下,日志文件放在project/log下,配置文件放在project/conf下,运行的jar为myjar.jar。
☆在下载包后解压,将Java Service Wrapper包中src/bin/的App.bat.in,InstallApp-NT.bat.in,UninstallApp-NT.bat.in 和bin/下的wrapper.exe放在project目录下,把后缀.in去掉。【App.bat(可以直接运行程序),InstallApp- NT.bat(安装成Windows服务),UninstallApp-NT.bat(卸载Windows服务)】。修改 App.bat,InstallApp-NT.bat,UninstallApp-NT.bat中的set _WRAPPER_CONF=”%_REALPATH%conf\wrapper.conf”。
☆把Java Service Wrapper包中lib目录下的Wrapper.DLL,wrapper.jar拷贝到project/lib下,在原来的运行的jar文件 myjar.jar中的MANIFEST.MF增加Class-Path: 其他jar wrapper.jar wrapper.dll。
☆把Java Service Wrapper包中src/conf目录下的wrapper.conf.in放到project/conf下,去掉后缀.in。然后修改为
wrapper.java.classpath.1=dist/wrapper.jar
wrapper.java.classpath.2=dist/myjar.jar

wrapper.java.library.path.1=dist

#原来程序运行的入口
wrapper.app.parameter.1=myapp.mainClass

wrapper.logfile=log/wrapper.log
wrapper.console.title=MyApp服务
wrapper.ntservice.name=MyApp服务
wrapper.ntservice.displayname=MyApp服务
wrapper.ntservice.description=MyApp服务
☆然后直接运行App.bat,如果运行成功的话,然后就可以执行InstallApp-NT.bat发布成Windows服务,然后就可以设置成开机自启动了,不怕别人启动的时候自己的程序没有执行。另外如果在project/bin当成bat的目录的话没这么麻烦。
===========例子=======================================================
目录project文件夹下,
E:\project
|-bin
|-conf
|-lib
|-logs

bin文件夹:

App.bat
InstallApp-NT.bat
UninstallApp-NT.bat
wrapper.exe


conf文件夹:
wrapper.conf

lib文件夹:
myjar.jar //我的jar包
wrapper.dll
wrapper.jar

在文件myjar.jar中的MANIFEST.MF增加Class-Path: 其他jar wrapper.jar wrapper.dll;

 
conf目录下的wrapper.conf文件修改为

wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/myjar.jar

wrapper.java.library.path.1=../lib

#原来程序运行的入口
# Application parameters. Add parameters as needed starting from 1
wrapper.app.parameter.1=myapp.mainClass<YourMainClass>

wrapper.logfile=../logs/wrapper.log
wrapper.console.title=MyApp服务
wrapper.ntservice.name=MyApp服务
wrapper.ntservice.displayname=MyApp服务
wrapper.ntservice.description=MyApp服务