NEW

Imagem ilustrativa mostrando o logo do IntelliJ IDEA com destaque para o problema de perda de configurações ao trocar de branch, com chamada para solução rápida e definitiva.
Por que o IntelliJ perde configurações ao trocar de branch?

 

Quando você trabalha com Git dentro do IntelliJ IDEA, é comum alternar entre
branches ou até mesmo remover branches locais.

O problema é que, em muitos projetos Java, o IntelliJ armazena configurações específicas da branch dentro da pasta .idea — incluindo:

  • Versão do JDK usado

  • Configuração do Project SDK

  • Configuração de Linguagem (Java 8, 11, 17…)

  • Estrutura de módulos

  • Web settings (Spring Boot, Maven, WAR, etc.)

  • Code Style, inspeções e mapeamentos

Se essa pasta .idea ou o arquivo *.iml for alterado, sobrescrito ou removido, o IntelliJ “perde” todas as definições e abre o projeto como se fosse novo.

Isso explica por que ao remover ou trocar a branch, suas configurações somem.


A boa notícia: existem 3 formas de impedir que o IntelliJ apague configurações ao mexer nas branches.


No seu .gitignore, garanta que estes itens estejam excluídos:

Assim, suas configurações ficam locais, e não vão ser sobrescritas quando mudar de branch.

💡 Importante: o Maven e o IntelliJ irão recriar automaticamente o projeto quando necessário.


Vá em:

File → Project Structure → Platform Settings → SDKs

E configure:

  • JDK desejado

  • Nome padrão

  • Pasta fixa do Java no seu sistema

Depois vá em:

File → Settings → Build Tools → Maven → Runner → JRE

Selecione "Use External JDK" e aponte para o Java instalado.

Isso faz o IntelliJ usar o mesmo SDK para todos os projetos, mesmo que a branch troque arquivos internos.


Vá em:

File → Settings for New Projects

E defina:

  • Project SDK

  • Language level

  • Encoding

  • Frameworks (Spring, Maven, Lombok, etc.)

Assim, sempre que o IntelliJ “reabrir” o projeto, ele recriará com esses padrões.


  • A branch antiga tinha arquivos .idea que são diferentes

  • Você usa “git checkout .” que sobrescreve o .idea

  • O IntelliJ está configurado para reimportar o Maven automaticamente

  • O projeto foi clonado novamente e perdeu metadados


A solução definitiva é:

✔ Ignorar arquivos do IntelliJ no Git
✔ Fixar o SDK globalmente no IntelliJ
✔ Configurar os padrões globais para novos projetos

Com isso, mesmo que você apague, recrie ou troque branches, as configurações do ambiente não somem mais.


Configurações IntelliJ apagandoIntelliJ perde configurações ao trocar branchIntelliJ Git branch settings, Java SDK IntelliJ sumindo, IntelliJ IDEA 2025 tutorial, erro IntelliJ branch, .idea git ignore.

IntelliJ apagando configs? Veja a solução!

Leia mais

O que Configurar no IntelliJ Antes de Criar Seu Projeto Java (Guia para Iniciantes)

Configurar IntelliJ Java corretamente pode ser a diferença entre um fluxo de desenvolvimento produtivo e horas de frustração com erros evitáveis.

Muitos desenvolvedores iniciantes pulam essa etapa crucial e acabam enfrentando problemas de compilação, dependências e performance.

A boa notícia é que configurar o IntelliJ para projetos Java não precisa ser complicado.

Com as configurações certas desde o início, você ganha velocidade, evita bugs e aproveita todo o potencial dessa IDE poderosa.

Neste guia completo, você vai descobrir exatamente o que precisa configurar IntelliJ Java antes de começar qualquer projeto.

Desde a instalação do JDK até as otimizações de performance, vou mostrar o passo a passo para você não perder tempo.

Ao final desta leitura, você terá um ambiente de desenvolvimento profissional e estará pronto para codar com máxima eficiência.

Configurar IntelliJ Java: Instalação do JDK e SDK

Configurar IntelliJ Java começa obrigatoriamente pela instalação e configuração correta do JDK (Java Development Kit). Sem o JDK configurado, a IDE não consegue compilar nem executar seu código Java, tornando impossível o desenvolvimento.

O primeiro passo é verificar se você já possui o JDK instalado no seu sistema. Abra o terminal e digite java -version para confirmar. Se não houver instalação, baixe a versão mais recente do JDK no site oficial da Oracle ou opte pelo OpenJDK, uma alternativa gratuita e de código aberto.

Após instalar o JDK, você precisa configurar o SDK no IntelliJ IDEA. Abra a IDE e vá em File > Project Structure (ou pressione Ctrl+Alt+Shift+S). Na seção Platform Settings, clique em SDKs e depois no botão de mais (+) para adicionar um novo JDK.

Navegue até o diretório onde você instalou o JDK e selecione-o. O IntelliJ IDEA detectará automaticamente a versão e configurará o SDK. É fundamental escolher a versão do Java compatível com seu projeto - para projetos modernos, o Java 17 LTS ou Java 21 LTS são excelentes opções.

Uma dica importante: você pode ter múltiplas versões do JDK configuradas no IntelliJ. Isso é útil quando você trabalha em projetos diferentes que exigem versões específicas do Java. Para gerenciar isso, mantenha todos os SDKs organizados na seção Project Structure.

Depois de configurar IntelliJ Java com o SDK correto, defina também o Project SDK específico para seu projeto atual. Vá em Project Settings > Project e selecione o SDK que você acabou de adicionar. Configure também o Language Level para corresponder às features do Java que você pretende usar.

Não esqueça de verificar o Module SDK em Project Settings > Modules. Cada módulo do seu projeto pode ter um SDK diferente, embora geralmente você use o mesmo SDK do projeto para manter a consistência.

Com o JDK e SDK corretamente instalados, você elimina 90% dos problemas de compilação que desenvolvedores iniciantes enfrentam ao configurar IntelliJ para Java.

Sistema de Build: Maven ou Gradle para seu projeto Java

Depois de configurar o SDK, você precisa decidir qual sistema de build usar: Maven ou Gradle. Esses gerenciadores de dependências são essenciais para projetos Java profissionais e facilitam o gerenciamento de bibliotecas externas.

O Maven é o sistema mais tradicional e amplamente adotado em projetos corporativos. Ele usa um arquivo pom.xml para definir dependências, plugins e configurações do projeto. O IntelliJ IDEA oferece suporte nativo ao Maven, detectando automaticamente arquivos pom.xml e importando as dependências.

Para criar um projeto Maven no IntelliJ, vá em File > New > Project, selecione Maven e configure o GroupId, ArtifactId e a versão. O IntelliJ gerará automaticamente a estrutura de pastas padrão do Maven (src/main/java, src/test/java, etc.).

O Gradle é uma alternativa mais moderna e flexível, usando Groovy ou Kotlin DSL para configuração. Ele tende a ser mais rápido que o Maven em builds grandes e oferece maior personalização. Projetos Android, por exemplo, usam Gradle por padrão.

