Estoy tratando de crear un pool de conexiones en tomcat, para acceder a la base de datos, y me esta dando un error heavy. Les cuento.
Tengo la siguiente configuración en el archivo server.xml de Tomcat
Código:
Esto en el archivo web.xml... <Context path="/Prueba" docBase="Prueba" debug="0" reloadable="true"> <ResourceParams name="conexionPrueba" username="postgres" password="" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/manejadorVersion" type="javax.sql.DataSource" /> </Context> </Host> ....
Código:
Archivo context.xml <resource-ref> <res-ref-name>conexionPrueba</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
Código:
El archivo context.xml está en la carpeta META-INF de mi proyecto. Y accedo con el siguiente código<?xml version="1.0" encoding="UTF-8"?> <Context path="/Prueba" docBase="Prueba" debug="5" reloadable="true" crossContext="true"> <ResourceParams name="conexionPrueba" username="postgres" password="" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/manejadorVersion" type="javax.sql.DataSource" /> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>META-INF/context.xml</WatchedResource> </Context>
Código:
Y me da la siguiente excepción DataSource fuenteDatos = null; try { Context ctx = new InitialContext(); fuenteDatos = (DataSource) ctx.lookup("java:/comp/env/conexionPrueba"); Connection con = fuenteDatos.getConnection(); PreparedStatement pstmt = con.prepareStatement("select * from pais" ); ResultSet results = pstmt.executeQuery(); while (results.next()) { String id = results.getString(1); String titulo = results.getString(2); System.out.println("El titulo es " + titulo + " para id " + id + ""); } } catch (Exception e) { // throw new ServletException("Imposible recuperar java:comp/env/jdbc/tutoriales",e); System.out.println("Se cayo esta mier.... "); e.printStackTrace(); }
Código:
He buscado información al respecto de este error "Cannot create JDBC driver of class '' for connect URL 'null' " y he hecho lo que dicen, crear el archivo context.xml, usar el formato.. etc.. y no me resulta.org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) at cl.sodimac.prueba.action.IniciarSesionAction.execute(IniciarSesionAction.java:79) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NullPointerException at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507) at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476) at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307) at java.sql.DriverManager.getDriver(DriverManager.java:253) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143) ... 25 more
Alguien sabe que puede ser ????
Espero sus comentarios
Saludos