Como utilizar classe Oracle do Projeto invéz da versão do Tomcat?

3 respostas
rafaelsgarbulho

Caros minha situação é a seguinte, no Tomcat do server tem instalado uma versao do Oracle que utiliza o arquivo classes12.jar mas o correto para que eu consiga ler os campos Clob seria o ojdbc.jar.

Adicionei o jar na web-inf\lib mas o erro persiste, como eu consigo estipular que seja lida essa lib invéz da existente no server?

3 Respostas

rafaelsgarbulho

kodomo:
Boa tarde rafaelsgarbulho,

Isso acontece por causa do classloader, é ele quem cuida de carregar as classes para a aplicação e para isso ele segue uma ordem para carrega essas classes.

1º - Verifica se tem a classe no path da aplicação;

2º - Verifica no container(Tomcat, JBoss, etc);

3º - Verifica na própria VM.

se tiver um jar no path da aplicação e outro na VM a prioridade é o jar que esteja na VM.
se tiver um na aplicação e outro no Tomcat, a prioridade é o que está no Tomcat.

No seu casos ele sempre vai pegar a classe que está no Tomcat, então a solução é vc remover o jar do Tomcat ou colocar o esse jar direto no Tomcat.

PS.: Não importa se os nomes dos jars são diferentes o classloader eh esperto pra verificar o conteúdo do jar. :twisted:

Espero ter ajudado! :wink:
Até mais!

Perfeita a informação, havia lido isso ontém a noite após o post.

Me foi sugerido também TENTAR jogar o jar no lib do projeto depois criar uma outra classe que implementa a classe “oracle.jdbc.driver.OracleDriver”

tipo: class OracleDriverNovo extends oracle.jdbc.driver.OracleDriver {}

Ai no xml seria alterado:
driverClassName=“oracle.jdbc.driver.OracleDriver”
para
driverClassName=“pacote.qualquer.OracleDriverNovo”

Será que rola? ou contradiz a informação acima?

rafaelsgarbulho

Problema RESOLVIDO, sem lentidão e mostrando todos os campos
UTILIZEM:

rs.getClob("nome_do_campo").getSubString(1, (int) rs.getClob("nome_do_campo").length());

Faz leitura do clob depois substring q Automatizando a conversao

3rd_child

Boa tarde rafaelsgarbulho,

Isso acontece por causa do classloader, é ele quem cuida de carregar as classes para a aplicação e para isso ele segue uma ordem para carrega essas classes.

1º - Verifica se tem a classe no path da aplicação;

2º - Verifica no container(Tomcat, JBoss, etc);

3º - Verifica na própria VM.

se tiver um jar no path da aplicação e outro na VM a prioridade é o jar que esteja na VM.
se tiver um na aplicação e outro no Tomcat, a prioridade é o que está no Tomcat.

No seu casos ele sempre vai pegar a classe que está no Tomcat, então a solução é vc remover o jar do Tomcat ou colocar o esse jar direto no Tomcat.

PS.: Não importa se os nomes dos jars são diferentes o classloader eh esperto pra verificar o conteúdo do jar. :twisted:

Espero ter ajudado! :wink:
Até mais!

Criado 24 de março de 2008
Ultima resposta 24 de mar. de 2008
Respostas 3
Participantes 2