Para configurar Gradle no IntelliJ, siga o mesmo processo: File > New > Project > Gradle. Escolha se quer usar Groovy ou Kotlin DSL para o arquivo build.gradle. O IntelliJ sincronizará automaticamente as dependências após salvar o arquivo.

Independente da escolha, configure o IntelliJ para fazer download automático de fontes e documentação. Vá em Settings > Build, Execution, Deployment > Build Tools > Maven (ou Gradle) e marque as opções Download sources e Download documentation. Isso melhora significativamente a experiência de desenvolvimento com autocomplete mais inteligente.

Uma configuração crucial é definir a JVM usada pelo Maven ou Gradle. Em Settings > Build Tools > Maven (ou Gradle), configure o Gradle JVM ou Maven home directory para apontar para a instalação correta. Use a mesma versão do JDK do seu projeto para evitar incompatibilidades.

Ative também o Build and run using IntelliJ IDEA em vez do Maven/Gradle quando possível. Isso torna a compilação mais rápida durante o desenvolvimento, embora para builds de produção você deva usar o sistema de build nativo.

Configurações essenciais de performance e aparência

Configurar IntelliJ Java vai além do JDK e build tools - as configurações de performance fazem enorme diferença na sua produtividade diária. A IDE pode consumir muita memória RAM, especialmente em projetos grandes, então otimizar é fundamental.

Primeiro, aumente a memória heap do IntelliJ. Vá em Help > Change Memory Settings e ajuste o valor. Para máquinas com 8GB de RAM, configure 2GB; para 16GB ou mais, use 4GB ou mais. Isso evita travamentos e lentidão ao trabalhar com projetos complexos.

Desative plugins desnecessários em Settings > Plugins. O IntelliJ vem com dezenas de plugins pré-instalados que você provavelmente nunca usará. Desabilite aqueles relacionados a tecnologias que você não trabalha (Kotlin, Scala, Docker, etc.) para liberar recursos.

Configure o tema e a fonte do editor em Settings > Appearance & Behavior > Appearance e Settings > Editor > Font. Use um tema dark mode (como Darcula) se você programa à noite, pois reduz o cansaço visual. Para fontes, JetBrains Mono, Fira Code ou Consolas são excelentes opções com ligaduras.

Ajuste as configurações de código em Settings > Editor > Code Style > Java. Defina o tamanho da indentação (geralmente 4 espaços), posição de chaves, e formatação de imports. Isso garante que seu código siga padrões consistentes automaticamente.

Ative o Auto Import em Settings > Editor > General > Auto Import marcando as opções Add unambiguous imports on the fly e Optimize imports on the fly. Isso economiza tempo eliminando imports não utilizados e adicionando os necessários automaticamente.

Configure atalhos de teclado personalizados em Settings > Keymap. Atalhos eficientes podem dobrar sua velocidade de desenvolvimento. Familiarize-se com os principais: Ctrl+Space (autocomplete), Alt+Enter (quick fix), Ctrl+Shift+F (formatar código), Shift+Shift (buscar tudo).

Por fim, configure o Version Control em Settings > Version Control > Git. Se você usa Git, configure seu nome de usuário, email e o caminho do executável. O IntelliJ oferece excelente integração com Git, permitindo commits, merges e visualização de diffs diretamente na IDE.

Como validar se configurou IntelliJ Java corretamente

Agora que você configurou IntelliJ para desenvolvimento Java, é hora de validar se tudo está funcionando perfeitamente antes de começar seu primeiro projeto.

Crie um projeto de teste rápido para verificar a configuração. Vá em File > New > Project, escolha Java, selecione o SDK que você configurou e crie um projeto simples.

No projeto criado, adicione uma classe Main.java com um método main básico que imprime "Hello World". Se o código compilar sem erros vermelhos e você conseguir executar pressionando Shift+F10, sua configuração de SDK está correta.

Teste também o sistema de build adicionando uma dependência externa. Se escolheu Maven, adicione uma biblioteca popular como JUnit ou Gson no pom.xml. Se o IntelliJ baixar automaticamente a dependência e você conseguir importar classes dessa biblioteca, o Maven está configurado corretamente.

Verifique a performance observando o uso de memória no rodapé do IntelliJ. Se a IDE não estiver consumindo mais de 70% da heap alocada durante uso normal, suas configurações de performance estão adequadas.

Ficou com alguma dúvida sobre como configurar IntelliJ Java? Deixe seu comentário abaixo que vou te ajudar a resolver! E se este guia foi útil, compartilhe com outros desenvolvedores que estão começando sua jornada com Java.

Agora é só começar a codar! Com o ambiente configurado corretamente, você tem tudo para desenvolver projetos Java profissionais e aproveitar ao máximo os recursos que o IntelliJ IDEA oferece.

O que você precisa configurar antes de escrever seu projeto no IntelliJ com Java

Leia mais

Imagem ilustrativa de um Wi-Fi Killer, mostrando o símbolo de sinal sem fio em alerta, representando ataques que derrubam conexões, bloqueiam redes e comprometem dispositivos. Ideal para artigos sobre segurança Wi-Fi, proteção de redes e quedas de internet.

A Intel Wi-Fi 6
AX200 160 MHz é reconhecida como uma excelente placa de rede sem fio, oferecendo velocidades impressionantes e suporte aos padrões mais modernos. Porém, há um problema recorrente que afeta inúmeros usuários: quedas aleatórias de conexão, especialmente em sistemas Windows 10 e 11.

Mesmo com drivers atualizados, muitos usuários continuam enfrentando desconexões inesperadas que prejudicam a experiência de uso. A boa notícia é que existem soluções comprovadas para eliminar definitivamente esse problema.

Por Que a AX200 Apresenta Quedas de Conexão?

Antes de partir para as soluções, é importante entender as principais causas:

A placa AX200 é extremamente sensível às configurações de economia de energia do Windows. O sistema operacional tenta desligar ou reduzir a potência da placa para economizar bateria, causando desconexões. Além disso, a AX200 compartilha a mesma antena para Wi-Fi e Bluetooth, o que pode gerar conflitos de radiofrequência quando ambos estão ativos simultaneamente.

Outro fator relevante é que o driver genérico fornecido pelo Windows Update não oferece a estabilidade necessária para essa placa específica. As configurações padrão de roaming também fazem com que a placa tente trocar de rede sem necessidade, resultando em quedas. Por fim, alguns roteadores implementam recursos do Wi-Fi 6 de forma inadequada, causando incompatibilidades.

Desative a Economia de Energia da Placa

Esta é a solução mais eficaz, resolvendo aproximadamente 70% dos casos de quedas aleatórias.

Abra o Gerenciador de Dispositivos (pressione Windows + X e selecione a opção correspondente). Expanda a categoria "Adaptadores de rede" e localize "Intel Wi-Fi 6 AX200 160MHz". Clique com o botão direito sobre a placa e selecione "Propriedades".

Na janela que abrir, acesse a guia "Gerenciamento de Energia". Você verá uma caixa de seleção chamada "Permitir que o computador desligue este dispositivo para economizar energia". Desmarque essa opção e clique em "OK" para aplicar a mudança.

Configure o Modo de Economia de Energia do Windows

