Java

Habilitar o acesso remoto no Wildfly

Esse tutorial irá mostrar como habilitar o acesso remoto no Wildfly, de modo que você possa gerenciar seu servidor de aplicação remotamente.

O Problema

Acredito que qualquer um esteja acostumado a instalar o Wildfly em um computador local com uma interface gráfica e navegadores de internet disponíveis. Deste modo, quando você precisa acessar a página administrativa do seu Wildfly através do link http://localhost:8080/ para gerenciar seu servidor de aplicação, tudo funciona como esperado.
Porém, se o Wildfly estiver rodando em um computador remoto e você tentar acessar sua página administrativa através da rede pelo seu endereço de IP ou hostname, como http://54.94.240.170:8080/ por exemplo, você provavelmente verá uma bela mensagem dizendo algo como Esta página da web não está disponível, em outras palavras, o Wildfly disse “Não, obrigado, eu não estou aceitando requisições de outros caras a não ser os que estão em minha máquina local”.

A Primeira Possível Solução

Pularemos direto para a solução mais rápida para habilitar o acesso remoto, mas você poderá encontrar a explicação de como e porque isso funciona ao final deste tutorial.

Antes de continuar, certifique-se de que a máquina que o seu Wildfly está executando está aceitando requisições TCP nas portas 8080 e 9990.

Se o seu Wildfly estiver executando, acesse seu diretório bin e execute os seguintes comandos para pará-lo:

cd /opt/wildfly-8.2.0.Final/bin
./jboss-cli.sh --connect --command=:shutdown

Em seguida, inicie seu Wildfly utilizando o comando abaixo, o qual adiciona os parâmetros que habilitam o acesso remoto a partir de qualquer origem (IP/hostname) à página administrativa.

./standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0 &

Pronto!

A Segunda Possível Solução

Como alternativa à adicionar parâmetros ao seu comando de inicialização, você pode editar seu standalone.xml para habilitar o acesso remoto à partir de qualquer origem. Essa abordagem é mais recomendada se você costuma acessar sua página administrativa com frequência, deste modo, você não precisará se lembrar de enviar parâmetros adicionais ao comando de inicialização, como mostrado anteriormente.

Primeiramente, acesse o diretório de configuração de seu Wildfly:

cd /opt/wildfly-8.2.0.Final/standalone/configuration

Em seguida, edite o arquivo standalone.xml utilizando seu editor de arquivos predileto e realize as alterações abaixo:
Substitua isso:

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

Por isso:

<interface name="management">
 <any-address/>
</interface>
<interface name="public">
 <any-address/>
</interface>

Certifique-se de gravar suas alterações e reinicie seu Wildfly:

/opt/wildfly-8.2.0.Final/bin/jboss-cli.sh --connect --command=:reload

Feito.

A Explicação

A breve história é que, devido à questões de segurança, o Wildfly não deseja expor seus serviços em portas que podem ser acessadas sem a devida autorização. Um destes serviços é o JMX, o qual é utilizado para gerenciar servidores Java através da porta 9990.
Por padrão, o JMX irá permitir apenas conexões originadas de seu local, como foi possível observar no arquivo standalone.xml. Para alterar este comportamento, você precisa permitir que outros hosts se conectem ao JMX, através de uma das soluções propostas.
Em ambientes de produção e por questões de segurança, tenha cuidado ao expor esse serviço, sendo recomendada a especificação de quais hosts confiáveis poderão acessar o serviço, ao invés de expô-lo a qualquer um, como fizemos neste tutorial.

Espero que ajude. Até mais!

bgasparotto

View Comments

  • Bom dia.

    Parabéns pela iniciativa, me ajudou bastante.. eu estava tendo um problema mesmo colocando os comandos, porém depois eu vi que tinha escrito o "address" errado..

    Valeu!!

  • Muito bom, bgasparotto! Funcionou perfeitamente aqui, foi uma mão na roda isso. Obrigado!

  • Obrigado, a segunda solução funciona perfeitamente no JBoss Application Server 8

      • Post muito bom, só que não conseguir fazer funcionar com nenhuma das opções, existe mais algum método ??

        • Você recebeu algum erro ou o servidor iniciou e você simplesmente continuou sem acesso? Você está utilizando uma versão superior do Wildfly? Se sim, qual?

          • Bom saber! Em breve irei atualizar o post para a versão 10. Obrigado!

Recent Posts

Python function decorator

This guide will show you how to create a Python function decorator with a few…

2 years ago

Got permission denied while trying to connect to the Docker daemon socket

This guide will show you how to fix the error Got permission denied while trying…

2 years ago

Python virtual environment on Intellij IDEA

This guide will show you how to create a Python virtual environment on Intellij IDEA…

2 years ago

Find and kill processes on Linux and Mac by port number

This tutorial will quickly show you how to to find and kill processes on Linux,…

2 years ago

Python: Relocation R_X86_64_PC32 against symbol can not be used when making a shared object Error

This guide shows a possible solution for Python error Relocation R_X86_64_PC32 against symbol can not…

2 years ago

Kubernetes useful commands

I condensed below a cheat sheet of Kubernetes useful commands. I will keep updating this…

2 years ago