Commons Daemon 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Commons Daemon 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 Apache
开发语言 Java C/C++
操作系统 Windows
软件类型 开源软件
所属分类 程序开发常用工具包
开发厂商 Apache
地区 不详
提 交 者 小编辑
适用人群 未知
收录时间 2010-05-17

软件简介

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");
        }
    }
}

展开阅读全文

评论 (2)

加载中
感谢博主的分享 ,学习了
2019/10/21 23:52
回复
举报
2016/02/12 22:02
回复
举报
更多评论
发表了资讯
2013/04/04 00:00

Apache Commons Daemon 1.0.15 发布

Apache Commons Daemon 1.0.15 发布了,修复了 1.0.14 中的 bug。 完整记录请看: https://issues.apache.org/jira/browse/DAEMON/fixforversion/12324242 Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。...

0
27
发表了资讯
2013/03/20 00:00

Apache Commons Daemon 1.0.14 发布

Apache Commons Daemon 1.0.14 发布,这是个 bugfix 版本。 Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。

0
3
发表了资讯
2013/02/13 00:00

Apache Commons Daemon 1.0.13 发布

Apache Commons Daemon 1.0.13 修复了前些天发布的 1.0.12 版本的一些重要 bug。 Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。...

1
10
发表了资讯
2013/01/24 00:00

Apache Commons Daemon 1.0.12 发布

Apache Commons Daemon 1.0.12 发布了,主要是修复了在 1.0.11 中发现的 bug。 Commons Daemon 可以帮你实现将一个普通的 Java 应用变成系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。...

4
46
发表了资讯
2012/11/29 00:00

Apache Commons Daemon 1.0.11 发布

Apache Commons Daemon 1.0.11 发布,修复了 1.0.10 的 bug 而已。 Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。...

6
17
发表了资讯
2012/02/29 00:00

Apache Commons Daemon 1.0.10 发布

Commons Daemon 1.0.10 是一个 bug 修复版本,主要的问题集中在 Linux 平台下没有使用 libcap 头文件的构建问题。 下载地址:http://commons.apache.org/daemon/download_daemon.cgi

0
0
发表了资讯
2012/02/15 00:00

Apache Commons Daemon 1.0.9 发布

Apache Commons Daemon 刚刚发布了 1.0.9 版本,这是一个 bug 修复版本,修复了一些小问题,下载地址: http://commons.apache.org/daemon/download_daemon.cgi Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。...

8
4
发表了资讯
2011/11/24 00:00

Apache Commons Daemon 1.0.8 发布

Apache Commons Daemon 团队刚发布了 1.0.8 版本,该版本包含 bug 修复和一些更新的特性,请看下载包后的 RELEASE-NOTES.txt 文件。 下载地址: http://commons.apache.org/daemon/download_daemon.cgi Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作...

1
3
发表了资讯
2011/08/13 00:00

Apache Commons Daemon 1.0.7 发布

Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。 1.0.7 版本修复了 CVE-2011-2729 这个安全漏洞。

0
6
发表了资讯
2011/07/14 00:00

Jsvc 1.0.6, Tomcat 后台运行的管理器

jsvc最近已发布1.0.6版本,本次更新添加了很多JVM参数的支持,更新功能详列如下: * DAEMON-209: Add --LibraryPath to procrun for setting the LoadLibrary serch paths (1.0.6) * DAEMON-208: Add -server and -client -jvm <name> synonyms (1.0.6) * DAEMON-205: Add support for building on ARM p...

0
10
发表了资讯
2011/07/09 00:00

Commons Daemon 1.0.6 发布

Apache Commons Daemon 今天发布了 1.0.6 版本,这是一个补丁修复和功能更新版本。 源码和二进制包下载: http://commons.apache.org/daemon/download_daemon.cgi 详细改进记录请看下载包中的 RELEASE-NOTES.txt Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项...

0
1
发表了资讯
2011/01/08 00:00

Commons Daemon 1.0.5 发布

Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如Tomcat就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。 该版本主要是修复了 Windows 平台下的一些bug。 下载地址:http://commons.apache.org/daemon/download_daemon.cgi...

0
1
发表了资讯
2010/10/26 00:00

Commons Daemon 1.0.4 发布

Commons Daemon 可以帮你实现将一个普通的 Java 应用编程系统的一个后台服务。 例如 Tomcat 就是利用这个项目来实现作为 Linux 和 Windows 的服务启动和停止的。 下载地址:http://commons.apache.org/daemon/download_daemon.cgi 该版本主要是bug修复,也有一些小改进。...

1
5
发表了资讯
2010/08/03 00:00

Commons Daemon 1.0.3 发布-下载

话说这个东西就是影响 Tomcat 7.0.1 版本正常发布的元凶,详情请看这里。 下载地址:http://commons.apache.org/daemon/download_daemon.cgi 该版本主要修正了一个安全性bug,详情请下载并查看 RELEASE-NOTE.txt 文件。

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/10/15 16:49

Tomcat:Commons Daemon procrun stdout initialized

1、问题查询 更换了Tomcat版本后服务器无法启动,看日志出现了Commons Daemon procrun stdout initialized错误,一开始以为是环境变量的配置问题,但是仔细检查后发现环境变量CATALINA_HOME和JAVAHOME CLASSPATH配置都没有问题 然后查找资料说是Tomcat的JDK虚拟机文件路径配置问题,于是打开..\Tomcat 8.5\bin目录下的T...

0
0
2018/08/24 01:43

java服务安装(二):使用commons-daemon

1、概述 1.1、为什么使用commons daemon 上一篇已对使用java service wrapper工具与java程序集成进行了讲解,java service wrapper使用简单,集成方法简单,不修改任何代码,一般情况下已满足需求。 但是,java ...

0
0
发表了博客
2018/03/17 19:35

Commons之Commons-io

转载自(https://my.oschina.net/u/2000201/blog/480071) 1 概述 Commons IO是针对开发IO流功能的工具类库。 主要包括六个区域: 工具类——使用静态方法执行共同任务 输入——用于InputStream和Reader实现 输出——用于OutputStream和Writer实现 过滤器——各种文件过滤器实现 比较器——各种文件的java.util.Compara...

0
0
发表了博客
2019/05/25 16:08

docker daemon

[root@localhost ~]# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# syste......

0
0
发表了博客
2010/08/22 08:57

关于Daemon

1、linux中Daemon的主要分类: standalone:此类可以自行单独启动服务。 优点:一直都在内存中,所以对请求的响应会相对较快。常见的有httpd,vsftpd super daemon:由一个特殊的daemon来同意管理 特点:由super daemon负责唤醒各项服务,因此就具有了安全管控的机制,即类似防火墙的功能。但是响应时间会相对较慢。 同时...

0
2
发表于运维专区
06/20 21:41

「Nginx」- daemon off;

原文链接:「Nginx」- daemon off; 在表面上,就是决定 Nginx 是前台运行(daemon off;)还是后台运行(daemon on;); 我们在命令行执行而产生的是初始化进程,它会产生主进程和工作进程,但是在这之后,他就退出了。 因此,虽然在系统中存在 Nginx 进程,但是它们都也不是原来的启动进程,全是派生出来的。 因此我们在...

0
0
发表了博客
2013/12/18 17:05

Start a Daemon

##概述## 守护进程(daemon)听着像一个ghost,无处不在而又默默存在。其实还真是这样一个存在。 它默默运行在系统的后台并具有以下特征: 1. 父进程是init(1号进程) 2. 没有和任何控制终端关联,所以也不会收到诸如SIGINT( 信号名称,Ctrl-C会产生这个信号 )、SIGTSTP( TSTP的意思是tty stop,即在control terminal上输...

0
0
发表了博客
2014/09/28 18:14

【Apache Commons系列】Commons Collections

Collections增加了更多实用的集合,是java.util.Collections的扩展。 官方网站:http://commons.apache.org/proper/commons-collections/index.html 常用的容器 Map 对等Map——BidiMap 可通过key找到value,亦可通过value找到key BidiMap bidi = new TreeBidiMap(); bidi.put("SIX", "6"); bidi.get("SIX");  /...

0
0
发表了博客
02/07 10:45

通过Commons Daemon Procrun让Java应用程序作为Windows服务运行

转自:点击打开链接 Contents 1 Overview 2 Prerequisites 3 In a nutshell 4 Running the Sample Application 5 How does it work 5.1 Java Code 5.2 Installation Script 6 Questions/Comments 7 References/Fu......

0
0
2014/12/30 16:08

golang daemon

package main import ( "fmt" "log" "os" "runtime" "syscall" "time" ) func daemon(nochdir, noclose int) int { var ret, ret2 uintptr var err syscall.Errno darwin := runtime.GOOS == "darwin" // already a daemon if syscall.Getppid() == 1 { re...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2012/02/15 13:43

Commons Daemon 研究了半天,怎么用啊?

@红薯 能不能出个简单的使用介绍?我怎么也用不成功

5
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2 评论
213 收藏
分享
返回顶部
顶部