Com certeza é simples, porém?

10 respostas
usphisics

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  um NullPoint em um dos meus DAOs pois a minha Connection é NULL, eu  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é +

10 Respostas

J

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?

romarcio

E o nome do banco de dados na string?

"jdbc:hsqldb:hsql://localhost/nomeDoBanco";

Vc omitiu de propósito ou esqueceu mesmo?

usphisics

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 ???

romarcio

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.

usphisics

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…

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í…

R

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í…

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 :smiley:

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 !

romarcio

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.

usphisics

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…

R

Boa noite,

Então coloca [RESOLVIDO] no assunto do fórum, se outras pessoas tiverem a mesma duvida !

Falo !

Criado 29 de maio de 2011
Ultima resposta 31 de mai. de 2011
Respostas 10
Participantes 4