Mesmo desativando a economia de energia na placa, o Windows possui configurações globais que também precisam ser ajustadas.

Acesse o Painel de Controle e navegue até "Opções de Energia". Localize o plano de energia que está em uso e clique em "Alterar configurações do plano". Em seguida, selecione "Alterar configurações avançadas de energia".

Na janela que abrir, procure por "Configurações do adaptador sem fio" e expanda essa opção. Você verá "Modo de economia de energia". Configure tanto a opção "Na bateria" quanto "Conectado" para "Desempenho máximo". Aplique as alterações e feche a janela.

Ajuste os Parâmetros Avançados da Placa

A AX200 é particularmente sensível às configurações de roaming e à banda de frequência utilizada. Configurar manualmente esses parâmetros pode eliminar as quedas de conexão.

No Gerenciador de Dispositivos, acesse novamente as propriedades da placa AX200. Desta vez, clique na guia "Avançado". Você verá uma lista de propriedades configuráveis.

Configure "Preferred Band" (Banda preferencial) como "Prefer 5GHz" para priorizar a banda de 5 GHz, que geralmente é mais estável. Em "Channel Width for 5GHz" (Largura do canal para 5GHz), mantenha em 160 MHz se seu roteador suportar adequadamente, ou considere reduzir para 80 MHz caso os problemas persistam.

A configuração mais importante é "Roaming Aggressiveness" (Agressividade de roaming). Coloque no valor mais baixo possível (Lowest). Quando essa opção está configurada em valores altos, a placa fica constantemente procurando redes melhores, causando desconexões desnecessárias.

Configure "Transmit Power" (Potência de transmissão) como "Highest" para potência máxima. Certifique-se de que as opções relacionadas ao padrão 802.11ax estejam habilitadas. Se disponível, ative também "Throughput Booster" para melhorar o desempenho.

Reinstale o Driver Oficial da Intel

O driver genérico instalado pelo Windows Update frequentemente causa problemas de estabilidade com a AX200. A solução é remover completamente esse driver e instalar a versão oficial da Intel.

Primeiro, desinstale o driver atual completamente. No Gerenciador de Dispositivos, clique com o botão direito sobre a placa AX200 e selecione "Desinstalar dispositivo". Na janela de confirmação, marque a opção "Excluir o software driver deste dispositivo". Isso garante que todos os arquivos relacionados sejam removidos.

Reinicie o computador após a desinstalação. Quando o sistema reiniciar, baixe o driver oficial mais recente diretamente do site da Intel. Procure por "Intel PROSet/Wireless Software" na área de downloads do fabricante. A versão 22.250.1 é conhecida por oferecer excelente estabilidade.

Instale o driver baixado seguindo as instruções do instalador. Após a conclusão, reinicie novamente o computador para garantir que todas as configurações sejam aplicadas corretamente.

Resolva Conflitos com Bluetooth

A Intel AX200 possui uma característica que muitos usuários desconhecem: a placa compartilha a mesma antena física para Wi-Fi e Bluetooth. Quando ambos estão ativos simultaneamente, podem ocorrer conflitos de radiofrequência que resultam em quedas de conexão.

Se você utiliza dispositivos Bluetooth regularmente, como fones de ouvido, teclado, mouse ou controles de videogame, faça um teste simples. Desative temporariamente o Bluetooth nas configurações do Windows e observe se as quedas de conexão Wi-Fi cessam.

Caso o problema seja resolvido com o Bluetooth desativado, o conflito está confirmado. A solução é garantir que tanto o driver Wi-Fi quanto o driver Bluetooth estejam nas versões mais recentes fornecidas pela Intel. Baixe o pacote completo "Intel Wireless Bluetooth" junto com o driver Wi-Fi.

Otimize as Configurações do Roteador

Muitas vezes, o problema não está no computador, mas nas configurações do roteador. A AX200 é conhecida por apresentar incompatibilidades com determinadas configurações de roteadores, especialmente relacionadas aos novos recursos do Wi-Fi 6.

Acesse a interface de administração do seu roteador através do navegador. As configurações mais problemáticas incluem DFS (Dynamic Frequency Selection), canais 5GHz acima de 120, WPA3 implementado de forma inadequada, OFDMA e TWT.

Para máxima estabilidade, configure sua rede 5GHz para utilizar os canais 36, 40, 44 ou 48. Evite canais superiores a 120, pois muitas placas AX200 apresentam instabilidade nesses canais. Configure a largura do canal para 80 MHz em vez de 160 MHz, mesmo que isso reduza um pouco a velocidade máxima teórica.

Temporariamente, mude a segurança para WPA2-Personal em vez de WPA3. Embora o WPA3 seja mais seguro, muitas implementações em roteadores ainda apresentam bugs que afetam a estabilidade da conexão.

Se seu roteador oferece opções avançadas de Wi-Fi 6, como OFDMA e TWT (Target Wake Time), desative-as temporariamente para testar. Essas tecnologias prometem melhor eficiência, mas nem todos os roteadores as implementam corretamente.

Remova Software de Terceiros

Alguns fabricantes de notebooks, especialmente modelos voltados para games, instalam softwares adicionais como o "Intel Killer Control Center" ou suítes similares de otimização de rede. Esses programas frequentemente causam conflitos com os drivers padrão da Intel.

Verifique na lista de programas instalados se existe algum software relacionado a "Killer", "Network Manager" ou "Gaming Center" que controle a rede. Se encontrar, desinstale completamente e reinicie o computador. Na maioria dos casos, o driver padrão da Intel oferece desempenho igual ou superior sem os problemas de estabilidade.

Resultados Esperados

Ao seguir todos esses passos, a grande maioria dos usuários consegue eliminar completamente as quedas de conexão na Intel AX200. As configurações de economia de energia são, isoladamente, responsáveis pela maioria dos problemas, mas a combinação de todas as otimizações garante uma experiência consistente e confiável.

Lembre-se de que cada caso pode ter particularidades. Se após aplicar todas as soluções o problema persistir, pode haver um defeito de hardware na placa ou incompatibilidades específicas com seu modelo de roteador. Nesses casos, considere entrar em contato com o suporte técnico da Intel ou do fabricante do seu computador.

Como Resolver Quedas de Conexão na Intel Wi-Fi 6 AX200: Guia Completo

Leia mais



Manter o brilho ideal da tela pode parecer simples, mas no
Windows 10 e 11 isso às vezes fica escondido entre menus confusos. Para quem busca praticidade e rapidez, existe uma solução excelente: ajustar o brilho diretamente por scripts, usando PowerShell e um menu interativo que você mesmo pode criar em segundos.

Neste guia, você aprende passo a passo como controlar o brilho da sua tela de forma prática, rápida e altamente eficiente — ideal para o dia a dia, para gamers, para quem trabalha à noite ou simplesmente para quem não aguenta mais procurar a opção de brilho nos menus do Windows.


🔥 Por que ajustar o brilho via script?

Fazer isso pelo Windows é lento e nada prático. Já com um script:

  • Você ajusta o brilho com um clique.

  • Pode criar atalhos na área de trabalho.

  • Não precisa abrir configurações escondidas.

  • É extremamente leve e rápido.

