当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

Commons Daemon

授权协议 Apache
开发语言 Java C/C++
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 不详
投 递 者 刘瑞
操作系统 Windows
开源组织 Apache
适用人群 未知
 软件概览

Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。

例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。

示例代码:

/**
 * Launch the Engine from a variety of sources, either through a main() or invoked through
 * Apache Daemon.
 */
public class EngineLauncher implements Daemon {
    private static final Log4J log = Log4J.getLog();
    private static Engine engine = null;

    private static EngineLauncher engineLauncherInstance = new EngineLauncher();

    /**
     * The Java entry point.
     * @param args Command line arguments, all ignored.
     */
    public static void main(String[] args) {
        // the main routine is only here so I can also run the app from the command line
        engineLauncherInstance.initialize();

        Scanner sc = new Scanner(System.in);
        // wait until receive stop command from keyboard
        System.out.printf("Enter 'stop' to halt: ");
        while(!sc.nextLine().toLowerCase().equals("stop"));

        if (!engine.isStopped()) {
            engineLauncherInstance.terminate();
        }

    }

    /**
     * Static methods called by prunsrv to start/stop
     * the Windows service.  Pass the argument "start"
     * to start the service, and pass "stop" to
     * stop the service.
     *
     * Taken lock, stock and barrel from Christopher Pierce's blog at http://blog.platinumsolutions.com/node/234
     *
     * @param args Arguments from prunsrv command line
     **/
    public static void windowsService(String args[]) {
        String cmd = "start";
        if (args.length > 0) {
            cmd = args[0];
        }

        if ("start".equals(cmd)) {
            engineLauncherInstance.windowsStart();
        }
        else {
            engineLauncherInstance.windowsStop();
        }
    }

    public void windowsStart() {
        log.debug("windowsStart called");
        initialize();
        while (!engine.isStopped()) {
            // don't return until stopped
            synchronized(this) {
                try {
                    this.wait(60000);  // wait 1 minute and check if stopped
                }
                catch(InterruptedException ie){}
            }
        }
    }

    public void windowsStop() {
        log.debug("windowsStop called");
        terminate();
        synchronized(this) {
            // stop the start loop
            this.notify();
        }
    }

    // Implementing the Daemon interface is not required for Windows but is for Linux
    @Override
    public void init(DaemonContext arg0) throws Exception {
        log.debug("Daemon init");
        }

    @Override
    public void start() {
        log.debug("Daemon start");
        initialize();
    }

    @Override
    public void stop() {
        log.debug("Daemon stop");
        terminate();
    }

    @Override
    public void destroy() {
        log.debug("Daemon destroy");
    }

    /**
     * Do the work of starting the engine
     */
    private void initialize() {
        if (engine == null) {
            log.info("Starting the Engine");
 ... spawn threads etc
        }
    }

    /**
     * Cleanly stop the engine.
     */
    public void terminate() {
        if (engine != null) {
            log.info("Stopping the Engine");
            engine.stop();
            log.info("Engine stopped");
        }
    }
}

  • Apache Commons Daemon 使用简介   1. 简介 Commons Daemon可以将一个普通的java应用程序作为linux或windows的后台服务,以daemon方式运行。例如Tomcat就是使用这个项目来实现作为Linux和Windows的服务启动/停止的。 它分为两个部分,一部分是用C写的,与操作系统交互,另一部分是用java写的,提供Daemon接口。Apache c

  • 系统环境: CentOS 7 X64 JDK1.8 一: 安装jsvc 下载 commons-daemon的源码包 http://apache.fayea.com//commons/daemon/source/commons-daemon-1.0.15-src.zip 解压之后 cd src/native/unix/ 执行: export CFLAGS=-m64 export LDFLAGS=-m

  • Apache Commons Daemon简介 Apache Commons Daemon软件是用于将Java应用程序作为服务器进程运行的一组实用程序和Java支持类。这些在Unix术语中通常称为“守护进程”(因此得名)。在Windows上,它们称为“服务”。 前言 自1994年以来,Java编程语言获得了强有力的发展,并不仅仅是applet和客户端应用程序,在服务器应用程序领域也是安全可靠和高性

  • 近日,由于自己学习dubbo开发,需要使用到zookeeper。 (查其他安装碰到此代码的朋友也别急着走,说不定触类旁通呢。) 自己电脑是windows10的系统,在zookeeper官方下载了最新版本的zip版本。 资源路径:http://mirrors.hust.edu.cn/apache/zookeeper/ 按照教程配置启动好zookeeper以后,本应顺利进入项目开发练习的。 不知道脑子

  • tags: java daemon 1、概述 1.1、为什么使用commons daemon 上一篇已对使用java service wrapper工具与java程序集成进行了讲解,java service wrapper使用简单,集成方法简单,不修改任何代码,一般情况下已满足需求。 但是,java service wrapper只对java程序的开启及关闭进行操作, 若需要对程序启动前及关闭前进

  • Procrun是一套让Java应用程序运行在WIN#@下更容易的库和应用程序。 Procrun服务应用程序 Prunsrv一个让应用程序作为服务运行的服务程序,它能转换任一应用程序作为服务运行。 Procrun监视器应用程序 Prunmgr是一个可视化应用程序,用来监视和配置procrun服务。 可用的命令行选项: //ES//     编辑服务的配置     这是一个默认的操作. 如果没有提供选

  • 转自: Apache Commons Daemon简介说明 下文笔者讲述Apache Commons Daemon的功能简介说明,如下所示 Apache Commons Daemon的功能 用于将一个普通的java应用程序编程系统的后台服务 Commons Daemon框架由两部分组成: 一部分由C语言编写 一部分由java语言编写,并提供Daemon接口 例: 安装apache com

相关阅读

相关文章

相关问答

相关文档