Galera to trabalhando num sistema pra web e ta dando o seguinte erro:
java.lang.ClassCastException
at gov.ipraj.contas.util.serviceLocator.ContaLocator.getDS(ContaLocator.java:46)
at gov.ipraj.contas.util.persistencia.Persistencia.abrirConexao(Persistencia.java:47)
at gov.ipraj.contas.util.persistencia.Persistencia.criarPs(Persistencia.java:108)
at gov.ipraj.contas.util.persistencia.Persistencia.setValue(Persistencia.java:200)
at gov.ipraj.contas.diarias.diaria.DiariaDAO.listar(DiariaDAO.java:119)
at gov.ipraj.contas.diarias.diaria.DiariaRN.listar(DiariaRN.java:367)
e o metodo que ta acusando o erro é esse:
public static DataSource getDS(String pName)
throws ContaFatalException
{
DataSource lDs = null;
Object lObj = null;
try
{
Context lContext = getContext();
lObj = lContext.lookup("java:comp/env/" + pName);;
lDs = (DataSource) lObj;
}
catch(NamingException e)
{
throw new ContaFatalException("ContaLocator", "getDS", e);
}
return lDs;
}
Aguardo uma ajuda de voces…
eu acho que o erro esta nesta linha
lDs = (DataSource) lObj;
Acho que o teofilo está certo:
java.lang.ClassCastException
Erro de coerção. Tem certeza se pode mudar um Object para DataSource?
[quote=“JavaDrops”]Acho que o teofilo está certo:
java.lang.ClassCastException
Erro de coerção. Tem certeza se pode mudar um Object para DataSource?[/quote]
eu alterei o codigo, mas continua dando o mesmo erro…
[code] public static DataSource getDS(String pName)
throws ContaFatalException
{
DataSource lDs = null;
try
{
Context lContext = getContext();
lDs = (DataSource)lContext.lookup("java:comp/env/" + pName);
}
catch(NamingException e)
{
throw new ContaFatalException("ContaLocator", "getDS", e);
}
return lDs;
}[/code]
alguem pode me dar essa ajuda…
Então mizifio, o erro é o mesmo, você só mudou o jeito de chamar, mas está fazendo a mesma coisa:
lDs = (DataSource)lContext.lookup(“java:comp/env/” + pName);
A prigunta é:
O que retorna quando você faz isso:
lContext.lookup(“java:comp/env/” + pName)
pode ser considerado um DataSource?
Outra coisa, já experimentou colocar com \ ao invés de ?
[quote=“JavaDrops”]Então mizifio, o erro é o mesmo, você só mudou o jeito de chamar, mas está fazendo a mesma coisa:
lDs = (DataSource)lContext.lookup(“java:comp/env/” + pName);
A prigunta é:
O que retorna quando você faz isso:
lContext.lookup(“java:comp/env/” + pName)
pode ser considerado um DataSource?
Outra coisa, já experimentou colocar com \ ao invés de ?[/quote]
e ai man, blz? ele retorna o nome do dataSource pra identificar no momento da conexao com o banco… ele retorna exatamente isso: jdbc/CONC?SSIONARIAS
Rafael,
Eu tenho que te confessar que ainda não mexi com banco de dados no Java, então estou dando tiro no escuro (mas às vezes a mira tá certinha).
Olhando teu código, particularmente nesse trecho:
Context lContext = getContext();
lObj = lContext.lookup("java:comp/env/" + pName);
lDs = (DataSource) lObj;
Eu não consegui identificar o que o getContext() faz (não achei na API da 1.4.2 esse método na interface/classe Context). Suponho que é um método que você criou e que, obviamente, retorna um objeto Context.
Então fui dar uma busca por um código parecido nos tutoriais da Sun e achei um da versão 1.5 (ou 5.0, tiger, ou qualquer outro nome que inventarem até a hora que você ler esse post) onde ao invés de getContext() eles usam assim:
Context lContext = new InitialContext(); // adaptado
A fonte: http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/getstart/datasource.html
Qualquer coisa tenta colocar a dúvida no forum específico de JDBC/SQL:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewforum&f=6
[quote=“JavaDrops”]Rafael,
Eu tenho que te confessar que ainda não mexi com banco de dados no Java, então estou dando tiro no escuro (mas às vezes a mira tá certinha).
Olhando teu código, particularmente nesse trecho:
Context lContext = getContext();
lObj = lContext.lookup("java:comp/env/" + pName);
lDs = (DataSource) lObj;
Eu não consegui identificar o que o getContext() faz (não achei na API da 1.4.2 esse método na interface/classe Context). Suponho que é um método que você criou e que, obviamente, retorna um objeto Context.
Então fui dar uma busca por um código parecido nos tutoriais da Sun e achei um da versão 1.5 (ou 5.0, tiger, ou qualquer outro nome que inventarem até a hora que você ler esse post) onde ao invés de getContext() eles usam assim:
Context lContext = new InitialContext(); // adaptado
A fonte: http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/getstart/datasource.html
Qualquer coisa tenta colocar a dúvida no forum específico de JDBC/SQL:
http://www.portaljava.com/home/modules.php?name=Forums&file=viewforum&f=6[/quote]
private static Context getContext()
throws ContaFatalException
{
try
{
if(context == null)
context = new InitialContext();
}
catch(NamingException e)
{
throw new ContaFatalException("ContaLocator", "getContext", e);
}
return context;
}
mas eu faço exatamento isso…
Aqui achei um problema semelhante, específico do JBoss:
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=63&t=001186
Dá uma olhada no Google com essas palavras chaves:
java:comp/env ClassCastException