1、编写基础服务类,实现Daemon init 、start 、stop
package com.allinfinance.yak.support.service;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException;
import org.apache.commons.lang.StringUtils;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.util.Log4jConfigurer;
import cn.webank.rmb.api.RMB;
import com.allinfinance.yak.support.future.TaskExecutor;
/**
* 基础的服务Daemon. 可以带一个参数,指定在classpath中加载的spring配置文件名,程序会自动加上 "-context.xml"后缀
*
* @author licj
*
*/
public class ServiceDaemon implements Daemon {
private ConfigurableApplicationContext ctx;
@Override
public void init(DaemonContext context) throws DaemonInitException,
Exception {
initLogging();
ctx = new ClassPathXmlApplicationContext(
getContextFilename(context.getArguments()));
ctx.registerShutdownHook();
}
private static void initLogging() throws FileNotFoundException {
//默认调用classpath下的log4j.properties,这样可以有效的避免因为xml优先的原因,被某些jar包里的log4j.xml给覆盖了。
//相当于主动调整默认配置文件加载优先级
String logLocation = System.getProperty("log.config");
if (StringUtils.isNotBlank(logLocation))
Log4jConfigurer.initLogging(logLocation, 1000 * 60);
else
Log4jConfigurer.initLogging("classpath:log4j.properties");
}
@Override
public void start() throws Exception {
}
@Override
public void stop() throws Exception {
RMB.stopWait();
//关闭所有的任务执行器
Map<String,TaskExecutor> taskExecutorMap=ctx.getBeansOfType(TaskExecutor.class);
if(null!=taskExecutorMap){
Iterator<TaskExecutor> taskExecutorIter=taskExecutorMap.values().iterator();
while(taskExecutorIter.hasNext()){
TaskExecutor taskExecutor=taskExecutorIter.next();
if(null==taskExecutor){
continue;
}
taskExecutor.shutdownWait();
}
}
}
@Override
public void destroy() {
ctx.close();
}
/**
* 这样可以直接跑,要关闭就杀掉进程
*
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
initLogging();
@SuppressWarnings("resource")
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext(
getContextFilename(args));
ctx.registerShutdownHook();
}
public static String getContextFilename(String args[]) {
String filename = "/service-context.xml";
if (args.length >= 1 )
filename = "/" + args[0] + "-context.xml";
return filename;
}
protected ConfigurableApplicationContext getCtx() {
return ctx;
}
}
2、在debug/run configuration中配置启动,如图
相关推荐
commons-daemon+Weld启动windows 主要为了自己记录而已
Daemon_Tools Daemon_Tools Daemon_Tools Daemon_Tools
虚拟光驱DAEMON Tools的安装和简单使用
Daemon程序简介Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端...
Shadow Daemon是用于检测,记录和防止对Web应用程序进行攻击的工具的集合。 从技术上讲,Shadow Daemon是一种Web应用程序防火墙,可拦截请求并过滤出恶意参数。 它是一个模块化系统,将Web应用程序,分析和界面分开...
daemon 程序例子daemon 程序例子daemon 程序例子
虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱...
一个不错的虚拟光驱工具,支持Win9x/win2k,支持ps,支持加密光盘,装完不需启动即可用。是一个先进的模拟备份并且合并保护盘的软件,可以备份SafeDisc保护的软件,可以打开CUE,ISO and CCD 等这些虚拟光驱的镜像...
daemon.rar 虚拟光驱,安装iso文件的好东西
虚拟光驱daemon
daemon344光驱模拟器
Daemon Tools v4.03 V4.03HE 汉化版,相信经常使用虚拟光驱的人都应该记得,这是当年极其经典的一个版本。 现在的虚拟光驱越做越大,功能也越来越多,最新的版本Daemon Tools 安装后要占用硬盘50多M,然尔对一般的...
DAEMON Tools Ultra是现在世界上最强的虚拟光驱工具,也是唯一支持NF3、支持PS、支持加密光盘,装完不需启动即可用。也是一个先进的模拟备份并且合并保护盘的软件,可以备份被SafeDisc加密技术保护的光盘,可以打开...
1 名称daemontools-0.76.tar.gz。 2 daemontools是一系列管理unix services的工具集合。 3 supervise->监控一个服务。它在发现目标服务dies的时候启动服务或重启服务器。创建一个新服务的监控非常简单,创建一个目录...
DAEMON Tools Ultra下载安装以后,您就可以把光盘镜像直接变成一个光盘盘符,也就是说您可以不用把镜像释放到硬盘或者再刻出光盘就可以当做光驱一样用了。有了它,您也可以把体积比它大 100倍的Virtual Drive扔了。...
daemontool4.11中文完美版daemontool4.11中文完美版daemontool4.11中文完美版
虚拟光驱Daemon Tools使用方法.docx
daemon341.exe 虚拟光驱
DaemonTools