Problema

Seguendo la nostra documentazione per creare un servizio Windows, si può notare che il servizio avvia l'istanza JBoss come previsto, ma non riesce a chiudere l'istanza. Il servizio è mostrato come "Stopping" e l'unica opzione è terminare il processo Java.exe.

La seguente eccezione viene restituita nel file di log:

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

Soluzione

L'errore indica che JBoss non è in grado di connettersi all'interfaccia di gestione quando in fase di disattivazione:

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

Questa interfaccia è configurata in "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/>

Il socket nativo di gestione è poi configurato nella sezione seguente:

<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>

Se si utilizza l'istanza JBoss pre-configurata, le sezioni di cui sopra devono essere configurate manualmente. Le fasi di configurazione sono disponibili al seguente link.

Un'alternativa è quella di reinstallare il servizio utilizzando i seguenti comandi:

service uninstall

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