Tengo este código que encontré en internet, lo adapte para que trabajara con Sybase- pero no funciona:
y me genera el siguiente mensaje:
Prueba del Pool de Objetos Buscamos tutorial con sentencias preparadas Probamos a recuperar conexi�n Intento de tomar la conexion... Error al procesar consulta Cannot create JDBC driver of class '' for connect URL 'null' Error en proceso null -Fin-
Código:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
public class poolBaseDatos extends HttpServlet {
public DataSource fuenteDatos = null;
public void init(ServletConfig config) throws ServletException {
try{
// recuperamos el contexto inicial y la referencia a la fuente de datos
Context ctx = new InitialContext();
//fuenteDatos = (DataSource) ctx.lookup("java:comp/env/jdbc/Pruebas");
// Look up a connection factory instance
//javax.resource.cci.ConnectionFactory cf = (javax.resource.cci.ConnectionFactory)
fuenteDatos = (DataSource) ctx.lookup("java:comp/env/jdbc/Pruebas");
//com.sybase.jdbcx.SybDataSource
}
catch (Exception e){
throw new ServletException("Imposible recuperar java:comp/env/jdbc/Pruebas",e);
}
}
//Esto se podria cambiar a private por seguridad
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Connection con = null; // conexion parcial
response.setContentType("text/html"); // retornamos el tipo de respuesta
PrintWriter out = response.getWriter();
out.println("Prueba del Pool de Objetos");
out.println("Buscamos tutorial con sentencias preparadas");
try {
out.println("Probamos a recuperar conexión");
synchronized (fuenteDatos)
{
out.println("<b>Intento de tomar la conexion...</b>");
con = fuenteDatos.getConnection(); // cogemos la conexion
}
if(con == null)
{
out.println("Error al recuperar la conexion, es nula");
throw new ServletException("Problemas con la conexion");
}
out.println("Preparamos la consulta");
PreparedStatement pstmt = con.prepareStatement("SELECT * FROM usuarios");
pstmt.setInt(1,10); // establecemos el entero
ResultSet results = pstmt.executeQuery();
while (results.next())
{
String id = results.getString(1);
String titulo = results.getString(2);
out.println("El titulo es " + titulo + " para id " + id + "");
}
}
catch (Exception e)
{
out.println("Error al procesar consulta " + e.getMessage());
}
finally // pase lo que pase retornamos la conexion
{
try
{
con.close();
}
catch (Exception e)
{
out.println("Error en proceso " + e.getMessage());
}
}
out.println("-Fin-"); // cerramos la respuesta
out.close(); // Cerramos buffer
}
}
el web.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>poolBaseDatos</servlet-name>
<servlet-class>poolBaseDatos</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>poolBaseDatos</servlet-name>
<url-pattern>/poolBaseDatos</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<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/Pruebas</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
y el server.xml
Código:
<Context path="/Tomcat6" docBase="tomcat5" debug="0" reloadable="true">
<ResourceParams name="jdbc/Pruebas">
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.sybase.jdbc3.jdbc.SybDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:sybase:Tds:VISTAESCRITORIO:5000/Pruebas</value>
</parameter>
</ResourceParams>
</Context>
Código funciona, el problema es la conexión.