Se você gosta de produtividade, prepare-se: este tutorial vai virar parte da sua rotina.


🟦 Como funciona o ajuste de brilho via PowerShell

O Windows possui uma classe nativa chamada WmiMonitorBrightnessMethods, que permite enviar comandos diretamente ao controlador de brilho da tela.
Ou seja, não mexemos no registro — que raramente funciona — e sim no método oficial usado pelo próprio sistema.

Aqui está o comando base:

(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, <valor>)

🔹 Troque <valor> por um número entre 0 e 100 — isso define o brilho em porcentagem.


Comando rápido para ajustar brilho instantaneamente

▶ Brilho em 80%

powershell.exe -Command "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 80)"

▶ Brilho mínimo (10%)

powershell.exe -Command "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, 10)"

▶ Brilho máximo (100%)

powershell.exe -Command "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,100)"

Simples, direto e imediato.


🟢 Crie um arquivo .BAT para ajustar brilho automaticamente

Quer alterar através dos comandos batch, mas não sabe como, veja mais sobre em nosso artigo: 

Como criar um arquivo de lote (bat) para otimizar o Windows

Se quiser transformar o ajuste em um botão rápido, faça o seguinte:

  1. Abra o Bloco de Notas.

  2. Cole o comando desejado.

  3. Salve como
    ajustar-brilho.bat

  4. Clique duas vezes para executar.

Pronto. O brilho da sua tela muda na hora.


⚙️ Crie um menu interativo para escolher o brilho

Se você quer uma ferramenta mais completa, com opções pré-configuradas, use este arquivo .BAT:

@echo off echo =============================== echo AJUSTE DE BRILHO WINDOWS echo =============================== echo 1 - Brilho 20 echo 2 - Brilho 40 echo 3 - Brilho 60 echo 4 - Brilho 80 echo 5 - Brilho 100 set /p op=Escolha: if %op%==1 powershell "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,20)" if %op%==2 powershell "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,40)" if %op%==3 powershell "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,60)" if %op%==4 powershell "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,80)" if %op%==5 powershell "(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,100)"

✔ O que esse menu oferece?

  • Ajuste rápido

  • Interface limpa

  • Opções práticas

  • Fácil de distribuir para equipe de TI

Perfeito para notebooks corporativos, call centers, técnicos e usuários avançados.


💡 Dicas extras para produtividade

  • Crie atalhos diferentes para 20, 50, 80 e 100% na área de trabalho.

  • Transforme o script em atalho com ícone personalizado.

  • Use ferramentas como o Task Scheduler para ajustar o brilho automaticamente à noite.

Se quiser, posso gerar ícones PNG personalizados para seus atalhos.


🎯 Conclusão: a forma mais rápida e inteligente de ajustar brilho no Windows

Ajustar brilho diretamente pelo Windows é lento e pouco intuitivo — mas com scripts você torna essa ação rápida, eficiente e acessível.

Usando PowerShell e o menu em batch deste tutorial, você:

  • ganha tempo,

  • aumenta produtividade,

  • evita navegar por menus confusos,

  • cria controles personalizados.

Se o objetivo é praticidade, esses métodos são imbatíveis.

Como Ajustar o Brilho do Windows Usando PowerShell (2025)

Leia mais

Entenda o Problema que Afeta Milhares de Aplicações Java

Você já se deparou com uma situação frustrante onde um número perfeitamente legível como 1234567890123456789 simplesmente se transforma em algo como 1.2345678901234568E18 quando sua aplicação Java interage com o banco de dados?

Se você respondeu sim, saiba que não está sozinho. Esse é um dos erros mais comuns enfrentados por desenvolvedores que trabalham com valores extensos, sejam eles códigos de identificação, documentos fiscais, números de conta ou valores monetários de alta precisão.

A boa notícia? Esse problema tem solução, e você vai dominar todas as técnicas necessárias ao final deste artigo.

O Que É Notação Científica e Por Que Ela Aparece?

Antes de mergulharmos nas soluções, é fundamental entender a raiz do problema.

A notação científica é uma forma matemática de representar números muito grandes ou muito pequenos de maneira compacta. Por exemplo, 1.5E6 significa 1.500.000 (1,5 multiplicado por 10 elevado à sexta potência).

Embora seja útil em contextos científicos e matemáticos, essa notação se torna uma verdadeira dor de cabeça quando você precisa de números exatos em aplicações comerciais.

A Limitação dos Tipos Primitivos do
Java

O Java utiliza os tipos float e double para trabalhar com números decimais. Esses tipos seguem o padrão internacional IEEE 754, que define como números de ponto flutuante são armazenados na memória.

O problema central está na capacidade limitada de armazenamento:

  • float: consegue armazenar aproximadamente 7 dígitos significativos
  • double: consegue armazenar aproximadamente 15-16 dígitos significativos

Quando você tenta armazenar um número com mais dígitos do que o tipo suporta, o Java automaticamente faz uma conversão para notação científica, perdendo precisão no processo.

Veja este exemplo prático:

double numeroGrande = 1234567890123456789d;
System.out.println("Valor armazenado: " + numeroGrande);

Resultado no console:

Valor armazenado: 1.2345678901234568E18

Perceba que os últimos dígitos foram alterados. Isso não é apenas uma questão de formatação visual – os dados realmente foram modificados na memória!

Quando Esse Problema Realmente Importa?

Você pode estar pensando: "Ok, mas isso realmente faz diferença na prática?" A resposta é: depende muito do contexto.

Situações Críticas Onde a Precisão É Essencial

1. Sistemas Financeiros Imagine uma aplicação bancária que processa valores monetários. Se você está lidando com transações internacionais ou cálculos de juros compostos em investimentos de longo prazo, perder até mesmo uma fração de centavo pode gerar inconsistências graves.

2. Identificadores Únicos CNPJs, CPFs, códigos de barras, números de protocolo – todos esses são tratados como números, mas não podem sofrer nenhuma alteração. Um dígito errado invalida completamente a informação.

3. Integrações com Sistemas Legados Muitos bancos de dados antigos armazenam identificadores como números. Ao migrar ou integrar esses sistemas, a conversão inadequada pode corromper registros inteiros.

4. Relatórios e Auditoria Se seus relatórios mostram valores diferentes dos registrados no banco de dados, você terá sérios problemas em auditorias e conformidade regulatória.

Exemplo Real: O Desastre Silencioso na Extração de Dados

Considere este cenário comum em aplicações empresariais:

Connection conexao = DriverManager.getConnection(urlBanco, usuario, senha);
Statement comando = conexao.createStatement();
ResultSet resultado = comando.executeQuery("SELECT codigo_produto FROM produtos");

while (resultado.next()) {
    double codigo = resultado.getDouble("codigo_produto");
    System.out.println("Código extraído: " + codigo);
}

O que você esperava:

Código extraído: 7891234567890

O que você obtém:

Código extraído: 7.89123456789E12

O impacto? Validações falham, buscas não encontram os registros, e relatórios ficam incompreensíveis para os usuários finais.

Solução 1: Tratando Identificadores Como Texto

