为RMI注册表创建Windows服务

时间:2015-01-16 13:28:54

标签: java windows service registry rmi

我想创建一个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:服务未响应启动或控制请求   及时的时尚。"

谁能告诉我哪里出错?

2 个答案:

答案 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本机服务运行的示例。

  1. 要启动RMI注册表,我们使用RmiRegistry.exe程序。
  2. 要停止RMI注册表,我们使用Windows TaskKill.exe程序
  3. 在命令窗口中输入以下命令:

    将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位版本。