Holas.
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:
...
<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>
....
Esto en el archivo web.xml
Código:
<resource-ref>
<res-ref-name>conexionPrueba</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Archivo context.xml
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>
El archivo context.xml está en la carpeta META-INF de mi proyecto. Y accedo con el siguiente código
Código:
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();
}
Y me da la siguiente excepción
Código:
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
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.
Alguien sabe que puede ser ????
Espero sus comentarios
Saludos