Java应用注册为Windows服务

1.     一、所需工具Java Service Wrapper

下载地址:https://wrapper.tanukisoftware.com/doc/english/download.jsp

二、在硬盘上创建项目目录

创建binconfliblogs目录

三、解压打开下载来的Wrapper

(1)bin目录下的wrapper.exesrc/bin目录下的App.bat.inInstallApp-NT.bat.inUninstallApp-NT.bat.in文件拷贝到自己创建的bin目录下,并删掉.in后缀:

(2)src/conf目录下的wrapper.conf.inconf目录下的wrapper-license.conf拷贝到自己创建的conf目录下,并删掉.in后缀:

(3)lib目录下的wrapper.jarwrapper.dll拷贝到自己创建的lib目录下:

 四、创建Java项目,编写代码

关键代码:

 

package com.javaapp;
 
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
 
import org.apache.log4j.Logger;
 
public class TodoTimer {
    private static Logger logger = Logger.getLogger(TodoTimer.class.getName());
 
    private TodoTimer() {
    }
 
    /**
     * 定时操作线程
     */
    private final static Runnable TodoOperation = new Runnable() {
        public void run() {
            try {
                semaphore.acquire();
 
                //具体操作业务
                Map<String, List<String>> map = JavaApp.getAllTable();
                JavaApp.updataAllTable(map);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                semaphore.release();
            }
        }
    };
 
    /**
     * 同步信号量
     */
    private static final Semaphore semaphore = new Semaphore(1);
 
    /**
     * 定时执行
     */
    private static ScheduledExecutorService scheduler = null;
 
    /**
     * 启动定时器
     */
    public static void start() {
 
        if (scheduler == null) {
            scheduler = Executors.newScheduledThreadPool(1);
 
            synchronized (scheduler) {
                scheduler.scheduleAtFixedRate(TodoOperation, 5, 60*60, TimeUnit.SECONDS);
                logger.info("start TODO timer!");
            }
 
        } else {
            logger.info("TODOing!");
        }
 
    }
 
    /**
     * 停止定时器
     */
    public static void stop() {
        synchronized (scheduler) {
            if (scheduler != null && !scheduler.isShutdown()) {
                scheduler.shutdown();
                scheduler = null;
                logger.info("end TODO timer!");
            }
        }
    }
 
    /**
     * 重启定时器
     */
    public static void restart() {
        stop();
        start();
    }
 
    public static void main(String[] args) {
        start();
    }
 
}

 

五、将代码打成jar包:javaservice.jar,并将所依赖的log4j-1.2.16.jarsqljdbc4.jar一起拷贝到自己创建的lib目录下

六、更改wrapper.conf文件

(1)指定JVM

wrapper.java.command=C:\Program Files\Java\jdk1.7.0_67\bin\java

(2)指定所需jar

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

wrapper.java.classpath.2=../lib/javaservice.jar

wrapper.java.classpath.3=../lib/log4j-1.2.16.jar

wrapper.java.classpath.4=../lib/sqljdbc4.jar

(3)指定Java程序运行类(主类)

wrapper.app.parameter.1=com.javaapp.TodoTimer

(4)修改服务名称和描述(都用英文)

wrapper.name=JavaService

wrapper.displayname=JavaService

wrapper.description=JavaService

七、进入bin目录双击App.bat测试运行,若能运行则配置成功,双击InstallApp-NT.bat可将Java应用注册到服务中,启动服务即可

 

完毕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值