Solución:
¡No use ningún espacio en blanco en el nombre del servicio!
Después de muchas horas de probar y desmontar Tomcat y duplicar su proceso de arranque, la solución a mi problema terminó siendo que Apache Commons Daemon (Procrun) no funciona correctamente cuando hay espacios en blanco en el nombre del servicio de Windows.
Aparentemente, instala y registra correctamente un servicio con Windows cuando hay espacios en el nombre del servicio. Las entradas del registro de Windows incluso parecen correctas. El servicio incluso se ejecuta en modo de depuración (también conocido como TS o consola) sin problemas. Sin embargo, cuando se ejecuta como un servicio real lanzado por Windows, falla si el servicio se instaló con un espacio en blanco en el nombre del servicio.
¡Seguro que desearía que Procrun tuviera algún tipo de salida de registro cuando falla! Un buen registro puede hacer que problemas de depuración como este sean muy sencillos.
Necesitaba tener varias palabras en el nombre de mi servicio, así que nombré mi servicio con una palabra y cambié el nombre con el parámetro “DisplayName”:
> prunsrv.exe //IS//MyService --Install="C:path-to-prunsrv.exe" --Jvm=auto
--Startup=auto --StartMode=jvm --Classpath="C:path-to-MyService.jar"
--StartClass=com.mydomain.MyService --DisplayName="My Service"
Quería dar información adicional sobre lo que decía ‘11101101b’ anteriormente. (Esta es mi primera publicación, ¡así que sea amable!)
Pude hacer que el servicio se instalara correctamente con espacios en el nombre del servicio cambiando el // ES // MiServicio parte de su mandato para ser en cambio lo siguiente, que sospecho que es lo que también hizo. (Pido disculpas si asumo incorrectamente.) Observe que la comilla doble de apertura está al principio de la cadena en lugar de al principio del nombre del servicio.
“// ES // Mi servicio”
Como fue su caso, el servicio se instaló correctamente y parecía correcto, pero no se iniciaba. Pude evitar eso cambiando la configuración de datos del valor ImagePath del servicio en el registro para tener el mismo cambio para el // RS // Mi servicio parte del comando. Por lo tanto, el valor del registro en su lugar tenía lo siguiente en su configuración de datos:
“// RS // Mi servicio”
Todo parece funcionar sin problemas.