Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2007, 09:03
veroman
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 11 meses
Puntos: 1
Mensaje pool de conexiones mysql (con código)

Hola a todos, mi problema es el siguiente:
para optimizar el acceso a la base de datos mysql de la que dispongo, he decidido crear un pool de conexiones, este es el código que he utilizado:
Estoy trabajando con java, concretamente con jsp, y este es el javascript:


import java.io.*;
import java.sql.*;
import javax.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;

public class poolBaseDatos extends HttpServlet

{
private 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/tutoriales");
}
catch (Exception e)
{
throw new ServletException("Imposible recuperar java:comp/env/jdbc/tutoriales",e);
}
}

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)
{
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 tutoriales WHERE id < ?");
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 fichero web.xml está modificado acorde a este javascript también.

¿para poder utilizar este pool de conexiones debo dejar este servlet e invocarle, o no me sirve para nada y en cada clase que vaya a utilizar la base de datos tengo que poner el mismo código del servlet?
¿Alguien podría darme un ejemplo concreto de utilización del pool de conexiones?
Muchísimas gracias a todos por leerlo.

Última edición por veroman; 15/06/2007 a las 09:53