Bug Oracle Driver 11.2.0.x

Solução de contorno para o erro “SQLException: Invalid column type: sqlType=2009” lançado pelo Driver Oracle ojdbc.jar versão 11.2.0.x ao tentar atribuir NULL a uma coluna do tipo XMLTYPE

Ao utilizar o Driver do Oracle ojdbc.jar versão 11.2.0.x, não foi possível atribuir NULL a uma coluna do tipo XMLTYPE, utilizando o java.sql.Type correspondente. Assim, na execução do código statement.setNull(i, Types.SQLXML) o driver lança o seguinte erro:  SQLException: Invalid column type: sqlType=2009.

Após gastar um tempo de pesquisa, não encontrei nenhum fix do driver. O que encontrei foi uma solução de contorno, conforme código abaixo. Continue lendo “Bug Oracle Driver 11.2.0.x”

JBoss EAP 6.x ClassLoading Isolation

Sem dúvida que Servidores JEE que se prezem são mais robustos, mesmo para simples aplicações WAR. Assim, se o Classloading Isolation é trabalhoso, vale a pena o esforço.

JBossAS7ClassloadingAssim como acontece muito nos Servidores de Aplicação JEE como o  IBM WebSphere ou no Oracle WebLogic, o Classloading Isolation no JBoss EAP não é tão simples em alguns casos. Claro que o nosso desejo é sempre gerarmos um EAR/WAR “limpo” de arquivos de configurações, que rode em qualquer servidor de aplicação. Geralmente temos desistido e voltado para o bom e velho Apache Tomcat, o que não é ruim quando precisamos rodar apenas arquivos WAR. Creio que não temos muitos problemas com o Tomcat porque ele não possui (em seu ambiente) muitas APIs ou Frameworks que poderiam provocar conflitos com as utilizadas pelas aplicações. Mas é fato que nem sempre iremos produzir somente pacotes WAR. E quando precisarmos de Segurança, Escalabilidade, Transação e outros tantos serviços presentes na especificação JEE? Sem dúvida que Servidores de Aplicação JEE que se prezem são mais robustos, mesmo para simples aplicações WAR. Assim, se o Classloading Isolation é trabalhoso, vale a pena o esforço (até certo ponto, obviamente).

À medida que eu encontrar problemas e soluções de Classloading Isolation no JBoss, vou atualizando este post. Descrevo abaixo alguns problemas e soluções:

1) Isolando bibliotecas do EAP 6.x para utilizar as que estão definidas na aplicação

Basicamente, basta configurar o arquivo /WEB-INF/jboss-deployment-structure.xml. No exemplo abaixo, a versão do SL4J utilizada pelo EAP é excluída do classloading, para que seja utilizada a versão definida na aplicação:

post 1-1

Esta é a configuração básica de isolamento e deve funcionar na maioria dos casos. Entretanto, para determinadas APIs, o isolamento não é tão simples, como é o caso do JSF (Java Server Faces) e JPA (Java Persistence API).

Continue lendo “JBoss EAP 6.x ClassLoading Isolation”

Problema JS usando rich:comboBox

O problema relatado neste post foi descoberto utilizando o componente do RichFaces na versão 3.3.3.Final. Tendo em vista não ter sido encontrado, na Internet, a razão para o erro de JavaScript informado abaixo, descrevemos o problema (javascript) e a “solução” adotada

O problema relatado neste post foi descoberto utilizando o componente <rich:comboBox> do RichFaces na versão 3.3.3.Final. Tendo em vista não ter sido encontrado, na Internet, a razão para o erro de JavaScript informado abaixo, descrevemos o problema (javascript) e a “solução” adotada:

PROBLEMA:

  • No Chrome

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
Richfaces.ComboBoxList.resetStatecombolist.js:24
Richfaces.ComboBoxList.hidecombolist.js:10
Richfaces.ComboBoxList.hideWithDelaycombolist.js:10
Richfaces.ComboBox.fieldBlurHandlercombobox.js:25
(anonymous function)3_3_3.Finalorg.ajax4jsf.javascript.PrototypeScript:17
wrapper

  • No Firefox

Erro: uncaught exception: [Exception… “Node was not found” code: “8” nsresult: “0x80530008 (NS_ERROR_DOM_NOT_FOUND_ERR)” location: “/ContextRoot/faces/a4j/g/3_3_3.Finalscripts/combolist.js Line: 24”]

SOLUÇÃO:

Continue lendo “Problema JS usando rich:comboBox”

Cloud computing?

Cloud Computing (computação nas nuvens)? Nova era digital? Eu quero mais que a Locaweb fique “nas nuvens” e eu fique com meu pé na Integrator.com.br

