Problema

Siguiendo nuestra documentation para crear Windows Service, puede notar que el servicio inicia su instancia de JBoss como se esperaba, pero no la apaga. El servicio se muestra como "Stopping" y la única opción es matar el proceso Java.exe.

La siguiente excepción se devuelve en el archivo de registro:

Failed to connect to the controller

org.jboss.as.cli.impl.CliLauncher.initCommandContext(CliLauncher.java:284)

org.jboss.as.cli.impl.CliLauncher.main(CliLauncher.java:250)

org.jboss.as.cli.CommandLineMain.main(CommandLineMain.java:34)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

java.lang.reflect.Method.invoke(Unknown Source)

org.jboss.modules.Module.run(Module.java:292)

org.jboss.modules.Main.main(Main.java:455)

localhost:9999

at org.jboss.as.cli.impl.CommandContextImpl.tryConnection(CommandContextImpl.java:969)

at org.jboss.as.cli.impl.CommandContextImpl.connectController(CommandContextImpl.java:808)

at org.jboss.as.cli.impl.CommandContextImpl.connectController(CommandContextImpl.java:784)

at org.jboss.as.cli.impl.CliLauncher.initCommandContext(CliLauncher.java:282)

... 8 more

java.io.IOException: java.net.ConnectException: JBAS012174: Could not connect to remote://localhost:9999. The connection failed

Solución

El error indica que JBoss no puede conectarse a la interfaz de administración cuando se apaga:

java.io.IOException: java.net.ConnectException: JBAS012174: Could not connect to remote://localhost:9999. The connection failed

Esta interfaz se configura en el "Standalone.xml" (Standalone) o "Domain.xml" (Cluster):

<interfaces>

    <interface name="management">           

        <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>

    </interface>

    <interface name="public">

        <inet-address value="${jboss.bind.address.management:x.x.x.x}"/>

    </interface>

     <interface name="unsecure">

        <inet-address value="${jboss.bind.address.unsecure:127.0.0.0}"/>

    </interface>

<interfaces/>

Además, el socket nativo de administración se configura en la siguiente sección:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">

    <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>

    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>

    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>

<socket-binding name="ajp" port="8009"/>

...

</socket-binding-group>

Si utiliza la instancia preconfigurada de JBoss, las secciones anteriores deben configurarse manualmente. Los pasos de configuración están disponibles en el siguiente link.

Una alternativa es reinstalar el servicio usando los siguientes comandos:

service uninstall

service.bat install /startup /controller=192.168.0.1:9999 /config standalonecustomized‐1.xml