问题标签 [jsvc]
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.
java - Daemonizing java application with JSVC
I'm trying to daemonize my application using Apache Commons Daemon using the Daemon interface. Java application it self isn't doing anything just writes to stout.
I compiled jsvc: http://people.apache.org/~mturk/daemon-1.0.10/
(even tried newest version: http://people.apache.org/~mturk/daemon-1.0.12/ )
and wrote this basic script.
Now when I try to stop the daemon when it's not running I'll get response code 255. Thas fantastic.
But when I try start the daemon when it's already running I get response code 0. But in my errfile I find:
Same thing when I try throw exception in start() method and attempt to start daemon, response code 0. But errfile:
What I'm missing here? How can I inform user stat the deamon didn't start or that it is already running?
java - 让 jsvc 在 OSX 上运行
我正在尝试重现这篇文章中编写的代码:
没有花哨的 bash 脚本。
我创建了罐子。这是我正在运行的命令:
现在......这绝对没有任何作用。没有任何输出。我什至用脚本尝试过。又没有输出了。而且由于 jsvc 根本不会抛出任何类型的错误,我不知道问题是什么。
我什至尝试使用-server
或运行它sudo
。然后我可以看到它出现在进程下,但它仍然什么都不做。详细信息也不做任何事情并且JAVA_HOME
配置正确。
任何线索/想法?有人在 OSX 下做过这项工作吗?
编辑:
日志记录是系统输出,根据该帖子和 jscv 的手册应在输出文件中捕获。
是的,我确实尝试设置错误文件。再一次没有运气,它甚至没有被创造出来。
我试着给它一个用户。并且代码与链接问题中的代码完全相同,这就是为什么我没有将这张票弄乱的原因。
我编译了我的 jsvc 并且没有安装 tomcat。
java - 在 jsvc 类路径中使用多个 jar
我正在尝试使用 jsvc 让 Java 应用程序作为 Linux 服务运行。我发现如何使用 jsvc 将 java 程序转换为守护进程?这能够让我大部分时间,但我仍在努力弄清楚类路径。
我收到以下错误到 stderr:
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 识别清单?
java - 如何让 Jsvc 找到 DaemonLoader?
我commons-daemon-x.jar
在classpath
. Jsvc正在成功启动 Java VM。但是jsvc
报告它无法找到守护程序加载程序类,即使它位于classpath
.
有谁知道如何解决这个问题?我正在运行 Mac OS X 10.8.3。谢谢。
jsvc
这是调试输出的摘录:
如果有帮助,这是完整的调试输出:
java - JSVC 无法注册本机方法
我正在尝试创建一个将在用 Java 编写的 Ubuntu Linux 中运行的服务。我的可执行 Jar 文件是一个大的胖 Jar 文件,其中包含所有依赖项。当我尝试使用 JSVC 运行它时出现以下错误。
杀死我的是“无法注册本机方法”行。这是什么意思,我该如何解决?
我正在使用 Eclipse IDE 用 Java 编写我的应用程序,我使用 apt-get (1.0.10-3) 安装了最新版本的 JSVC。我的 commons.daemon 库版本是 1.0.1。我的启动脚本如下。
java - 是否可以在 JSVC 中启用端口以进行远程调试?
我正在运行一个运行良好的 jsvc 应用程序,但现在我需要在我的应用程序上启用一个端口,以便我可以进行远程调试。我正在使用 java 执行上述任务。
有什么办法可以完成上述任务吗?我检查了所有 JSVC 选项http://commons.apache.org/proper/commons-daemon/jsvc.html但没有找到任何东西。
这是添加jsvc参数的代码:
私有列表 getJSVCArgs(){ 列表 jsvcArgs = new ArrayList(); jsvcArgs.add(jsvcDir+"/jsvc"); jsvcArgs.add("-pidfile"); jsvcArgs.add("pidfile.pid"); jsvcArgs.add("-outfile"); jsvcArgs.add("outfile.txt"); jsvcArgs.add("-errfile"); jsvcArgs.add("errfile.txt"); jsvcArgs.add("-wait"); jsvcArgs.add(String.valueOf(jvmProperties.get("-wait"))); jsvcArgs.add("-user"); jsvcArgs.add(System.getProperty("user.name")); jsvcArgs.add("-home"); jsvcArgs.add(System.getProperty("java.home")); 返回 jsvcArgs;}
现在我需要将这个“-agentlib:jdwp=transport=dt_socket,address=8001,server=y,suspend=n”传递给 JSVC。任何人都知道如何实现它?
java - Java GetResourceAsStream NullPointerException
我有一个 jar,我通常在 .sh 脚本中使用 jsvc 启动器作为守护进程运行。现在我创建了一个新的入口点,它需要检查一些事情并在控制台上返回一个输出,所以在同一个 .sh 脚本中,我根据参数进行了切换,以作为守护进程或作为标准 Java 应用程序运行。sh 与此类似:
只有以“check”标志开头时,我的 core.jar 才能读取我的 core.properties 文件,代码为:
例外是:
我的文件夹结构是这样的:
我的 jar 清单如下:
我看到包含 conf 目录,但我不知道 ./conf/ 是否包含该目录中的所有文件。我应该怎么做才能使属性文件作为守护进程和标准 jar 可读?
谢谢
java - 作为 jsvc 运行的 Java 应用程序比 Heap+PermGen 使用更多的内存
我有以下服务器:
- Ubuntu 服务器 12.04 LTS 64 位
- 没有 GUI,只有命令行
- 4GB 内存
- 2个核心
- 除了 Nagios NRPE 和 Webmin 之外,没有其他任何东西在运行
- vm.swappiness = 0
这里没什么特别的,运行一个 Java 应用程序:
- 使用 jsvc 作为守护进程运行 24/7
-Xmx2500M
-XX:+UseConcMarkSweepGC
- 未进行其他设置
- 使用 OpenJDK 7
- 启用 JMX 服务器,并由 nagios 每分钟检查一次
但是,这不应耗尽所有内存并导致 java 应用程序无法通过 JMX 响应 nagios。
为什么这会耗尽我所有的内存并创建 SWAP?
java - 从另一个 jar 文件访问资源
我有一个简单的结构:一个包含一批数据的数据 jar 文件和一个使用数据运行服务的服务 jar 文件。为了使数据易于替换,我将它们分开,并且 service.jar 的类路径包含 data.jar 所在的目录。
在 service.jar 中,我使用 getResource 来加载数据文件。如果数据文件直接在文件夹中,则此方法有效,但在 data.jar 中时失败;
这失败了:
但这有效:
我不想更改类路径(除非我可以将其更改为不依赖于数据 jar 文件名称的通用名称),但我可以更改 getResource 字符串(我尝试过 /data /mine.properties 和 /data.jar/mine.properties 无济于事)。我可以进行更改以便可以从 jar 中加载资源吗?
java - 使用 Commons Daemon / JSVC 启动多个 Java 守护程序实例
我已经使用 Commons Daemon / JSVC 库守护了一个 Java 程序,并且能够成功启动/停止我的服务的一个实例。我真正需要做的是能够启动我的服务的多个实例,使用不同的命令参数启动和停止每个实例。
可能与这个问题无关,但有一点背景.. 我的服务包含一个绑定到特定端口的 HTTP 侦听器。每个实例将被初始化以侦听不同的端口。
我的问题是我无法使用 Commons Daemon 提供的内置功能启动我的 Java 类的多个实例。也许我错过了一些东西。我是一名长期的 Windows/C# 开发人员,但对 Java/Linux/Shell 脚本编写相对较新。
下面是启动 JSVC 进程和启动/停止我的守护进程的 shell 脚本。这是我在本网站的另一篇文章中找到的,稍作修改。它通过我的守护程序需要的一些命令参数,我从指定这些参数的单独启动和停止脚本调用这个 sh 脚本。
如果在 JSVC 中无法启动多个唯一 Java 类的实例,还有什么替代方法?我需要一种安全稳定的方式来启动该服务的多个实例(我将使用 SSH 以远程和编程方式执行此操作),并且每个实例都需要在完成后正常关闭,因为它们绑定到 TCP 端口。