A Locaweb cresceu e está “nas nuvens”. Recordo-me quando hospedei a NetBiblia nos servidores deste serviço de hospedagem e muito me agradou. Tive poucos problemas com eles, mas nada que não pudéssemos nos entender.

Para que a NetBíblia funcione bem, basta um banco MySQL e um WebContainer, tal como o Tomcat. A Locaweb, inicialmente, disponibilizava em seu Plano de Hospedagem Profissional I uma JVM compartilhada, além de outros benefícios. Valor XYZ a cada três meses.

Essa JVM compartilhada era bem concorrida, mas para mim atendia de modo suficiente. Só que há alguns meses, a Locaweb deu um prazo para exterminar sua JVM compartilhada, OBRIGANDO os clientes que dela se valiam a contratar uma JVM dedicada. Valor: R$50,00 por mês. E isso fora o valor do plano de hospedagem (XYZ)!

Aí me veio na memória a nova propaganda da Locaweb: “Cloud Computing é Locaweb”. É “computação nas nuvens”, a “nova era digital”, blá, blá, blá. Imagino o porte dos clientes que a Locaweb tem agora. Eles estao fazendo um marketing pesado e em horário nobre na Rede Globo (plin-plin)! Agora, quem é Leonardo Pereira? O que é a NetBíblia?

Quanto vale para a Locaweb um cliente tal como eu, que só precisava da continuação de um simples e humilde Tomcat compartilhado? Mas NÃO! Se eu quisesse fazer parte desta “nova era digital”, eu teria que desembolsar mais grana para isso. Resultado: a Locaweb não me deu outra alternativa a não ser SAIR. Minha NetBíblia, de repente, ficou fora do ar e a empresa que dispõe de uma “computação nas nuvens” não podia me ajudar, pois eles não tinham mais JVM Compartilhada.

Assim, achando um grande absurdo que a NetBíblia ficasse fora do ar por causa disso, começei a procurar rapidamente um outro serviço de hospedagem, com suporte a Java, que atendesse às minhas elementares necessidades técnicas, pé no chão, sem qualquer anseio por andar nas nuvens. Após pesquisar no Google, em fóruns e opiniões, foi então que conheci a Integrator.com.br. A satisfação foi tão grande que começei a correr para migrar todos os domínios que administro para lá, assim como este Blog WordPress e, por fim, a NetBíblia.

Ainda estou no período de teste na Integrator.com.br, mas já posso dizer que já decidi onde passarei a gerenciar minha hospedagem. Além de possuírem um excelente custo-benefício, o pessoal lá é bem experiente em Java, a linguagem com a qual trabalho há 10 anos! Cansei de ter que ajudar o suporte da Locaweb com Java, e depender que eles fizessem quase tudo para mim em termos de configurações de banco, servidor, etc. A Integrator.com.br disponibiliza uma console de administração COMPLETA e atendimento rápido e de 1ª qualidade. Até agora estou muito satisfeito! Recomendo.

Endereços relacionados:

Cloud computing: ausência de formatos gera frustração.

Locaweb tem instabilidade há mais de dez dias, alertam clientes.

Ah, não me custa reforçar: a NetBíblia está de casa nova. Leiam e divulguem à vontade!

Isolamento de ClassLoader por EAR no JBoss

Um relato sobre uma dificuldade encontrada com o JBoss, versão 4.2.3.GA para JDK1.6, relacionado ao isolamento de ClassLoader por EAR.

Relato abaixo uma dificuldade encontrada com o JBoss, versão 4.2.3.GA para JDK1.6, relacionado ao isolamento do ClassLoader por EAR.

É realmente estranho o parâmetro de configuração de deploy Isolated do arquivo \deploy\ear-deployer.xml ser false como default. Isso faz com que o ClassLoader do JBoss carregue uma única vez uma determinada classe presente em um módulo Java (Utility JAR) de um determinado EAR. Se outro EAR contiver aquela mesma classe, mesmo que em outra versão, o JBoss ignorará completamente esta. Na prática, é como se a primeira classe carregada pelo JBoss se tornasse globalizada para todas as aplicações. Ainda bem que isso é configurável… Mas demoramos um pouco para descobrir.

No meu fraco entendimento do assunto, nem deveria haver este parâmetro. Mas já que ele existe, sinceramente gostaria de ouvir uma explicação plausível do porque Isolated=false é default .

Para um melhor entendimento do assunto, encontrei os seguintes endereços:

http://community.jboss.org/wiki/ClassLoadingConfiguration (procure por EARDeployer nesta página)

http://stackoverflow.com/questions/1139367/deploying-multiple-versions-of-same-ejbs-and-classes-to-same-jboss-server (2º resposta à pergunta)

Leonardo Pereira