Problemas com Pool de Conexões

5 respostas
Zeed01

Boa noite Colegas !

Estou estudando pelo livro Desenvolvendo aplicações com JSP, Servlets, JavaServer Faces… do Edson Gonçalves e estou com problemas para fazer funcionar o exemplo de uso de Pool de Conexões.

Fiz todas as configurações, no entanto ao tentar executar o JSP de exemplo da o seguinte erro, parece problema na conexão.

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
	at org.apache.jsp.usandoJNDIDB_jsp._jspService(usandoJNDIDB_jsp.java:67)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	at java.lang.Thread.run(Unknown Source)

Esse é o JSP:

<%@ page language="java" 
	contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"
    import="java.sql.*, javax.sql.*, javax.naming.InitialContext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Usando Pool de Conexões</title>
</head>
<body>
	<table border="1">
		<tr>
			<th>ISBN</th><th>Título</th>
		</tr>
		<%
			Connection conn = null;
			Statement st = null;
			ResultSet rs = null;
			
			try {
				InitialContext ctx = new InitialContext();
				DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/LivrariaDB");
				
				conn = ds.getConnection();
				st = conn.createStatement();
				rs = st.executeQuery("Select isbn, titulo from livros");
				while (rs.next()) {
		%>	
		<tr>
			<td><%= rs.getString("isbn") %></td>
			<td><%= rs.getString("titulo") %></td>
		</tr>
		<%
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			} finally {
				if (rs != null) rs.close();
				if (st != null) st.close();
			}
		%>
	</table>
</body>
</html>

Este é o trecho do arquivo server.xml que o livro manda incluir:

<Context docBase="Livraria" path="/Livraria" reloadable="true" source="org.eclipse.jst.j2ee.server:Livraria">
      		<Resource name="jdbc/LivrariaDB" auth="Aplication"
      				type="javax.sql.DataSource"
      				driverClassName="com.mysql.jdbc.Driver"
      				url="jdbc:mysql://localhost:3306/livraria"
      				username="root"
      				password="adminadmin"
      				maxActive="30"
      				maxIdle="20000"
      				maxWait="120"/>
      </Context>

Desculpem o abuso… mas se alguém puder me ajudar, fico muito grato.
[]s

5 Respostas

M

Cara esse erro pode esta acontecendo porque você não adicionou o jar do driver do MySQL no buildpath da sua aplicação

Zeed01

Desculpe marcuscruz mas como verifico e como faço isso ?

Olhei no arquivo server.xml do diretório conf, e achei esse trecho que entendo estar errado:

<Resource
      name="jdbc/LivrariaDB"
      type="javax.sql.DataSource"
      maxActive="30"
      maxIdle="20000"
      username="root"
      maxWait="120"
      driverClassName="com.mysql.jdbc.Driver"
      password="adminadmin"
      url="jdbc:mysql://localhost/livraria"/>

Acho que a linha da url deveria ser url=“jdbc:mysql://localhost:3306/livraria”/>
só que eu tento alterar e não consigo salva-lo…

Tem uma forma especial de editá-lo ?

[]s

jbmsegundo

não existe forma especial de edita-lo, ja tentou com um editor de textos qualquer?

como o marcuscruz falou, acho que ta faltando o jar na buildpath de sua aplicação pois

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
Zeed01

jbmsegundo:

Obrigado pela ajuda…
Mas como disse eu não sei como fazer isso… você pode me ensinar ?

Deve ser problema no meu windows então, porque abri com o editor de texto e não consigo salvá-lo assim mesmo… não no diretório conf.
De qualquer forma driblei isso salvando-o em outro lugar e copiando de volta e o erro é o mesmo, então o problema deve ser mesmo de falta do driver.

Eu tenho o driver do mysql na pasta WEB-INF/lib

Se puder me ajudar fico muito grato.

[]s

jbmsegundo

dá uma olhada nesse material!!

Criado 11 de setembro de 2008
Ultima resposta 12 de set. de 2008
Respostas 5
Participantes 3