No suitable driver found

28/02/2013

1

Boa tarde galera,

Estou com recebendo um erro que não sei o que falta, já segui vários fóruns e nenhuma solução resolveu meu problema.
Recebo o erro :

WARNING: SQL Error: 0, SQLState: 08001
SEVERE: No suitable driver found for jdbc:mysql://localhost:3306/horas
WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection
       at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1179)
       at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1112)
       at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1189)
       at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:63)
       at filters.JPAFilter.doFilter(JPAFilter.java:38)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
       at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
       at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
       at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
       at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
       at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
       at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
       at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
       at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
       at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
       at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
       at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
       at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
       at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
       at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
       at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
       at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
       at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
       at java.lang.Thread.run(Thread.java:722)
Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection
       at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
       at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
       at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
       at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
       at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
       at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
       at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
       at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463)
       at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60)
       ... 26 more


Meu filtro é:
package filters;

import java.io.IOException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter(servletNames={"Faces Servlet"})
public class JPAFilter implements Filter{

	private EntityManagerFactory factory;
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		this.factory = Persistence.createEntityManagerFactory("horas-pu");
	}
	
	@Override
	public void destroy() {
		this.factory.close();		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		//CHEGADA
		EntityManager manager = this.factory.createEntityManager();
		request.setAttribute("EntityManager", manager);
		manager.getTransaction().begin();
		
		//FACES SERVLET
		chain.doFilter(request, response);
		
		//SAÍDA
		try{
			manager.getTransaction().commit();
		} catch (Exception e){
			manager.getTransaction().rollback();
		} finally {
			manager.close();
		}
		
	}
	
}


ADicionei o mysql connector no build path do projeto, na WebContent/lib, na pasta lib do glassfish.
Criei uma classe para gerar as tabelas, por lá a conexão está Ok, retorna este erro quando roda o JSF no glassfish.
Já adicionei o Class.forName e o DriverManager.registerDriver e nenhum resolveu..

Se alguém puder dar uma mãozinha ai..

Obrigada
Responder

Posts

01/03/2013

Davi Costa

o banco está no ar qdo vc sobe a aplicação?

att Davi
Responder

01/03/2013

Alessandra

Oi Davi,

Esta, se eu rodar a classe pra gerar as tabelas a conexão com banco ocorre ok, quando rodo o JSF é que recebo o erro 500 com esta stacktrace, que mostrei acima..

Tentei ir no painel de controle do glassfish e quando tentei dar um ping em uma conexão recebi o seguinte erro:
Ping failed Exception - Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource Please check the server.log for more details.


Obrigada
Responder

01/03/2013

Davi Costa

Esse glassfish fica na sua máquina local?

att Davi
Responder

01/03/2013

Alessandra

Opa,

Fica sim, oh o caminho dele D:\Meus documentos\ambiente_desenvolvimento\glassfish3
Copiei o mysqlconnector pra D:\Meus documentos\ambiente_desenvolvimento\glassfish3\glassfish\lib

Att
Responder

01/03/2013

Davi Costa

A única coisa que eu desconfio agora é a versão do driver mysql
Tenta verificar isso

att Davi
Responder

01/03/2013

Alessandra

Esta com o mysql-connector-java-5.1.21-bin, vi que a versão atual é o mysql-connector-java-5.1.23-bin
Como descubro qual é compatível?

Att
Responder

01/03/2013

Davi Costa

seguiu algum tutorial ou algo assim?

att Davi
Responder

01/03/2013

Alessandra

Ooi,

Segui uma apostila, havia feito o exercício já no curso, estou montando este projeto em cima desse exercício.

Att,
Alessandra
Responder

04/03/2013

Davi Costa

e realemnte está usando os mesmos jars do tutorial (E O MESMO AMBIENTE, SERVIDOR, BANCO E TUDO MAIS)?pq se sim, esse tutorial "pode" estar com problemas

att Davi
Responder

24/07/2013

José

Olá pessoal, acho que a duvida foi sanada né, sendo assim estou dando o tópico por concluído.
Responder