A primeira e mais simples solução é reconhecer que nem todo número precisa ser tratado como tipo numérico.

Quando Usar String ao Invés de Tipos Numéricos

Se o valor não será usado em operações matemáticas (soma, subtração, multiplicação), trate-o como texto:

ResultSet resultado = comando.executeQuery("SELECT codigo_produto FROM produtos");

while (resultado.next()) {
    String codigo = resultado.getString("codigo_produto");
    System.out.println("Código preservado: " + codigo);
}

Vantagens desta abordagem:

  • Preservação total dos dígitos originais
  • Sem risco de conversão automática
  • Performance excelente para leitura
  • Ideal para chaves primárias, documentos e identificadores

Cuidado importante: Certifique-se de que a coluna no banco de dados também está definida como VARCHAR ou CHAR, não como NUMBER ou BIGINT.

Solução 2: BigDecimal Para Precisão Absoluta em Cálculos

Quando você realmente precisa fazer operações matemáticas com números grandes, a classe BigDecimal é sua melhor aliada.

Por Que BigDecimal É Superior

Diferente de float e double, o BigDecimal armazena números como objetos, sem limitação de precisão. Ele é especialmente projetado para cálculos financeiros e situações onde cada dígito conta.

ResultSet resultado = comando.executeQuery("SELECT valor_transacao FROM financeiro");

while (resultado.next()) {
    BigDecimal valor = resultado.getBigDecimal("valor_transacao");
    System.out.println("Valor exato: " + valor.toPlainString());
}

O Método toPlainString() É Crucial

Nunca use apenas toString() com BigDecimal, pois ele ainda pode retornar notação científica em alguns casos. Sempre utilize:

valor.toPlainString() // Retorna o número completo, sem notação científica

Exemplo Prático com Cálculos Financeiros

BigDecimal saldo = new BigDecimal("125678.50");
BigDecimal juros = new BigDecimal("0.0075"); // 0,75%
BigDecimal rendimento = saldo.multiply(juros);

System.out.println("Saldo inicial: R$ " + saldo.toPlainString());
System.out.println("Rendimento: R$ " + rendimento.toPlainString());

Resultado garantido:

Saldo inicial: R$ 125678.50
Rendimento: R$ 942.58875

Solução 3: Gravação Segura com PreparedStatement

A prevenção começa no momento da gravação. O PreparedStatement é sua ferramenta essencial para inserir dados no banco sem perda de precisão.

O Jeito Errado (Que Causa o Problema)

PreparedStatement ps = conexao.prepareStatement(
    "INSERT INTO contas (numero_conta, saldo) VALUES (?, ?)"
);

double numeroConta = 9876543210123456d;
double saldo = 50000.75;

ps.setDouble(1, numeroConta); // ERRO: vai virar notação científica
ps.setDouble(2, saldo);
ps.executeUpdate();

O Jeito Correto (Que Preserva os Dados)

PreparedStatement ps = conexao.prepareStatement(
    "INSERT INTO contas (numero_conta, saldo) VALUES (?, ?)"
);

String numeroConta = "9876543210123456";
BigDecimal saldo = new BigDecimal("50000.75");

ps.setString(1, numeroConta); // Preserva todos os dígitos
ps.setBigDecimal(2, saldo);   // Mantém precisão decimal exata
ps.executeUpdate();

Conversão de Valores Já Afetados: Ainda Há Esperança

E se você já tem dados armazenados em notação científica? É possível recuperá-los em muitos casos.

String valorCientifico = "1.23E10";
BigDecimal valorRecuperado = new BigDecimal(valorCientifico);
String valorLegivel = valorRecuperado.toPlainString();

System.out.println("Valor original (científico): " + valorCientifico);
System.out.println("Valor convertido: " + valorLegivel);

Saída:

Valor original (científico): 1.23E10
Valor convertido: 12300000000

Atenção: Essa conversão só funciona se a notação científica ainda contém todos os dígitos significativos. Se houve truncamento severo, pode haver perda de dados irreversível.

Comparativo: Escolhendo o Tipo Certo para Cada Situação

Comparação entre BigDecimal e Double mostrando como o Java converte números grandes em notação científica.













Configuração Adequada no Banco de Dados

O problema não está apenas no código Java – o esquema do banco de dados também desempenha papel fundamental.

Mapeamento Recomendado por Tipo de Dado

Para identificadores longos (CNPJ, códigos, protocolos):

-- Oracle
CREATE TABLE produtos (
    codigo VARCHAR2(50) PRIMARY KEY
);

-- PostgreSQL
CREATE TABLE produtos (
    codigo VARCHAR(50) PRIMARY KEY
);

-- SQL Server
CREATE TABLE produtos (
    codigo VARCHAR(50) PRIMARY KEY
);

Para valores monetários:

-- Oracle
CREATE TABLE transacoes (
    valor NUMBER(15,2)
);

-- PostgreSQL
CREATE TABLE transacoes (
    valor NUMERIC(15,2)
);

-- SQL Server
CREATE TABLE transacoes (
    valor DECIMAL(15,2)
);

Para números muito grandes que precisam de precisão total:

-- Use NUMERIC ou DECIMAL com precisão alta
CREATE TABLE registros (
    valor_exato NUMERIC(38,0)
);

Implementação Completa: Exemplo do Mundo Real

Vamos consolidar tudo em um exemplo completo de uma classe de serviço que gerencia transações financeiras:

import java.math.BigDecimal;
import java.sql.*;

public class ServicoTransacao {
    
    public void registrarTransacao(String codigoTransacao, 
                                   BigDecimal valor, 
                                   String documentoCliente) {
        
        String sql = "INSERT INTO transacoes (codigo, valor, documento_cliente, data_registro) " +
                     "VALUES (?, ?, ?, CURRENT_TIMESTAMP)";
        
        try (Connection conn = obterConexao();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            
            // Usando tipos apropriados para cada campo
            ps.setString(1, codigoTransacao);      // Identificador como texto
            ps.setBigDecimal(2, valor);             // Valor monetário com precisão
            ps.setString(3, documentoCliente);      // Documento como texto
            
            int linhasAfetadas = ps.executeUpdate();
            
            if (linhasAfetadas > 0) {
                System.out.println("Transação registrada com sucesso!");
                System.out.println("Código: " + codigoTransacao);
                System.out.println("Valor: R$ " + valor.toPlainString());
            }
            
        } catch (SQLException e) {
            System.err.println("Erro ao registrar transação: " + e.getMessage());
            throw new RuntimeException("Falha na gravação dos dados", e);
        }
    }
    
    public void consultarTransacoes() {
        String sql = "SELECT codigo, valor, documento_cliente FROM transacoes";
        
        try (Connection conn = obterConexao();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(sql)) {
            
            while (rs.next()) {
                String codigo = rs.getString("codigo");
                BigDecimal valor = rs.getBigDecimal("valor");
                String documento = rs.getString("documento_cliente");
                
                System.out.println("────────────────────────");
                System.out.println("Código: " + codigo);
                System.out.println("Valor: R$ " + valor.toPlainString());
                System.out.println("Cliente: " + documento);
            }
            
        } catch (SQLException e) {
            System.err.println("Erro ao consultar transações: " + e.getMessage());
        }
    }
    
