将JavaApplication注册成windows服务

来源:互联网 发布:book.city 域名 编辑:程序博客网 时间:2024/06/06 20:19

前言:最近本人负责公司给一个不给钱的用户做了一个数学计算模型,因为用户的特殊性,所以领导交代No Monty,No Code。但是写好的程序得去用户哪里去运行啊,所以我就想了一个瞒天过海的招数,将代码打成jar包,直接编译运行,但是这个模型计算时间比较长,总是出现还没有计算完成就出现其他不知情的人员关闭CMD窗口,导致数据总是计算不完。然后我就突发奇想,将模型做成系统服务。启动之后可以后台运行。哈哈。。。。废话不多说,上码。

这里我使用Java service wrapper这个小工具,将JavaApplication做成系统服务。

贴出下载地址:http://sourceforge.net/projects/wrapper/ 或者 http://wrapper.tanukisofeware.com/doc/english/download.jsp

1.这下载wrapper工具时,官网提供了商业版本,标准版本和社区版本,其中只有社区版本是免费了,但是社区版本中是没有64位操作系统的工具的。所以只好选择32位的工具。 我下载的版本是wrapper-windows-x86-32-3.5.20.zip。这里有个注意点:就是wrapper使用32位的工具,所以JDK必须使用32位的JDK,因为32位的wrapper工具是依赖32位的JRE运行环境的。

2. 配置过程

    1)首先确定你的电脑上有java运行环境,没有的话安装32位的JRE。

    2)将你的java程序打包成jar包。(我的jar的名称为JavaServiceTest.jar,main方法所在类JavaServiceTest)

    3)在硬盘上创建文件夹test, 并在其下创建文件夹bin, conf, lib, logs。

    4)解压wrapper-windows-x86-32-3.5.20.zip, 并将其bin目录下的Wrapper.exe、src/bin目录下的App.bat.in、InstallApp-NT.bat.in、UninstallApp-NT.bat.in文件

          拷贝到test的bin目录中,并分别改名为App.bat、InstallApp-NT.bat、UninstallApp-NT.bat。

     5)将其lib目录下的Wrapper.DLL、wrapper.jar拷贝到test的lib目录中。并且将项目的jar和所用到的jar都拷贝到该目录(包括你自己的java程序jar和你自己程序中引入的第三方类库的jar包)。

     6)将其src/conf目录下的wrapper.conf.in拷贝到workapp的conf目录中,并命名为wrapper.conf。

 3. 修改wrapper.conf文件

    主要修改下面几项:

    (1)JVM位置:

     wrapper.java.command=C:\jdk1.5.0_07\bin\java 或者 wrapper.java.command=%JAVA_HOME%/bin/java(需要在系统的环境变量里配置JAVA_HOME)
   (2)MAIN CLASS 此处决定了使用Java Service Wrapper的方式
     wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
   (3)你的Java程序所需的jar包必须全部在此标明,包括你自己Java程序的的jar包,注意路径准确:
     wrapper.java.classpath.1=../lib/JavaServiceTest.jar
     wrapper.java.classpath.2=../lib/wrapper.jar
     wrapper.java.classpath.3=../lib/sqljdbc4.jar

      ……

    (4)你的Wrapper.DLL或wrapper.jar所在的目录
      wrapper.java.library.path.1=../lib
    (5)你的Java应用程序的运行类(主类)
      wrapper.app.parameter.1=com.test.JavaServiceTest
    (6)注册为服务的名称和显示名,你可以随意进行设置
      wrapper.name=testwrapper
      wrapper.displayname= Test Wrapper Sample Application
    (7)服务描述信息
      wrapper.description= Test Wrapper Sample Application Description

    (8)服务的启动类型

      # Mode in which the service is installed.  AUTO_START, DELAY_START or DEMAND_START
      wrapper.ntservice.starttype=AUTO_START

 4. 修改好了以后,运行App.bat即可运行你的java程序,这里可以测试配置的是否正确,如果可以运行,证明配置ok。

 5. 运行InstallApp-NT.bat可以进行服务的注册,UninstallApp-NT.bat为注销服务。

 6. 运行完注册服务InstallApp-NT.bat可以在命令窗口是输入services.msc回车,即可在服务中看到你注册的服务名称。(如:Test Wrapper Sample Application)

 7. 点击App.bat启动程序,但是这样是客户端启动,并达不到我预期想要的效果,这样的话不是后台运行。

 8. 找到我们注册的服务之后,点击开启,程序报错,启动之后又停止了,查看wrapper生成的日志文件显示lib下的jar包找不到,Java路径找不到,然后就将相对路径换成绝对路径就好了。因为点击App.bat程序时,实在wrapper目录内,识别相对路径,当在后台启动时,按照相对路径寻找就找不到了。

 所以推荐使用绝对路径,不管在什么情况下。