![](/img/trans.png)
[英]Installing jboss-as-7.1.1.Final as a Windows Service using Apache Commons Daemon (prunsrv.exe)
[英]prunsrv.exe Service not starting up
我正在嘗試使用 prunsrv.exe 為應用程序安裝和啟動服務
我可以安裝該服務,但該服務無法啟動並出現錯誤
另外以下是用於使用prunsrv.exe安裝服務的配置
set SERVICE_NAME=TestService
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\logs
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_LOGLEVEL=INFO
REM Path to java installation
set PR_JVM=C:\Program Files\Java\jre1.6.0_04\bin\client\jvm.dll
set PR_CLASSPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\temp.jar;
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=java
set PR_STARTCLASS=Trys.AppLauncher
set PR_STARTMETHOD=start
REM Shutdown configuration
set PR_STOPMODE=java
set PR_STOPCLASS=Trys.AppLauncher
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=64
set PR_JVMMX=128
set PR_JVMSS=4000
REM Install service
prunsrv.exe //IS//%SERVICE_NAME%
上面的config打包成批處理文件執行安裝服務
也沒有生成日志文件,因為我什至無法調試。
請告訴我哪里出錯了
一個可能的問題是使用錯誤的prunsvr.exe
。 對於64位Java安裝,使用amd64/prunsvr.exe
,針對32位的java安裝,使用/prunsvr.exe
在commons-deamon-xxx-bin-windows.zip文件。
這可能是很多事情。 首先檢查日志。 默認是在...
%SystemRoot%\\System32\\LogFiles\\Apache
從那里你應該能夠得到一個更具體的錯誤。 例如,類路徑、Java 路徑或其他一些無效的選項。
如果您是從服務管理器而不是命令行啟動服務,則需要在注冊表中設置 CLASSPATH、JAVA_OPTS 等。 從這里:
基本服務定義在注冊表項下維護:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>
其他參數存儲在注冊表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\ProcRun 2.0\<ServiceName>\Parameters
在 64 位 Windows 上,procrun 始終使用 32 位注冊表視圖來存儲配置。 這意味着參數將存儲在:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\ProcRun 2.0\<ServiceName>
此錯誤的原因是我沒有將prunsrv.exe
重命名為TestService.exe
。 同樣,Prunmgr.exe 必須是 TestServicew.exe。
重命名這些文件非常重要。
我能夠在本地計算機上運行該服務,但在運行 Windows 2012R2 的 VM 上出現相同的錯誤。
這個問題是由兩個原因引起的:
在 VM 上,我使用 JDK 安裝而不是簡單的 JRE,並且 JAVA_HOME 指向 JDK bin 文件夾。 我不得不將 --Jvm 參數從“auto”更改為位於 JRE 子文件夾中的實際 jvm.dll 文件。
盡管我更改了 --Jvm 設置,但該服務在啟動時仍然顯示錯誤。 我還必須使用 prunsrv.exe 的 amd64 版本來解決該問題。
我在我的筆記本電腦上遇到了同樣的問題,但它在其他具有相同配置的筆記本電腦上工作。
我檢查了%SystemRoot%\\System32\\LogFiles\\Apache\\commons-daemon.log
。 我發現以下錯誤缺少 Image File ,
然后我發現我們需要在所有參數上加上雙引號。 在你的例子中,如果你嘗試
pushd %CD%
下面試試這個。
"prunsrv.exe" //IS//%SERVICE_NAME%
--Startup="%PR_STARTUP%"
--Jvm="%PR_JVM%"
--Classpath="%PR_CLASSPATH%"
--StartMode="jvm"
--StopMode="jvm"
--StartClass="%PR_STARTCLASS%"
--StartMethod="%PR_STARTMETHOD%"
--StopClass="%PR_STOPCLASS%"
--StopMethod="%PR_STOPMETHOD%"
示例示例http://www.eclipse.org/jetty/documentation/current/startup-windows-service.html
如果有人覺得它有幫助。
我有同樣的問題“傳遞給系統調用的數據區域太小”。
這是因為程序在 StartMode=jvm 中找不到 jvm.dll。
解決方案:一切都取決於您的StartMode
:
--StartMode
是jvm
:--jvm
參數指定為jvm.dll
路徑--StartMode
是java
或exe
:--jvm
參數設置為auto
(您的程序將作為名為java.exe
單獨進程啟動)只是將它與我的設置腳本進行了比較,我看到的唯一直接的事情是你應該讓你的內存設置看起來像
REM JVM configuration
set PR_JVMMS=64m
set PR_JVMMX=128m
set PR_JVMSS=128m
順便說一句,JRE 1.6.0_04 有點過時了......
HTH陀螺儀
我遇到了同樣的錯誤,但我所要做的就是以管理員身份運行腳本(在 Windows Server 2012 上)......顯然 Windows 2012 上的權限系統已更改:例如。 在 Windows Server 2008 上沒有發生此錯誤(相同的腳本)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.