Създаване на windows услуга за 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 Files\Java\jdk1.7.0_67\jre\bin\rmiregistry.exe -J-Djava.rmi.server.useCodebaseOnly=false 11100"

Но при стартиране на тази услуга получавам изскачащ текст

„Грешка1053: услугата не отговори навреме на заявка за стартиране или управление.“

Някой може ли да каже къде сбърках?


person User Number 1    schedule 16.01.2015    source източник


Отговори (2)


Не можете да използвате произволен .exe като услуга на Windows. Има специални изисквания. Трябва да използвате Windows Service Wrapper, който можете да изтеглите от Microsoft.

person user207421    schedule 17.01.2015

Знам, че отговорът ми на този въпрос е закъснял, но може би ще помогне на други, които имат същия въпрос.

За да инсталирате RMI като услуга на Windows, можете да използвате Procrun на Apache (prunsrv). С Apache Procrun не е необходимо да изтегляте нищо от Microsoft. Не е необходимо да изтегляте нищо друго. Използвал съм това много време за настройване на услуги на Windows и обвиване както на Java, така и на други exe програми като собствени услуги на Windows. Разгледайте: https://commons.apache.org/proper/commons-daemon/procrun.html

Следното е пример за това как RmiRegistry.exe може да се изпълнява като собствена услуга на Windows с помощта на procrun.

  1. За да стартираме регистъра на RMI, ние използваме програмата RmiRegistry.exe.
  2. За да спрем регистъра на RMI, ние използваме програмата Windows TaskKill.exe

В командния прозорец дайте следните команди:

За да инсталирате 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.

За да тествате или стартирате собствената услуга на Windows RmiRegistry.exe на преден план (след като бъде инсталирана)

%svcBaseDir%\bin\prunsrv64 //TS//RmiRegistrySvc

За да деинсталирате и премахнете родната услуга за Windows RmiRegistry.exe от Windows

%svcBaseDir%\bin\prunsrv64 //DS//RmiRegistrySvc

Обърнете внимание, че използвате 64-битовия prunsrv само за 64-битови сървъри/компютри, докато 32-битовия prunsrv може да се използва както за 32, така и за 64 сървъри/компютри.

Преименувах изтегления prusrv.exe на prusrv64.exe за използване на всички 64-битови машини. Това ми помага да правя разлика между 32-битовата и 64-битовата версия на помощната програма prusrv.exe.

person Mody    schedule 15.03.2018