使用Wrapper来将Java程序转化为NT系统服务

来源:百度文库 编辑:神马文学网 时间:2024/06/03 04:59:50
Wrapper 下载页面
http://sourceforge.net/project/showfiles.php?group_id=39428
最新的是3.1.2  以下例子都是在此版本下进行
环境:Win2003server + JDK1.5 + Wrapper3.1.2
首先: 打包自己的应用
包含AA.jar  config.xml 一个lib文件夹----包含所有jar  还需要一个log文件夹,使用log4J日志
配置wrapper.conf文件>
wrapper.java.command=D:\Sun\AppServer\jdk\bin\java
这里的指的是你用来执行你程序的Java.exe的路径,一般你配置了环境变量后就可以不管了,当然,你有好几个JDK的话,还是指定吧
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
这个可不是指你的主类,而是和你采用的方式有关,如果你采用第一种整合方式的话,就 写上
org.tanukisoftware.wrapper.WrapperSimpleApp  ,由它来封装服务
wrapper.java.classpath.1=../lib/wrapper.jar
这里添加你用到的jar包文件,从1..n你自己全写上吧,不过wrapper是必须的
wrapper.java.library.path.1=../lib
这个是你要存放wrapper.dll的位置,一般默认就可以了
wrapper.app.parameter.1=
这个就是你自己可执行程序的主类(MainClass),一般来说,就是包含public static void main的那个类
# Name of the service
wrapper.ntservice.name=PESM_WEB_SERVICE
# Display name of the service
wrapper.ntservice.displayname=PESM_WEB_SERVICE
# Description of the service
wrapper.ntservice.description=PESM_WEB_SERVICE
以上三个都有介绍,不说了,名字而已
好,一切配置完成,直接拷贝src/bin下的三个文件,App.bat.in,InstallApp-NT.bat.in,UninstallApp-NT.bat.in到bin目录下,该名字成自己喜欢的,同时把后面的.in全部去掉
执行 InstallApp-NT.bat.,哈哈,服务加进来了,

好的,run一下,马上又停掉了,怎么搞得。
察看日志
STATUS | wrapper  | 2005/12/08 13:22:15 | Launching a JVM...
INFO   | jvm 1    | 2005/12/08 13:22:16 | log4j:ERROR setFile(null,true) call failed.
INFO   | jvm 1    | 2005/12/08 13:22:16 | java.io.FileNotFoundException: ..Log\System.log (系统找不到指定的路径。)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at java.io.FileOutputStream.openAppend(Native Method)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at java.io.FileOutputStream.(FileOutputStream.java:177)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at java.io.FileOutputStream.(FileOutputStream.java:102)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.FileAppender.setFile(FileAppender.java:282)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:161)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:215)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:132)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:96)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:654)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:533)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:417)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:468)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.LogManager.(LogManager.java:122)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.apache.log4j.Logger.getLogger(Logger.java:103)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at ytd.pesm.web.Client.(Unknown Source)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at java.lang.Class.forName0(Native Method)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at java.lang.Class.forName(Class.java:164)
INFO   | jvm 1    | 2005/12/08 13:22:16 |     at org.tanukisoftware.wrapper.WrapperSimpleApp.main(WrapperSimpleApp.java:334)
INFO   | jvm 1    | 2005/12/08 13:22:16 | log4j:ERROR Either File or DatePattern options are not set for appender [systemLog].
INFO   | jvm 1    | 2005/12/08 13:22:16 | Wrapper (Version 3.1.2) http://wrapper.tanukisoftware.org
INFO   | jvm 1    | 2005/12/08 13:22:16 |
一大堆,最重要的是(wrapper的日志在logs下)发现找不到自己要写得log文件目录,察看wrapper说明知道服务执行后,当前路径就变成bin了,而我们的log文件夹被在logs下,所以,修改log4j.properties中日志的存放路径如下
原来的是
log4j.appender.systemLog.File=Log\\System.log
log4j.appender.systemLog.File=..\\logs\\Log\\System.log
重启服务,ok,找到log路径了,成功启动
还是有点不放心,看看log日志先,一看,傻了,还有错
STATUS | wrapper  | 2005/12/08 13:17:21 | Launching a JVM...
INFO   | jvm 1    | 2005/12/08 13:17:22 | config.xml 监控平台配置错误!!
INFO   | jvm 1    | 2005/12/08 13:17:22 | Wrapper (Version 3.1.2) http://wrapper.tanukisoftware.org
INFO   | jvm 1    | 2005/12/08 13:17:22 |
INFO   | jvm 1    | 2005/12/08 13:17:22 | 无法连接远程主机,请检查通信主机是否打开端口!!
INFO   | jvm 1    | 2005/12/08 13:17:22 | 无法连接远程主机,请检查通信主机是否打开端口!!
找不到config.xml文件,想想刚才的路径问题,把config.xml拷贝到bin下
哈,这下重启,解决问题,日志如下
STATUS | wrapper  | 2005/12/08 13:15:25 | --> Wrapper Started as Service
STATUS | wrapper  | 2005/12/08 13:15:25 | Launching a JVM...
INFO   | jvm 1    | 2005/12/08 13:15:27 | Wrapper (Version 3.1.2) http://wrapper.tanukisoftware.org
INFO   | jvm 1    | 2005/12/08 13:15:27 |
INFO   | jvm 1    | 2005/12/08 13:15:27 | Server.IP:192.168.0.201 port:1888 Connected!
写下来,一作备忘,二则看是否能给其他朋友一点帮助
_xyz