Details
Description
< Update . The reason the stop fails is because the start hasn't finished. Prunsrv isn't waiting for the start to finish. So in the Windows services panel, the service appears to be started. If you then click stop, it hangs for a few minutes and fails to stop. The state at this point in the Windows services is "Stopping". So you have to manually stop the process. >
When Prunsrv is used to register Open Liberty (https://openliberty.io) as a Windows Service, stopping the service hangs randomly.
To recreate the problem:
1) Download open liberty ~300MB
https://public.dhe.ibm.com/ibmdl/export/pub/software/openliberty/runtime/release/22.0.0.10/openliberty-22.0.0.10.zip
Alternatively, you could use just the liberty kernel ~10MB
2) md C:\temp\openliberty
unzip openliberty-22.0.0.10.zip into C:\temp\openliberty
3) cd C:\temp\openliberty\wlp\bin
4) Run these two commands to make sure the server runs and to initialize the environment:
server start
server stop
5) Register liberty as a service (parameter is case sensitive). The following command is used to invoke prunsrv to register the service using the default name of defaultServer
server registerWinService
6) Open the windows "services" app (services.msc). Start and stop the service until the stop hangs. It usually doesn't take more than a couple of tries.
Details
The server.bat script registers the service like this:
"C:\temp\openliberty\wlp\bin\tools\win\prunsrv.exe" //IS//defaultServer --Startup=manual --DisplayName="defaultServer" --Description="Open Liberty" ++DependsOn=Tcpip --LogPath="C:\temp\openliberty\wlp\usr\servers\defaultServer\logs" --StdOutput=auto --StdError=auto --StartMode=exe --StartPath="C:\temp\openliberty\wlp" --StartImage="C:\temp\openliberty\wlp\bin\server.bat" ++StartParams=start#defaultServer --StopMode=exe --StopPath="C:\temp\openliberty\wlp" --StopImage="C:\temp\wlp\bin\server.bat" ++StopParams=stop#defaultServer --ServiceUser=LocalSystem
After registering the service you can look at its properties. You will see:
Path to executable:
C:\temp\openliberty\wlp\bin\tools\win\prunsrv.exe //RS//defaultServer
When I (and many of our customers) try to stop the service, it hangs. At that point, the server, named defaultServer is still up and running. I can send commands to the server. For instance, I can execute a "server dump" command. This sends the "dump" command to the server, and the server writes information to a file. I can also stop the server by executing "server stop". This sends the "stop" command to the server which causes the server to stop. When the server stops, the hanging Windows service stops as well.
I have attached a server.bat which adds --LogLevel Debug to the prunsrv commands and also commons-daemon.2022-09-28.log which demonstrates the problem. It shows registering, starting, and stopping the service. Finally, I uploaded commons-daemon.2022-09-28_afterKillingServer.log, which is a continuation of the other log file which shows the result of issuing the server stop command to stop the server.
Thanks for looking at this.
Jim Blye