segunda-feira, 16 de abril de 2012

Debug JBoss ou Weblogic no Eclipse

Uma ferramenta muito comum utilizada pelos desenvolvedores para detectar falhas nos softwares em desenvolvimento é o debug. Debug, conhecido em português como depuração  tem sua definição removida do Wiki apresentada da seguinte forma "Depuração (em inglês: debugging, debug) é o processo de encontrar e reduzir defeitos num aplicativo de software ou mesmo em hardware. Erros de software incluem aqueles que previnem o programa de ser executado e aqueles que produzem um resultado inesperado." (fonte: http://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o)

Para configurar este no JBoss ou Weblogic, basta checar no arquivo de inicialização de cada servidor e adicionar a seguinte linha:
"-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n" como opção de inicialização.
No Eclipse, basta configurar a opção de remote debugging e iniciar o debug e tudo estará pronto.
Lembrar de configurar a porta do remoting debuggind do Eclipse a mesma que apontou no parâmetro address.

Fica a dica...

MySQL nome da tabela case sensitive

   O objetivo do blog é catalogar alguns problemas encontrados durante o desenvolvimento de alguns projetos e recentemente no projeto que estou trabalhando atualmente tive um problema em migrar um banco de um ambiente Windows para o Mac. 

   O problema tem como a origem a forma como o MySQL armazena suas tabelas, pois ele grava como arquivos/pastas e cada S.O. tem sua particularidade no tratamento de nome de pastas e arquivos. Em ambientes Unix/Linux like você tem tratamento case sensitive. Ou seja, a pasta ALUNO é diferente da pasta aluno. Como isso pode gerar um problema? Eu estou trabalhando com hibernate que gera as consultas no formato: "SELECT * FROM ALUNO". Como a tabela foi criada como "aluno", o erro retornado era "table not exists". Após identificar a origem do problema com a ajuda da documentação do MySQL (http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html) descobri o parâmetro "lower_case_table_names". Este parâmetro mostra como o MySQL deve se comportar em relação as chamadas SQL em relação aos nomes da tabela (mais detalhes podem ser obtidos na documentação referenciada). Eu utilizava o MAMP (http://www.mamp.info/en/index.html) que traz a instalação e fácil acesso ao Apache e MySQL. Ele equivale ao XAMP no Windows (http://www.apachefriends.org/pt_br/xampp.html). 

   Com a instalação do MAMP o MYSQL é instalado de uma forma que o case sensitive é configurado em um modo default. Existe a opção de tentar configurar o MySQL do MAMP para o modo case insensitive porém eu não consegui. Como no MacBook que possuo, tenho o Lion instalado e não tive esse problema durante os testes com o banco migrado (isso aconteceu no Imac com Snow Leopard) eu resolvi instalar o MySQL do site oficial (http://dev.mysql.com/downloads/mysql/). E eis que o problema foi solucionado sem necessidade de configuração adicional. 

    Então fica a dica. No meu caso resolveu a instalação do MySQL oficial, entretanto existe formas de se resolver isso, caso não consiga ou possa reinstalar o banco. A configuração do parâmetro lower_case_table_names = 1 deve ser colocado no arquivo *.cnf usado pelo banco para passar as configurações para a instância.