    private Connection obterConexao() throws SQLException {
        String url = "jdbc:postgresql://localhost:5432/financeiro";
        String usuario = "app_user";
        String senha = "senha_segura";
        return DriverManager.getConnection(url, usuario, senha);
    }
}

Checklist de Boas Práticas para Evitar Problemas

Antes de colocar seu código em produção, verifique:

Identificadores numéricos estão sendo tratados como String?Valores monetários utilizam BigDecimal em vez de double?PreparedStatement está configurado com setBigDecimal() e setString()?Colunas do banco estão com tipos apropriados (VARCHAR para IDs, DECIMAL para valores)?Você está usando toPlainString() ao exibir BigDecimal?Há tratamento de exceções adequado para capturar erros de conversão?Testes automatizados verificam a integridade dos dados gravados?

Conclusão: Precisão É Fundamental em Aplicações Profissionais

O problema da notação científica no Java não é apenas uma curiosidade técnica – é uma questão crítica que pode comprometer a integridade de dados empresariais e financeiros.

Ao entender as limitações dos tipos primitivos e utilizar as ferramentas corretas (BigDecimal para valores monetários e String para identificadores), você garante que seus dados sejam armazenados e recuperados com precisão absoluta.

Lembre-se: um único dígito errado pode invalidar uma transação inteira, causar falhas em integrações ou gerar inconsistências em relatórios. Invista tempo na escolha dos tipos corretos desde o início do desenvolvimento.

Sua aplicação – e seus usuários – agradecem pela atenção aos detalhes!


Gostou deste conteúdo? Implemente essas práticas em seus projetos Java e compartilhe sua experiência nos comentários. Se você tem dúvidas específicas sobre casos mais complexos, deixe sua pergunta que terei prazer em ajudar!

Como Evitar que Números Grandes Virem Notação Científica no Java: Guia Completo para Desenvolvedores

Leia mais

 🧱 Introdução

LEFT JOIN com filtro WHERE vs ON: entenda de uma vez por todas com exemplos práticos em SQL


Um dos temas mais confusos em SQL é o comportamento do LEFT JOIN quando usamos filtros.
Muita gente não percebe que a posição da condição (WHERE ou ON) muda completamente o resultado da consulta.

Neste artigo, você vai aprender:

  • A diferença entre aplicar o filtro no WHERE e no ON

  • Como preservar os registros da tabela principal

  • Exemplos práticos com tabelas de teste

  • Explicação visual com imagens do resultado


⚙️ Cenário de teste — criando o ambiente

Você pode rodar este script em SQL Server, PostgreSQL ou Oracle (ajusta só o CREATE TABLE se quiser):

-- Criando tabelas CREATE TABLE TABELA_PRINCIPAL ( id_produto INT PRIMARY KEY, nome_produto VARCHAR(50) ); CREATE TABLE TABELA_SECUNDARIA ( id_produto INT, preco DECIMAL(10,2) ); -- Inserindo dados na tabela principal INSERT INTO TABELA_PRINCIPAL (id_produto, nome_produto) VALUES (10, 'Teclado'), (11, 'Mouse'), (12, 'Monitor'), (13, 'Webcam'); -- Inserindo dados na tabela secundária INSERT INTO TABELA_SECUNDARIA (id_produto, preco) VALUES (10, 150.00), (11, 80.00), (12, 900.00);

📘 Perceba que o produto 13 (Webcam) não existe na tabela secundária.


🧩 Consulta 1 — LEFT JOIN normal

SELECT p.id_produto, p.nome_produto, s.preco FROM TABELA_PRINCIPAL p LEFT JOIN TABELA_SECUNDARIA s ON p.id_produto = s.id_produto;

🟢 Resultado esperado:

id_produtonome_produtopreco
10Teclado150.00
11Mouse80.00
12Monitor900.00
13WebcamNULL

✅ Todos os registros da tabela principal aparecem,
mesmo sem correspondência na secundária (Webcam → NULL).


🚫 Consulta 2 — Filtro no WHERE (perde o comportamento do LEFT JOIN)

SELECT p.id_produto, p.nome_produto, s.preco FROM TABELA_PRINCIPAL p LEFT JOIN TABELA_SECUNDARIA s ON p.id_produto = s.id_produto WHERE s.id_produto = 12;

🟡 Resultado:

id_produtonome_produtopreco
12Monitor900.00

💬 Explicação:
Ao colocar s.id_produto = 12 no WHERE, o SQL ignora as linhas onde s é NULL.
O LEFT JOIN perde o sentido e o resultado fica igual a um INNER JOIN filtrado.


✅ Consulta 3 — Filtro dentro do ON (mantém o comportamento do LEFT JOIN)

SELECT p.id_produto, p.nome_produto, s.preco FROM TABELA_PRINCIPAL p LEFT JOIN TABELA_SECUNDARIA s ON p.id_produto = s.id_produto AND s.id_produto = 12;

🟢 Resultado:

id_produtonome_produtopreco
10TecladoNULL
11MouseNULL
12Monitor900.00
13WebcamNULL

💬 Explicação:
Agora sim!
Todos os produtos da tabela principal aparecem.
Apenas o produto 12 traz dados da tabela secundária; os outros permanecem com NULL

LEFT JOIN com filtro WHERE vs ON: entenda de uma vez por todas com exemplos práticos em SQL

Leia mais

SketchBoard Free — desenhe e salve (sem login) SketchBoard Free — desenhe e salve

SketchBoard Free

SketchBoard Free — desenhe e salve no seu computador • sem login

Drawly Studio – Crie, desenhe e salve suas ideias online (Em desenvolvimento)

Leia mais

 Introdução rápida

Se sua conta do WhatsApp foi comprometida (mensagens estranhas, perda de acesso ou sessão desconhecida), siga imediatamente os 10 passos abaixo. Isso maximiza chances de recuperar o número e reduzir danos.


10 passos urgentes

1) Tente reativar sua conta IMEDIATAMENTE

Abra o WhatsApp no seu celular, solicite o código de verificação por SMS e insira-o. Se você ainda controla o chip, isso pode derrubar o invasor.

2) Ative a verificação em duas etapas (PIN) assim que recuperar o acesso

Vá em Configurações → Conta → Verificação em duas etapas → Ativar. Escolha um PIN forte e um e-mail de recuperação.

3) Encerre sessões desconhecidas do WhatsApp Web / Desktop

No app, toque em Aparelhos conectados e finalize todas as sessões que você não reconhece.

4) Contate sua operadora imediatamente (suspeita de SIM swap)

Peça bloqueio temporário do número e registre solicitação de investigação por fraude/portabilidade indevida.

5) Altere senhas dos serviços vinculados (email, banco, redes sociais)

Se o invasor teve acesso, troque senhas e ative 2FA (autenticação de dois fatores) em e-mail e contas financeiras.

6) Denuncie ao suporte do WhatsApp e registre ocorrência policial

Use o formulário do WhatsApp (“Meu número foi roubado”) e registre Boletim de Ocorrência na delegacia (importante para operadora/banco).

