问题标签 [procrun]

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 回答
684 浏览

java - 使用 procrun 检查服务是否正在运行

我正在使用prunsrv创建 Windows 服务。我想问你是否可以查询一个进程的状态(如果它正在运行,是否已停止)或者一个进程是否存在。我还想用 Java 程序读取 pid 文件的内容。

0 投票
1 回答
499 浏览

java - 在 Linux 机器上配置 procrun?

我对 procrun 很陌生。请问,任何人都可以建议如何使Java应用程序作为Windows服务运行吗?如果可能,一步一步来。

0 投票
1 回答
921 浏览

java - Apache Procrun - 停止命令不起作用

我遇到了“Apache Deamons Procrun”软件的问题。start 命令效果很好,可以启动程序。停止命令总是说“无法找到或加载主类”,除了停止命令启动的类与启动程序的类相同。停止命令所做的只是将控件放入程序正在监视的文件夹中。

procrun 是否足够聪明,可以知道如果 java 进程结束,它也会关闭?我有时也有一些问题。

谢谢,

0 投票
2 回答
10754 浏览

java - apache procrun 无法启动服务

编辑

我正在使用 loaderDeamon 接口来安装和运行 Java 应用程序作为 Windows 服务。为此,Apache 的 procrun 服务工具(与 tomcat 安装的工具相同)处理服务的安装和执行。

最近通过服务管理器执行服务时,服务声称正在运行,但没有响应。没有写入日志,应用程序的客户端无法通信。这让我觉得该服务实际上并没有运行。

我试图通过 procrun 通过 //TS 命令启动服务,如下所述:http://commons.apache.org/daemon/procrun.html,即使我们等待,它也会挂起并且没有启动服务到 24 小时。procrun 本身会生成我们捕获的日志。完整的日志包含在下面。我有几个关于日志的问题,希望能弄清楚服务无法启动的原因。

  1. 首先,“Java Worker thread finished... start with status=6”在线程终止时表示什么?
  2. 其次,当我们到达“等待所有线程退出”行时,哪些线程仍在执行?
  3. 第三,日志中是否还有其他在启动服务时可能出现问题的突出内容?

该服务过去执行成功,最近升级到 java 版本 1.7.5 后失败。我恢复到 java 1.7.3 生效,所以我相信 jvm 的变化是无关的,尽管值得一提。

我采取的步骤没有效果:

  1. 使用调试在控制台上运行服务
  2. 指定 java SE 版本 1.7.5、1.7.3
  3. 只使用默认的 jvm 1.6.30,不指定它
  4. 广泛的谷歌工作

任何帮助或想法表示赞赏!谢谢!

0 投票
1 回答
1942 浏览

log4j - Procrun 和 log4 配置

我正在procrun为我的 java 进程启动 Windows 服务。我可以启动服务,但我设置的 log4j 配置似乎不起作用。这是我在创建的stderr文件中看到的procrun

这是我指定的用于安装服务的命令:

%INSTALL_SERVICE_CMD% //IS//SERVICEAGENT --DisplayName="DispName" --Install=%SERVICE_EXE_HOME%\prunsrv.exe --LogPath=%INSTALLER_HOME% --LogLevel=Info --StdOutput=auto --StdError=auto --StartMode=Java --StopMode=Java --Jvm=auto --Startup=auto --JvmMx=512 ++JvmOptions=-XX:MaxPermSize=128m --StartPath=%START_CLASS_PATH%\ --Classpath=%CLASSPATH%;MyJar.jar --StartClass=com.jar.aa.MainEntry --StopClass=com.jar.aa.ExitEntry ++StopParams=--stop ++JvmOptions=-Dfile.encoding=UTF8 ++JvmOptions=-Dlog4j.configuration=log4j.properties ++JvmOptions=-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

我将我的 log4j 属性放置在与此安装脚本相同的目录中。

谁能告诉我我可能会错过什么?任何帮助将不胜感激。

谢谢,

0 投票
1 回答
8838 浏览

java - Apache daemons procrun prunsrv Windows exe 模式不工作

几年来,我们一直在使用 Procrun 将 Java 应用程序转变为服务(并且没有问题)。
我们还有一些作为服务运行的原生 Windows 可执行文件。到目前为止,我们使用 Windows Management Instrumentation (WMI) 来定义这些,但我现在正尝试将 Procrun 用于这些本机 exe ......不幸的是,我无法启动服务(或至少保持跑步)。
服务似乎正确创建;Prunsrvlog/stdout/stderr 不包含错误;Apache/procrun 和 system/Services 下的注册表项似乎都可以创建;我可以使用 Windows 服务小程序或 Prunmgr 监视器查看服务;但是...服务从未显示为已启动。当我尝试从 Prunmgr 手动启动服务时,我收到“...正在尝试启动”弹出窗口几秒钟,但服务仍然停止。
当我尝试从 Win Services 小程序启动它时,我还得到一个弹出窗口:服务启动和停止。如果不使用某些服务会自动停止”。

