Web com firebird - iniciante [RESOLVIDO]

5 respostas
rodrigo_porto1

eae galera, blz…
Sou novo com java e estou acompanhando a apostila da Caelum fj21 mas estou tendo problemas para realizar conexao com banco de dados firebird em um projeto web. Em um execicio anterior em que o projeto nao era web realizei a conexao e efetuei transacoes de insercao, consulta, etc no banco de dados normalmente.
Agora no projeto web nos exercicios do item 5.9 nao funciona.
Os exercicios pedem:

1 - importar algumas classes para conexao e transacao com banco de dados.
essas classes para importar sao as do outro projeto que ja funciona mas nao é um projeto web. OK
2 - criar uma pagina html para cadastrar os contatos.
criada a pagina adiciona-contato.html conforme apostila. OK
3 - criar uma servlet para gravar o contato no banco de dados e mapear a servlet no arquivo web.xml.
criada a servlet AdicionaContatoServlet.java e mapeada no arquivo web.xml conforme apostila. OK

Obs: coloquei o arquivo do driver do firebird (“jaybird-full-2.1.6.jar”) na pasta web-inf/lib/ e adicionei no projeto o driver atraves do build path do eclipse e tambem adicionei no class path o endereco do driver web-inf/lib/.

Esta é minha classe que cria a instancia da conexao

public class ConnectionFactory {

public Connection getConnection() throws ClassNotFoundException{

try {

Class.forName(org.firebirdsql.jdbc.FBDriver);

String url = jdbc:firebirdsql:localhost/3050:C:/database/banco.fdb;

Connection conn = DriverManager.getConnection(url, SYSDBA, masterkey);

return conn;

} catch (SQLException e) {

throw new RuntimeException();

}

}

}

ela é chamada no constructor desta classe

public class ContatoDao {

private Connection conexao;

public ContatoDao() {

try {

this.conexao = new ConnectionFactory().getConnection();

} catch (ClassNotFoundException e) {

throw new RuntimeException(e);

}

}

.

.

.

e na servlet eu crio o objeto da classe “ContatoDao”

Na pagina html e ao clicar no botao de gravar vem o seguinte erro:

java.lang.RuntimeException: java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver

pckServlet.ContatoDao.(ContatoDao.java:18)

pckServlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:50)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause
java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)

org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)

java.lang.Class.forName0(Native Method)

java.lang.Class.forName(Unknown Source)

pckServlet.ConnectionFactory.getConnection(ConnectionFactory.java:9)

pckServlet.ContatoDao.(ContatoDao.java:16)

pckServlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:50)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.33 logs.

Alguem sabe oque poderia estar errado???
obrigado.

5 Respostas

romarcio

Quando postar código use as tags CODE, leia como: http://www.guj.com.br/java/50115-vocnovo-no-guj-vai-criar-um-tico-e-colar-seu-cigo-fonte-leia-aqui-antes-por-favor

O erro acontece por que a aplicação não está encontrando o arquivo .jar do driver.
Vai no servidor e confere se o arquivo está la na sua aplicação mesmo, ou então adicione o arquivo na pasta lib do servidor.

rodrigo_porto1

olá romarcio, desculpe por ter nao ter lido o manual e postado a duvida de maneira errada.

Aparentemente reslovi o problema, antes eu estava colocando o driver “.jar” na pasta lib do servidor e tambem a adicionando no build path do projeto.
Por tentativa eu removi do build path e deixei apenas o arquivo na pasta lib do servidor e funcionou corretamente.

Obrigado pela atencao.

romarcio

rodrigo_porto:
olá romarcio, desculpe por ter nao ter lido o manual e postado a duvida de maneira errada.

Aparentemente reslovi o problema, antes eu estava colocando o driver “.jar” na pasta lib do servidor e tambem a adicionando no build path do projeto.
Por tentativa eu removi do build path e deixei apenas o arquivo na pasta lib do servidor e funcionou corretamente.

Obrigado pela atencao.

Quando você tem o mesmo jar tanto no servidor como na aplicação, acaba dando conflito e o aparece o erro de classe não encontrada.
Geralmente o arquivo jar do drive você pode deixar no servidor, já que varias outras aplicações podem acabar usando ele também.

saoj

Já que vc está usando Firebird, tenta me dar uma mão aqui: http://www.guj.com.br/java/254006-firebird-pegando-o-id-gerado-via-insert--returning

rodrigo_porto1

Desculpa Saoj mas axo q nao vou conseguir te ajudar.

Criado 29 de setembro de 2011
Ultima resposta 30 de set. de 2011
Respostas 5
Participantes 3