日期:2014-05-16  浏览次数:20649 次

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

下载Windows版本:(请使用Community版本,因Professional和Standard版本需要购买Licenses)

????? ☆假设项目放在目录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的目录的话没这么麻烦。

?

?

<!-- Linux-->

使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。

下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。

1、下载Java Service Wrapper(请使用Community版本,因Professional和Standard版本需要购买Licenses), 解压。?

??????http://wrapper.tanukisoftware.org/
????? 复制src\bin\sh.script.in到/opt/tianlong/bin目录,重命名为QueueTest
????? 复制wrapper\bin目录下的wrapper文件到/opt/tianlong/bin目录
????? 复制src\conf\wrapper.conf.in到/opt/tianlong/conf目录,重命名为wrapper.conf
????? 复制src\lib\lib目录下3个文件到/opt/tianlong/lib目录
????????????? wrapper.so
????????????? wrapper.jar
????????????? wrappertest.jar

2、修改/opt/tianlong/bin/QueueTest文件
????? APP_NAME="QueueTest" //注意这里,这里的应用服务名称应该与第1步的/opt/tianlong/bin里面的? QueueTest名字相同
????? APP_LONG_NAME="QueueTest Application Server"
????? WRAPPER_CMD="./wrapper" //这里的路径要写正确,这里是对应了/opt/tianlong/bin/wrapper这个文件
????? WRAPPER_CONF="../conf/wrapper.conf" //这里的路径要写正确,这里是对应了/opt/tianlong/conf/wrapper.conf这个文件
????? 赋予执行权限
????? chmod 775 /opt/testapp/bin/SocketServer
????? chmod 775 /opt/testapp/bin/wrapper

3、修改/opt/tianlong/conf/wrapper.conf文件
????? wrapper.java.command=/usr/java/jdk1.6.0_07/bin/java?? //这里是写java的安装路径
????? 使用WrapperStartStopApp,这样可以通过命令带start/st