
15/06/2007, 09:03
|
| | Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 11 meses Puntos: 1 | |
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 |