O WildFly parou de responder às requisições e no log do WidlFly existem várias mensagens da seguinte forma:
[org.jboss.jca.core.connectionmanager.pool.strategy.PoolBySubject] IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: Could not create connection
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createLocalManagedConnection(LocalManagedConnectionFactory.java:347)
(...)
Caused by: java.sql.SQLException: The Network Adapter could not establish the connection
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412) [ojdbc-6.jar:11.2.0.1.0]
(...)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:359) [ojdbc-6.jar:11.2.0.1.0]
(...)
Caused by: java.net.ConnectException: A rede está fora de alcance
at java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.8.0_101]
(...)
Esse erro "A rede está fora de alcance" indica que houve alguma falha de rede e a conexão com o banco de dados foi perdida. Considerando que não tenha acontecido nenhum outro problema mais grave aparente, como banco de dados claramente fora do ar, esse erro pode ter acontecido devido à uma falha de hardware.
Para verificar se ocorreu algum problema com a conexão de rede no Linux, podemos seguir os seguintes passos em uma conexão ssh no servidor:
1. Verificar o nome da interface de rede associada ao servidor: comando ifconfig
Exemplo:
A coluna da esquerda é o nome do adaptador e e na direita são os dados da conexão.
2. Verificar no log do Linux se a interface foi desativada: comando grep "interface: Link" /var/log/messages*
Exemplo:
Nesse exemplo, podemos ver que a interface ficou desativada nos seguintes períodos:
15/01/2017 entre 16:54 e 17:15
26/01/2017 entre 09:13 e 09:22
08/02/2017 entre 18:55 e 19:02
Além disso, temos o nome do arquivo de log (por exemplo: /var/log/messages).
3. Sabendo que a interface foi desativada, podemos verificar o motivo: comando grep interface log
Com o nome da interface o arquivo de log, podemos verificar todas as mensagens relacionadas. Exemplo:
A parte mais importante aqui é a seguinte: (em1): deactivating device (reason: 40).
O log indica que a interface foi desativada devido ao código "40". Uma lista com uma explicação de cada código de erro pode ser consultada aqui: https://wiki.ubuntu.com/DebuggingNetworkManager/ReasonCodes. O código "40" indica que houve alguma mudança no link ("Carrier/link changed").
Existem alguns motivos para esse log:
É necessário que o cliente verifique essa situação com a equipe responsável pelo servidor.
Se o banco de dados estiver em um servidor separado não há o que fazermos, é necessário que o administrador do servidor/rede resolva esse problema com a interface de rede.
Se o banco de dados estiver no mesmo servidor do WildFly, deve-se verificar pelo console do WildFly se a configuração de conexão ao banco de dados está com o IP do próprio servidor, Exemplo de configuração:
Nessa situação, quando a placa de rede perder a conexão o WildFly não conseguirá conectar mais ao bando de dados (mesmo sendo banco de dados local). Nesse caso, o ideal é alterar a configuração da conexão para usar localhost (exemplo: jdbc:postgresql://localhost:5432/mca).