Problema con el pool de conexiones en tomcat
Publicado por Julio J. (3 intervenciones) el 25/10/2006 11:54:36
Estoy intentando cambiar una aplicacion web en jsp con conexiones a mysql para
que use un pool de conexiones en lugar de establecer una conexión nueva en cada
petición. He estado leyendo por internet y he hecho todo lo que he encontrado,
pero me encuentro un error que no sé por qué se produce. Tal vez podais
ayudarme.
La aplicación está instalada en el directorio C:\Archivos de programa\Apache
Software Foundation\Tomcat 5.5\webapps\gpool. He añadido al server.xml el
siguiente context:
<Context path="/gpool" docBase="gpool" debug="0"
reloadable="true" >
<Resource
name="jdbc/gpool" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="gpool" password="pool"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1/gpool?autoReconnect=true">
</Context>
El fichero index.jsp incluye un fichero conectar.jsp, que realiza la conexión
utilizando el pool con el siguiente código:
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%
Context ctx = new InitialContext();
DataSource fuenteDatos = (DataSource) ctx.lookup("java:comp/env/jdbc/gpool");
con = fuenteDatos.getConnection();
s = con.createStatement();
%>
En el directorio C:\Archivos de programa\Apache Software Foundation\Tomcat
5.5\common\lib he copiado el fichero mysql-connector-java-3.1.10-bin.jar. Al
reiniciar el tomcat y acceder a la página web me da el siguiente error:
javax.servlet.ServletException: El nombre jdbc no este asociado a este contexto
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:3753)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
causa raíz
javax.naming.NameNotFoundException: El nombre jdbc no este asociado a este contexto
org.apache.naming.NamingContext.lookup(NamingContext.java:769)
org.apache.naming.NamingContext.lookup(NamingContext.java:139)
org.apache.naming.NamingContext.lookup(NamingContext.java:780)
org.apache.naming.NamingContext.lookup(NamingContext.java:139)
org.apache.naming.NamingContext.lookup(NamingContext.java:780)
org.apache.naming.NamingContext.lookup(NamingContext.java:152)
org.apache.naming.SelectorContext.lookup(SelectorContext.java:136)
javax.naming.InitialContext.lookup(Unknown Source)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:354)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
No sé lo que puede estar mal. Ésto lo he hecho sin crear ningún web.xml en la
aplicación. También he intentado crear uno en el directorio C:\Archivos de
programa\Apache Software Foundation\Tomcat 5.5\webapps\gpool\WEB-INF con el
siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<resource-ref>
<res-ref-name>jdbc/gpool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Pero entonces me da el siguiente error:
javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:3753)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
causa raíz
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:356)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
La versión de tomcat que estoy usando es la 5.5.9. Si me pudierais ayudar os lo
agradecería.
Saludos.
que use un pool de conexiones en lugar de establecer una conexión nueva en cada
petición. He estado leyendo por internet y he hecho todo lo que he encontrado,
pero me encuentro un error que no sé por qué se produce. Tal vez podais
ayudarme.
La aplicación está instalada en el directorio C:\Archivos de programa\Apache
Software Foundation\Tomcat 5.5\webapps\gpool. He añadido al server.xml el
siguiente context:
<Context path="/gpool" docBase="gpool" debug="0"
reloadable="true" >
<Resource
name="jdbc/gpool" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="gpool" password="pool"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1/gpool?autoReconnect=true">
</Context>
El fichero index.jsp incluye un fichero conectar.jsp, que realiza la conexión
utilizando el pool con el siguiente código:
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%
Context ctx = new InitialContext();
DataSource fuenteDatos = (DataSource) ctx.lookup("java:comp/env/jdbc/gpool");
con = fuenteDatos.getConnection();
s = con.createStatement();
%>
En el directorio C:\Archivos de programa\Apache Software Foundation\Tomcat
5.5\common\lib he copiado el fichero mysql-connector-java-3.1.10-bin.jar. Al
reiniciar el tomcat y acceder a la página web me da el siguiente error:
javax.servlet.ServletException: El nombre jdbc no este asociado a este contexto
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:3753)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
causa raíz
javax.naming.NameNotFoundException: El nombre jdbc no este asociado a este contexto
org.apache.naming.NamingContext.lookup(NamingContext.java:769)
org.apache.naming.NamingContext.lookup(NamingContext.java:139)
org.apache.naming.NamingContext.lookup(NamingContext.java:780)
org.apache.naming.NamingContext.lookup(NamingContext.java:139)
org.apache.naming.NamingContext.lookup(NamingContext.java:780)
org.apache.naming.NamingContext.lookup(NamingContext.java:152)
org.apache.naming.SelectorContext.lookup(SelectorContext.java:136)
javax.naming.InitialContext.lookup(Unknown Source)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:354)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
No sé lo que puede estar mal. Ésto lo he hecho sin crear ningún web.xml en la
aplicación. También he intentado crear uno en el directorio C:\Archivos de
programa\Apache Software Foundation\Tomcat 5.5\webapps\gpool\WEB-INF con el
siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<resource-ref>
<res-ref-name>jdbc/gpool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Pero entonces me da el siguiente error:
javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:3753)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
causa raíz
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:356)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
La versión de tomcat que estoy usando es la 5.5.9. Si me pudierais ayudar os lo
agradecería.
Saludos.
Valora esta pregunta


0