Olá a todos;
Pessoal estou fazendo um projetinho Java em Web (Jps+Servlet) porém está acontecendo algo que para mim é um mistério.
Eu acredito que seja algo bem simples, provavelmente até algum conceito que eu não conheço.
Vamos lá:
Nesse projeto Web estou usando um o DB HSqlDb para persistência dos dados etc.
Porém quando o meu Servlet chama uma classse que eu fiz para conectar ao Db e somente via DAO fazer as consultas etc o meu projeto parece não conseguir se conectar ao Db o que me retorna um NullPoint e daí para frente é pau.
O que me estranha é o seguinte, eu tenho um pacote nesse projeto para testes das minhas classe (uma classe com main()) incluindo essa que faz conexão no DB e nos DAOs, hehehe e quando roda esses testes tudo roda blz, ou seja, me conecto no Db normalmente e faço todas as consultas belezinha…
Eu acredito que isso tenha mais a ver com conceitos, aonde colocar os JAR e até mesmo os .Class, mas enfim, já tentei de tudo pessoal.
No começo eu achei que fosse problema com os projeto visto que eu separo tudo em vários projetos distintos e depois faço referência etc.
Mas agora eu estou testando tudo no projeto Web, ou seja, passei as minhas classes para o projeto Web para 100% de certeza.
Bom o erro que me aparece é esse aqui:
java.sql.SQLException: No suitable driver found for jdbc:hsqldb:hsql://localhost/
at java.sql.DriverManager.getConnection(Unknown Source
E depois dá um NullPoint em um dos meus DAOs pois a minha Connection é NULL, eu já dei uma debugada e via que falha bem aqui:
[i] private String url = “jdbc:hsqldb:hsql://localhost/”;
private String user = “SA”;
private String pass = “”;
private Connection connection;
public HSqlDBImpl() {
try {
connection = DriverManager.getConnection(url,user,pass);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[/i]
Alguém aí saberia qual é o problema ???
Até +
Nunca essei DB…maaas, pelo erro, acho que ele não tá achando o driver pra ele.
Você tem o driver dele na sua lista de jars?
E o nome do banco de dados na string?
"jdbc:hsqldb:hsql://localhost/nomeDoBanco";
Vc omitiu de propósito ou esqueceu mesmo?
Opa pessoal;
Primeiramente Valeu pela atenção:
Então eu tenho a JAR do HSqlDB lá no projeto, tanto é que se eu rodo a minha MAIN de Teste funciona normal…conecto e faço as consultas.
Já quanto ao nome do DB no HSqlDB se você não colocar nada ele aceita como sendo um default. Eu sinceramente não acho que o problema seja aqui já que se eu rodo essa String/conexão usando meu MAIN de Teste funciona…
Mas por via das dúvidas:
Eu vou tentar criar um DB com um nome fechado para testar…e ver o que acontece ok.
Estranho né pessoal, uma classe normal consegue usar a conexão já o Servlet não ???
Hehehehe,
Uma coisa pessoal, eu estou usando o Eclipse e o mesmo está configurado para salvar os .class no Build e não no WEB-INF/Classes, eu acho que o problema também não é aqui visto que as minhas outras Servlet (heheh as que não usam o DB) estão funcionando legal e também já fiz o teste de trocar para o WEB-INF/Classes mas deu na mesma.
Outra coisa, os meus JAR estão sendo importatos externamente e não sendo colocados na pasta LIB do WEBCONTENT, o que vocês acham ???
Não sabia que podia usar a string de conexão sem o nome do banco, mas se os testes funcionam o problema pode ser que seu jar do hsqldb não estejam sendo adicionados na pasta lib do projeto. Da uma checada no arquivo .war da aplicação e veja se dentro dele tem a pasta lib com os jars.
Opa Valeu;
Acabei de criar um DB com um nome e um alise.
Mudei a minha string de conexão mas deu o mesmo problema…vou dar uma olhada no que você falou agora para ver…
Valeu…
Vixi Cara, o meu projeto não tem nenhum arquivo .WAR…
Deveria ter ??? Se sim por que será que o emu Eclipse não gerou…
obs: Uma perguntinha tosca: para que serve esse .war ?
Também dei uma olhada nos exemplo que vem com o TomCat e lá tb não tem…
Acabei de fazer um teste:
Copiei as minhas JAR para a pasta lib do WEB-INF e dei um AddExternalJAR mas ainda sim deu o mesmo problema…
Com certeza é algo relacionado ao que você disse, por algum motivo classes normais consegue referências 100% o jar do HSqlDB porém os Servlet não.
Bom é isso aí…
[quote=usphisics]Vixi Cara, o meu projeto não tem nenhum arquivo .WAR…
Deveria ter ??? Se sim por que será que o emu Eclipse não gerou…
obs: Uma perguntinha tosca: para que serve esse .war ?
Também dei uma olhada nos exemplo que vem com o TomCat e lá tb não tem…
Acabei de fazer um teste:
Copiei as minhas JAR para a pasta lib do WEB-INF e dei um AddExternalJAR mas ainda sim deu o mesmo problema…
Com certeza é algo relacionado ao que você disse, por algum motivo classes normais consegue referências 100% o jar do HSqlDB porém os Servlet não.
Bom é isso aí…[/quote]
Boa noite usphisics,
Quando você tem um Java Project, você pode gerar um .jar com ele certo?
Agora quando você tem um Dynamic Web Project, você não gera um .jar e sim um .war
Da uma lida nesse conteudo porque acho que ta faltando você fazer alguns mapeamentos !
http://www.dsc.ufcg.edu.br/~jacques/cursos/j2ee/html/servlets/techsupport.htm
Falo !
Se não está usando arquivo .war, você precisa adicionar o drive do hsqldb dentro do diretório webContent/lib
É nesse diretório que o servidor vai ler todas as dependências externas da aplicação.
Valeu pessoal por toda a ajuda…
O problema os sr acertaram, os jar estavam fora do lugar correto.
O mais engraçado é q ontem eu tentei colocar os mesmo na lib do web-inf mas continuou dando pau.
Hoje a única coisa q fiz foi mudar o workspace para outro lugar e mandar o eclipse importar o projeto novamente…hehehe funcionou.
Bom mas o importante é isso, funcionou…
Valeu…
Boa noite,
Então coloca [RESOLVIDO] no assunto do fórum, se outras pessoas tiverem a mesma duvida !
Falo !