1. 一、所需工具Java Service Wrapper
下载地址:https://wrapper.tanukisoftware.com/doc/english/download.jsp
二、在硬盘上创建项目目录
创建bin、conf、lib、logs目录
三、解压打开下载来的Wrapper
(1)将bin目录下的wrapper.exe,src/bin目录下的App.bat.in、InstallApp-NT.bat.in、UninstallApp-NT.bat.in文件拷贝到自己创建的bin目录下,并删掉.in后缀:
(2)将src/conf目录下的wrapper.conf.in、conf目录下的wrapper-license.conf拷贝到自己创建的conf目录下,并删掉.in后缀:
(3)将lib目录下的wrapper.jar、wrapper.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.jar、sqljdbc4.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应用注册到服务中,启动服务即可
完毕!