7) Informe e oriente seus contatos (modelo pronto abaixo)

Envie SMS ou outra via confiável: “Minha conta do WhatsApp foi comprometida. Ignore pedidos de dinheiro e códigos. Vou avisar quando recuperar.”

8) Faça scan por malware e avalie restauração do aparelho

Rode antivírus confiável; se houver suspeita forte, faça backup e reset de fábrica do celular para eliminar app espião.

9) Monitore transações e tentativas de fraude vinculadas ao número

Verifique movimentos bancários, cadastros e notifique bancos caso veja atividade suspeita.

10) Adote medidas permanentes de proteção

  • Use PIN para operadora (senha de atendimento).

  • Nunca compartilhe códigos SMS/OTP.

  • Revise rotineiramente Aparelhos conectados e backups do WhatsApp.

  • Atualize sistema e apps sempre.


Modelo de mensagem para avisar contatos (copiar e enviar)

Alerta: minha conta do WhatsApp foi comprometida. Ignore mensagens pedindo dinheiro ou códigos. Estou tomando providências e avisarei quando estiver normalizado.


Checklist rápido (imprima/cole)

  • Tentei reativar com SMS

  • Ativei verificação em duas etapas

  • Encerrei sessões do WhatsApp Web

  • Contatei a operadora (SIM swap)

  • Troquei senhas importantes

  • Denunciei ao WhatsApp + BO

  • Avisei meus contatos

  • Rodei antivírus/reset se necessário

  • Verifiquei contas bancárias

  • Configurei proteção permanente


Observações importantes (segurança & legal)

  • Não compartilhe códigos de verificação com ninguém — nem com “suporte”.

  • Em casos de SIM swap, a operadora pode reverter o número, mas é essencial o BO para fins legais.

  • Preserve prints e horários; serão úteis em investigações.

🛡️ Como Recuperar e Proteger Sua Conta do WhatsApp Roubada — 10 Passos Urgentes

Leia mais

servidor web local, JBoss WildFly, Windows 11, servidor Java

Você pode estar em qualquer lugar do mundo — Brasil, Portugal, Estados Unidos, Angola, Japão ou Índia — e ainda assim precisará, em algum momento, criar um ambiente local confiável para rodar uma aplicação web em Java. Ter um servidor web local no Windows 11 usando JBoss WildFly é uma das formas mais profissionais de desenvolver e testar APIs, sistemas corporativos e aplicações Java EE / Jakarta EE com segurança e alta performance.

🔧 1. O que é o JBoss WildFly?

O WildFly (antigo JBoss AS) é um servidor de aplicações Java open-source focado em alto desempenho, modularidade e fácil administração. Ele é muito usado em empresas, principalmente em projetos que precisam de:

  • APIs REST ou SOAP

  • Aplicações Web Java rodando com Servlets, JSP, JSF, EJB ou Spring

  • Conexão com bancos Oracle, PostgreSQL, SQL Server ou MySQL

  • Deploy corporativo em ambientes de desenvolvimento, homologação e produção


🧰 2. Requisitos para o ambiente

ItemVersão Recomendada
WindowsWindows 10 ou 11
Java JDK11, 17 ou superior
WildFly24+ ou última versão estável
Ferramentas extras (opcional)IntelliJ, Eclipse ou VS Code

📌 Dica: Em qualquer sistema operacional, o essencial é que o Java esteja instalado e configurado no PATH.


💻 3. Baixando e instalando o WildFly

  1. Acesse o site oficial do WildFly

  2. Baixe a versão Final (ZIP)

  3. Extraia para um diretório, ex.:

    C:\wildfly

🔧 4. Configurando as variáveis de ambiente no Windows 11

Abra o Prompt de Comando (CMD) e verifique o Java:

java -version

Depois configure o JAVA_HOME e PATH no Windows.


🚀 5. Subindo o servidor local

No CMD, execute:

cd C:\wildfly\bin standalone.bat

Depois abra no navegador:

http://localhost:8080

Se aparecer a tela do WildFly, o servidor está ativo.


🔐 6. Criando usuário administrador

add-user.bat

Crie usuário Management User e depois acesse o console:

http://localhost:9990

🌎 7. Como adaptar o servidor para diferentes regiões do mundo 

(Locale, Timezone e Encoding)

Quando um servidor WildFly atende usuários em diferentes países, ele precisa estar preparado para lidar corretamente com:

RecursoExemploEvita problemas como
TimezoneAmerica/Sao_Paulo, UTC, Europe/Lisbonhorários incorretos em logs, agendamentos e auditoria
Localept-BR, en-US, es-ESdatas e números exibidos em formato errado
EncodingUTF-8caracteres quebrados (ç, ã, á, ñ, ü etc.)

7.1 Configurando o Timezone no Windows + WildFly

  1. Configure o timezone no Windows (PowerShell):

tzutil /s "E. South America Standard Time"
  1. Garanta que o WildFly siga o mesmo timezone, adicionando no standalone.conf.bat:

set "JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=America/Sao_Paulo"

Dica: para servidores globais, use sempre UTC

set "JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=UTC"

7.2 Configurando o Locale (Idioma/Formato de Data e Número)

Edite também o standalone.conf.bat e adicione:

set "JAVA_OPTS=%JAVA_OPTS% -Duser.language=pt -Duser.country=BR"

Para servidores multilíngues, o mais recomendado é en-US como padrão, decidindo o idioma na aplicação.


7.3 Garantindo UTF-8 em toda a aplicação (fundamental)

No mesmo arquivo:

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

Isso evita:

✅ caracteres estranhos
✅ � trocando acentos
✅ erro em XML/JSON retornado pela API


Se estiver tudo certo até aqui, me responda apenas:

👉 "Continuar para o tópico 8"

Assim eu já continuo com a próxima seção:

🔐8. Segurança e Hardening do Servidor WildFly no Windows 11


Quando você transforma o WildFly em um servidor web — mesmo que local ou em rede interna — segurança precisa ser prioridade. Um servidor mal configurado pode expor dados, credenciais e aplicações, além de ser um alvo para ataques comuns como:
  • Brute Force
  • Port Scanning
  • Ataques via HTTP (XSS, Request Flood, Path Traversal, etc.)
  • Sequestro de sessão
  • Interceptação de tráfego (quando não há HTTPS)

A meta do hardening é simples: reduzir a superfície de ataque e proteger as portas críticas do servidor.

8.1 Use HTTPS (TLS) ao invés de HTTP


Mesmo em ambiente local, é boa prática habilitar HTTPS.
Opções para gerar certificados

CenárioCertificadoRede local Certificado self-signed
Produção global Let's Encrypt ou autoridade confiável (DigiCert, GlobalSign etc.)
Empresa Certificado interno fornecido pela TI

Gerando um certificado self-signed (PowerShell)

keytool -genkeypair -alias wildfly https \ -keyalg RSA -keystore wildfly.keystore \ -storepass changeit -keypass changeit \ -validity 365 -dname "CN=localhost"



Depois, edite o standalone.xml e configure o listener HTTPS:
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>

Benefícios imediatos: criptografia, integridade dos dados e compatibilidade com HTTP/2.


