Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/12/2008, 08:45
Avatar de SPAWN3000
SPAWN3000
 
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 3 meses
Puntos: 15
Pregunta Error - Pool de conexiones

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.