Qualidade de código: encapsular estruturas condicionais

Recentemente escrevi sobre qualidade de código apresentando uma ferramenta de análise de código chamada Sonar. Esta ferramenta verifica vários aspectos do código fonte, entre eles a complexidade do código. Códigos complexos possuem muitos caminhos de execução e, além de ter uma chance maior de serem origens de bugs, são mais difíceis de ler. O ideal…

java.net.UnknownHostException

Esta exceção geralmente ocorre quando o acesso a internet é feito por meio de um proxy interno. Neste caso, é necessário passar como argumento para a VM a configuração do proxy. Exemplo: -Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy -Dhttps.proxyPort=8001

Como criar um projeto EJB com Eclipse

Ao estudar EJBs, vemos muita teoria, muitos conceitos, muitos diagramas… E na hora de colocar a mão na massa é uma confusão. Criei este tutorial para aqueles que passaram por toda a teoria e estão engatinhando com EJBs. O tutorial mostra passo a passo a implementação de um projeto EJB e a utilização de um…

EJB: Stateless Session Bean

O diagrama de classes abaixo ilustra a modelagem de um EJB Stateless para um hipotético serviço de criptografia. Criptografia por si só é um tópico muito mais complexo do que sugere este diagrama, assim com EJBs, mas o foco aqui é mostrar como os componentes EJB se relacionam. A interface EncryptionCommonBusiness serve como um contrato…

Padrões de Código Java do Google e Oracle

O Google Java Style, ou Estilo de Código do Google, é um guia de referência de como organizar o código fonte dentro do Google, ou seja, os princípios que todos os desenvolvedores do Google seguem. O documento é muito interessante e fornece uma ideia de como organizar seu código em um padrão de alto nível,…

Monitoramento de performance Java com VisualVM

É importante ver e entender os números e estatísticas de performance de aplicações e existem inúmeras ferramentas para monitorar aplicações para registrar seu comportamento ao longo da execução. A plataforma Java dispõe da ferramenta VisualVM, pouco conhecida, mas muito poderosa e útil. O melhor de tudo de tudo é que esta ferramenta faz parte da…

Nginx + Tomcat 7 + Java: Cluster com replicação de sessão

No post Load balancing: simulando um cluster com NGinx e Tomcat em localhost foi mostrado como configurar o NGinx para fazer o balanceamento de carga de três instâncias do Tomcat rodando na mesma máquina. Imagine que tenhamos uma aplicação que faz uso de sessão para armazenar dados do usuário e de navegação. Como essa aplicação…

[Resolvido] SEVERE: Request[/url] does not contain handler parameter named ‘action’

Recentemente tive que fazer manutenção em um sistema bem antigo, código de 10 anos atrás, J2EE 1.4 e Struts 1. Tive o seguinte erro ao acessar algumas páginas novas que havia desenvolvido: SEVERE: Request[/url] does not contain handler parameter named ‘action’ Depois de muito penar pela internet em vários fóruns e não encontrar solução, encontrei…

Kata e TDD: um exemplo prático

Nas artes marciais, um kata é um conjunto preciso de movimentos que simula um lado de um combate. O bjetivo de um kata é atingir a perfeição, é treinar a mente e o corpo para agir em uma situação real particular, de forma que os movimentos perfeitos se tornem automáticos e esteja a disposição quando…