Я хочу создать службу 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"
Но при запуске этой службы я получаю всплывающее высказывание
"Error1053: служба не отвечала на запуск или запрос управления своевременно".
Может ли кто-нибудь сказать, где я ошибся?
Знайте, что мой ответ на этот вопрос запоздал, но, возможно, это поможет другим, у кого есть тот же вопрос.
Чтобы установить RMI в качестве службы Windows, вы можете использовать Apaches Procrun (prunsrv). С Apache Procrun вам не нужно ничего скачивать из Microsoft. Вам также не нужно скачивать что-либо еще. Ive использовал это много времени для настройки служб Windows и упаковки как Java, так и других exe-программ в качестве родных служб Windows. Взгляните на: https://commons.apache.org/proper/commons-daemon/procrun.html
Ниже приведен пример того, как RmiRegistry.exe может запускаться как родной сервис Windows, используя прокрутку.
В командном окне введите следующие команды:
Чтобы установить RmiRegistry.exe в качестве службы родных окон
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 на родном Windows на переднем плане (после ее установки)
%svcBaseDir%\bin\prunsrv64 //TS//RmiRegistrySvc
Удаление и удаление службы Windows RmiRegistry.exe из Windows
%svcBaseDir%\bin\prunsrv64 //DS//RmiRegistrySvc
Обратите внимание, что вы используете 64-разрядный prunsrv только для 64-битных серверов/компьютеров, в то время как 32-разрядный prunsrv может использоваться как для 32, так и для 64 серверов/компьютеров.
Ive переименовал загруженный файл prusrv.exe в prusrv64.exe для использования на всех 64-битных машинах. Это помогает мне различать 32-битную и 64-разрядную версии утилиты prusrv.exe.
Вы не можете использовать произвольный файл.exe в качестве службы Windows. Существуют особые требования. Вам необходимо использовать Windows Wrapper, который можно загрузить с Microsoft.