我想创建一个Windows服务,用于在我的系统上启动RMI服务。我用来在cmd上运行它的命令是
C:\ Program Files \ Java \ jdk1.7.0_67 \ jre \ bin \ rmiregistry.exe -J-Djava.rmi.server.useCodebaseOnly = false 11100
我使用命令
使用windows sc.exe创建了一项服务sc.exe create registry_service binPath =" C:\ Program 文件\的Java \ jdk1.7.0_67 \ jre的\ BIN \ rmiregistry.exe -J-Djava.rmi.server.useCodebaseOnly = false 11100"
但是在启动此服务时,我会弹出一个说法
"错误105:服务未响应启动或控制请求 及时的时尚。"
谁能告诉我哪里出错?
答案 0 :(得分:0)
您不能将任意.exe用作Windows服务。有特殊要求。您需要使用Windows Service Wrapper,可以从Microsoft下载。
答案 1 :(得分:0)
知道我对这个问题的回答迟了,但也许会帮助那些有同样问题的人。
要将RMI安装为Windows服务,您可以使用Apache的Procrun(prunsrv)。使用Apache Procrun,您无需从Microsoft下载任何内容。您也不需要下载任何其他内容。我已经用这么多时间来设置Windows服务并将Java和其他exe程序包装为本机Windows服务。看看:https://commons.apache.org/proper/commons-daemon/procrun.html
以下是如何使用procrun将RmiRegistry.exe作为Windows本机服务运行的示例。
在命令窗口中输入以下命令:
将RmiRegistry.exe安装为本机Windows服务
set svcBaseDir="D:\nativeService"
%svcBaseDir%\bin\prunsrv64 //IS//RmiRegistrySvc ^
--DisplayName="RMI Registry Service" ^
--Install=%svcBaseDir%\bin\prunsrv64.exe ^
--StartMode=exe ^
--StopMode=exe ^
--StartImage=<java install dir>\bin\rmiregistry.exe ^
--StartParams=-J-Djava.rmi.server.useCodebaseOnly=false#11100 ^
--StopImage=C:\Windows\System32\taskkill.exe ^
--StopParams=/F#/IM#rmiRegistry.exe ^
--LogPath=%svcBaseDir%\logs ^
--StdOutput=auto ^
--StdError=auto ^
--LogPrefix=Native-JNI- ^
--LogLevel debug ^
--ServiceUser <your windows domain>\<service user name> ^
--ServicePassword <service password> ^
--Description="Runs the RMI Registry as a Windows Service" ^
--Startup=auto
set svcBaseDir=
当然 D:\ nativeService 只是一个任意的目录名。您可以选择任何驱动器上的任何目录。我正在使用以下目录结构用于此本机Windows服务器,但您可以使用您喜欢的任何内容:
D:\nativeService
|
---- bin
|
---- prunsrv64.exe
----logs
将RmiRegistry.exe作为本机Windows服务安装后,可以使用窗口的服务管理器启动,停止和重新启动它,就像任何其他本机Windows服务一样。
在前台测试或运行RmiRegistry.exe本机Windows服务(安装后)
%svcBaseDir%\bin\prunsrv64 //TS//RmiRegistrySvc
从Windows卸载并删除RmiRegistry.exe本机Windows服务
%svcBaseDir%\bin\prunsrv64 //DS//RmiRegistrySvc
请注意,您仅对64位服务器/计算机使用64位prunsrv,而32位prunsrv可用于32位和64位服务器/计算机。
我已将下载的prusrv.exe重命名为prusrv64.exe,以便在所有64位计算机上使用。这有助于我区分prusrv.exe实用程序的32位和64位版本。