我自己找到了大部分解决方案:
我不知何故弄乱了我的本机测试程序,它总是与 Windows 服务控制器交互......使用 Procrun 时,您的本机程序不得(取消)向 Windows 服务控制器注册自己,因为这是由 Procrun 自己处理的。更正我的测试服务后,我可以使用 Procrun 服务启动和停止它。

...但仍有几个问题:

  1. 我发现一些命中说明serviceName不能包含空格,但我也(痛苦地)发现displayName在将 Procrun 用于本机可执行文件时不能包含空格。如果displayName包含空格, Windows 服务小程序中的“属性”页面将拒绝打开。我不知道这可能是什么原因,这在使用 Java 应用程序时不适用。

  2. 即使您将服务设置为自动启动(例如 via set PR_STARTUP=auto),“本机”服务也不会在您启动时启动install,它需要明确的启动命令(例如bin\TestService start)(但“本机”服务将在每次重新启动时自动启动) ...这在包装 Java 应用程序时再次不适用...这些在安装时自动启动。

最后一点建议:当使用set PR_xxx=格式来定义服务的参数时,通常不能引用包含空格的值......对于一些更有经验的人来说这可能不言而喻,但我遭受了相当多的痛苦这个 :-(

这篇长文的其余部分主要是为了历史(或罕见的感兴趣的个人)

定义服务的代码:

正如我后来发现的那样,不要忘记添加:

commons-daemon.log 中的结果:

TestService stdout/stderr 都只包含一行“stdout/stderr initialised”
ProcRun 下的注册表项:

在 SYSTEM\Services 下:

我已经尝试了几乎所有我能想到的东西,但我无法让服务运行:-(
还有两个评论:
1.我最初在DisplayName中有空格。直到我用下划线替换它们之前,我无法在 Windows 服务小程序中打开“属性”页面!!!

2. 本机 exe 具有向Windows 服务控制器注册的代码(主要是在 Windows 关闭时启用干净终止)。如果名称为可执行文件以“ d.exe ”结尾(不区分大小写)。我尝试对 StartImage 使用两种形式(即 TPShmSrvD.exe 和 TPShmSrv.exe)但无济于事......

任何帮助将不胜感激,

尤尔

0 投票
1 回答
1937 浏览

java - 如何优雅地关闭 procrun?

在 Windows XP 32 位平台上使用Apache commons daemon - procrun运行 Java 应用程序时,如何优雅地停止服务?

我已阅读procrun文档并在注册服务时设置了 120 秒的超时时间。这没有按预期工作。Windows 无需等待上述时间段即可关闭。

在互联网上搜索时发现 Windows 服务有一个结构,它包含在procrun中。

现在的问题是如何使用 procrun 使服务接受关闭?

仅供参考:使用以下三种方式中的任何一种停止服务都是优雅的

  1. 网络停止服务名称
  2. 服务名称.exe 停止
  3. 服务.msc
0 投票
1 回答
5302 浏览

java - JVisualVM 无​​法使用 --openpid 参数连接到进程

我有一个作为 win 服务运行的应用程序(使用Apache-Procrun)。我想用 JVisualVM 监控那个应用程序。我使用命令行参数--openpid <PID>没有成功,具有讽刺意味的是,旧的 JConsole 设法连接到该应用程序。

JVisualVM 与 JConsole 0:1

我还检查了 JVisualVM-故障排除指南%TMP%\hsperfdata_username中描述的 -Directory 的所有问题。一切都很好。

如何让 JVisualVM 监控我的应用程序?

0 投票
2 回答
1306 浏览

java - 使用 Apache procrun 接收 NoClassDefFoundError(Eclipse 生成的 jar)但在命令行上运行良好

我已将我的应用程序从 Eclipse 导出为一个大包,因此它使用 Eclipse 加载程序。我已经使用 install.bat 文件通过 procrun 安装了它,最重要的几行如下所示:

显然还有更多,并且服务确实运行。在 ECGIServer.jar 文件中,这是 Manifest 文件:

有更多的 jar 可以列出,但要写的太多了。无论如何,当我在命令行运行它(ECGIServer.jar)时,它工作得很好。当我将它作为服务运行时,它会一直运行,直到我尝试创建 LunaProvider 的实例。一旦应用程序创建了 LunaProvider 的实例,我得到:

如您所见,LunaProvider 是一个 ThridParty 库,它刚刚从我的 Eclipse 设置中引入。

0 投票
4 回答
571 浏览

java - 不支持的major.minor版本java作为带有procrun的windows服务

我正在尝试将我的 java 应用程序作为 Windows 服务运行。我按照这里所说的做了:http: //web.archive.org/web/20090228071059/http ://blog.platinumsolutions.com/node/234

http://commons.apache.org/daemon/procrun.html

我得到了这个例外: