问题标签 [apache-commons-daemon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2517 浏览

java - 在 jsvc 类路径中使用多个 jar

我正在尝试使用 jsvc 让 Java 应用程序作为 Linux 服务运行。我发现如何使用 jsvc 将 java 程序转换为守护进程?这能够让我大部分时间,但我仍在努力弄清楚类路径。

我收到以下错误到 st​​derr:

19/04/2013 10:43:18 12233 jsvc.exec 错误:找不到守护程序加载程序 org/apache/commons/daemon/support/DaemonLoader

19/04/2013 10:43:18 12231 jsvc.exec 错误:服务退出,返回值为 1

运行时似乎无法找到 commons-daemon.jar。

我的应用程序的结构使得应用程序本身位于一个 jar 文件中,具有依赖项,包括 lib 目录中的 commons-daemon。

  • 守护进程脚本.sh
  • myapp.jar
  • lib/commons-daemon.jar
  • 库/其他罐子

这是我的 daemon-script.sh 的相关部分:

LIB_DIR=$(pwd)/lib/*

CLASS_PATH=$(pwd)/myapp.jar

$EXEC -home $JAVA_EXEC -cp $CLASS_PATH:$LIB_DIR -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS

我尝试了很多变体:相对路径,特别是引用 lib/commons-daemon.jar,没有通配符等。有人知道如何使它正常工作吗?

此外,myapp.jar 是一个自执行 jar (主要用于测试目的,是的,我仍然需要它作为服务运行),因此 manifest.mf 包含 Class-Path 和 Main-Class 属性。有没有办法让 jsvc 识别清单?

0 投票
1 回答
777 浏览

java - Java 中的单元测试 Apache Commons 守护进程

我四处研究,似乎找不到任何体面的资源来帮助我 JUnit 测试用 Java 编写的 apache commons 守护程序。我希望能够测试当一个守护进程启动时它不会失败地启动,而当它关闭时它的关闭不会失败。

这是守护程序在一段时间后启动和停止的一些示例代码:

更新

Logger 类读入一个文本文件并将该文本文件中的随机行写入日志文件 *

非常感谢任何帮助。

0 投票
1 回答
4745 浏览

java - 如何将 Apache Commons Daemon 与跨平台服务一起使用?

我有一个需要部署为可执行 JAR 的 Java 守护程序(运行 24/7/365 的系统服务),但是我希望用户(在 Windows、Linux 和 Mac 上)能够通过以下方式启动/停止应用程序:

(或任何与 Windows/Mac 服务等效的东西)。显然,这需要操作系统级别的东西来将myapp“服务”映射到我的 Java 应用程序内部的特定方法调用(可能,LifecycleManager#start()并且LifecycleManager#stop()分别)。

我听说Apache Commons Daemon可以用于此目的,在仔细阅读他们的网站后,它看起来就是这样做的。但是,它看起来像是一个旧项目,并且确实没有任何文档可以完成我正在寻找的内容。

所以我问:可以commons-daemon做我需要的,还是我需要别的东西或额外的东西?如何从可执行 JAR 中获取跨平台守护程序?提前致谢!

0 投票
1 回答
1747 浏览

java - 如何在 Apache Commons Daemon 中实现日志文件轮换?

标准 Unix 守护进程支持信号 HUP 来轮换日志文件。当守护进程收到信号时,它会关闭所有日志文件并重新打开它们。

我在 Java 中有一个使用 Apache Commons Daemon 的守护进程。守护进程实现支持三种方法:init、start 和 stop。但我找不到任何对 Unix 信号的支持。如何支持 HUP 信号轮换日志文件?

0 投票
0 回答
288 浏览

java - Commons-Daemon 是否存在以使您的可执行 JAR 成为服务?

假设我有一个名为myapp.jar. Apache Commons-Daemon是否存在以便我可以编写一个/etc/init.d/myapp服务脚本(用于启动/停止myapp服务),然后myapp像普通的 Linux 服务一样对待:

还是它做其他事情?

0 投票
3 回答
2852 浏览

java - Windows 服务 - 未找到 Apache 公共守护程序类

我有一个需要作为 Windows 服务安装的 Jar 文件。我正在使用 Apache commons 守护进程 procrun。

尽管该服务出现在任务管理器的“服务”选项卡中,但它没有运行。它处于停止状态并试图启动它似乎不起作用。

*在公共守护进程日志中,我注意到它无法加载主类,即“AgentApp”。

我也安装了 32bit jre。

这里提到下日志文件的内容。

imageprocagent 标准错误:

克劳福德守护进程:

  • `[2015-01-07 15:47:49] [错误] FindClass com/fx358/fx9/agent/AgentApp 失败

这是我用来安装代理的脚本:

` 有人可以指出我做错了什么吗?提前致谢。

0 投票
2 回答
857 浏览

scala - 使用来自 jsvc 的 commons-daemon 运行 Scala

我正在尝试编写一个基本的 Scala 应用程序,它可以使用 commons-daemon 作为守护程序运行。以下代码基于本文中的 java程序

当我从 sbt 运行或构建一个 jar 时,这工作正常。我无法让代码从 jsvc 运行。例如,如果我运行:

我将在 stderr 上获得以下信息

我不明白它正在寻找的方法 init(Array[String]) 发生了什么。scalac 编译主类的方式是否导致代码与守护进程接口不兼容?

谢谢!

0 投票
1 回答
1220 浏览

java - 如何使用procrun将documents4j服务器独立安排为Windows服务?

我一直在尝试将documents4j安排为windows服务,使用procrun进行RTF到PDF的转换,但它一直抛出以下错误:

我为 procrun 创建了以下 bat 文件

我能够成功地将 jar 安装为 Windows 服务并启动/停止它

此外,当类 com.documents4j.standalone.StandaloneServer 通过命令行执行时,转换会正确发生。

0 投票
3 回答
1063 浏览

jetty - 使用 Apache Commons Daemon 配置 Tika Windows 服务

我正在尝试使用 Apache Commons Daemon 让 Tika JAXRS 作为 Windows 服务运行。

我有来自http://tika.apache.org/download.html的 tika-server-1.7.jar

我已经从http://commons.apache.org/proper/commons-daemon/binaries.html为 Apache Commons Daemon 下载了 v1.0.15 的 Windows 二进制文件

我可以让 Tika 作为服务启动,但我无法确定停止方法使用什么。

这开始了,并且按我希望的那样工作,但是当试图停止服务时它没有响应。显然org.apache.tika.server.TikaServerCli.main(string[] args)不是一个合适的停止方法,但我迷失了替代方案。

我也欢迎任何让 Tika 作为 Windows 服务运行或在交互式会话之外自动启动的替代方法。

0 投票
1 回答
6969 浏览

java - 如何将守护程序实现设置为 Windows 服务

我没有找到任何关于如何将实现org.apache.commons.daemon.Daemon接口的类注册为 Windows 服务的非常好的示例(实际上我没有找到一个示例)。

我是否必须使用 procrun 注册此实现?但是,实现接口似乎没有意义,因为 procrun 可以将任何程序注册为 Windows 服务。

此外,procrun 页面上似乎有一个文档错误(http://commons.apache.org/proper/commons-daemon/procrun.html):

--StartMethod参数说明如下:

注意:在 jvm 模式下,在调用 stop 方法之前,start 方法不应返回。

但在“在 jvm 模式下使用 Procrun”部分的页面下方:

注意,处理服务启动的方法应该创建并启动一个单独的线程来进行处理,然后返回。start 和 stop 方法是从不同的线程调用的。

我读错了还是有点矛盾?静态 start(String[] args) 方法的正确行为是什么?

此致