8.2 Bloqueie o acesso externo ao Console Admin

Por padrão, a console de administração fica acessível na porta 9990. Em um ambiente seguro, apenas a máquina local ou a rede restrita deve acessá-la.

Edite o standalone.xml e altere o binding para localhost:
<interface name="management"> <inet-address value="127.0.0.1"/> </interface>
Resultado: ninguém de fora consegue gerenciar o WildFly.

8.3 Crie usuários e funções com o mínimo de privilégios

Nunca use usuário admin para tudo.

Categorias recomendadas:

FunçãoIndicado paraManagement Administradores do servidor
Application User Apps, sistemas e serviços
Read-Only Admin Auditoria ou monitoramento


Crie usuários com:
add-user.bat

Seguindo a política:
✅ Menor privilégio possível
✅ Senhas fortes com expiração periódica

8.4 Firewall e portas do WildFly

Portas mais comuns do WildFly:

PortaFunção8080 HTTP
8443 HTTPS
9990 Admin Console
9999 CLI remota

No Windows, ative regras no Firewall do Windows Defender, liberando apenas o que for necessário.

Boa prática global:

✅ Liberar 8080/8443 somente para acesso interno ou VPN
✅ Bloquear 9990 e 9999 para acesso público
✅ Preferir HTTPS sempre 8.5 Remova serviços e módulos que não usa

  • Quanto mais módulos ativos, maior o risco. No standalone.xml, desative subsystems que não usa, como:
  • WebSockets (se não houver necessidade)
  • Messaging
  • EJB Remoting
  • Deploy Scanner externo

Com isso você:

✅ reduz memória
✅ aumenta segurança
✅ melhora desempenho


8.5 Remova serviços e módulos que não usa

Quanto mais módulos ativos, maior o risco. No standalone.xml, desative subsystems que não usa, como:

  • WebSockets (se não houver necessidade)

  • Messaging

  • EJB Remoting

  • Deploy Scanner externo

Com isso você:

✅ reduz memória
✅ aumenta segurança
✅ melhora desempenho


8.6 Proteções adicionais (blindagem de servidor)


ProteçãoResultadoRate Limit (no proxy ou firewall) Ajuda contra DoS simples
Desativar TRACE e OPTIONS Evita fingerprint HTTP
HSTS e CSP (via headers) Protege front-end e cookies
Logar falhas de login Detecção precoce de ataque

9. Monitoramento e Logs no WildFly — Mantendo seu Servidor Saudável e Observável

Após ter seu servidor WildFly rodando no Windows 11, com segurança aplicada e aplicações no ar, o próximo passo é garantir visibilidade total do ambiente. Monitorar o servidor não é opcional — é o que permite identificar gargalos, prever falhas e agir antes que o usuário perceba qualquer instabilidade.

Uma aplicação sem monitoramento é como dirigir à noite com os faróis apagados.
Então, nesta seção, você vai aprender como monitorar, analisar métricas, gerenciar logs e implementar observabilidade real.


9.1 Logs principais do WildFly no Windows

No modo standalone, os logs ficam em:

WILDFLY_HOME\standalone\log\

Os arquivos mais importantes são:

LogFunção
server.logLog principal do servidor e da aplicação
boot.logLogs da inicialização do servidor
audit.logEventos administrativos e de segurança

Dicas práticas ao trabalhar com logs:

✅ Sempre usar log rotation
✅ Arquivar logs antigos automaticamente
✅ Ajustar nível de log (INFO → WARN → DEBUG conforme necessidade)

No standalone.xml, você pode alterar o nível de log facilmente:

<root-logger> <level name="INFO"/> </root-logger>
Em produção, evite DEBUG ou TRACE, pois geram muito volume e impactam desempenho.

9.2 Monitorando via Console Web (modo GUI)

O WildFly já oferece, nativamente, um painel de monitoramento.
Acesse: http://localhost:9990

Na console você acompanha:

  • Consumo de memória

  • Threads

  • Pools de conexão JDBC

  • Estado dos deployments

  • Subsistemas ativos

  • Tempo de resposta e status do servidor

É ideal para monitoramento rápido e visual.


9.3 Monitoramento via CLI (administradores avançados)

Para automação, o CLI é poderoso:

jboss-cli.bat --connect

Comandos úteis:

ComandoO que faz
/core-service=platform-mbean/type=memory:read-resource()Métricas de memória
/subsystem=datasources:read-resource()Monitora datasources
:reloadReinicia serviços sem desligar o servidor

9.4 Observabilidade real — integração com ferramentas globais

Para ambientes distribuídos ou quando o servidor atende usuários em diferentes países, você pode integrar o WildFly com:

FerramentaFinalidadeEscala
PrometheusColeta de métricas (pull)Global
GrafanaDashboards avançadosGlobal
Elastic Stack (ELK)Análise de logsCorporativo
ZabbixMonitoramento tradicionalEnterprise
JaegerTrace distribuídoMicrosserviços

Com isso, você transforma o WildFly em um ambiente observável com:

✅ Monitoramento em tempo real
✅ Alertas automáticos
✅ Dashboards acessíveis internacionalmente
✅ Tracing de requisições (ótimo para APIs)


9.5 Log Rotation e boas práticas

Para não encher disco em servidores Windows, configure rotation, por tamanho (recomendado) ou por data:

<periodic-rotating-file-handler name="FILE" autoflush="true"> <level name="INFO"/> <file relative-to="jboss.server.log.dir" path="server.log"/> <suffix value=".yyyy-MM-dd"/> <append value="true"/> </periodic-rotating-file-handler>

Checklist final de monitoramento inteligente:

ItemSituação ideal
Logs rotacionando
Alertas configurados
Painel de métricas
Console e CLI acessíveis
Tracing ativado em produção

10. Otimização de Desempenho (HTTP, Thread, Datasource e Windows)

(Resumo — porque este é um tópico grande e sensível, mas essencial)

Otimize:

ComponenteAjuste
HTTP/2 + HTTPSRespostas mais rápidas
Connection PoolPool adequado ao volume
GZIPReduz tamanho da resposta
CacheAcelera recursos estáticos
Windows ServicesDesativar serviços inúteis

11. Conclusão — Seu Servidor WildFly Local Está Pronto

Agora você possui:

✅ WildFly instalado e executando localmente no Windows 11
✅ Deploy de aplicações (WAR) funcionando
✅ Datasource configurado
✅ Segurança com HTTPS, firewall e usuários corretos
✅ Monitoramento, logs e observabilidade
✅ Um ambiente preparado para desenvolvimento global

Este servidor agora pode servir:

🌍 APIs
🌍 Aplicações corporativas
🌍 Portais Java
🌍 Microservices (com ajustes)

Chamada final (CTA):

Se este guia ajudou você, compartilhe, salve nos favoritos e visite nosso blog para mais conteúdos sobre servidores, segurança e desenvolvimento Java.


🌍 Criando um servidor WEB local no Windows 11 com JBoss WildFly (Guia Completo)

Leia mais

✝ Copyright © Blog do KDS - Isaías 40:5 “A glória do Senhor se manifestará, e toda a humanidade a verá.”