lunes, 29 de agosto de 2016

How to set up a JDBC Connection Pool on Glassfish

Un pool de conexiones es una clase java que tiene abiertas varias conexiones a base de datos. Cada vez que un programa cliente necesita comunicarse con una base de datos, establece una conexión, generalmente utilizando un protocolo especializado. Esta conexión, generalmente se mantiene abierta el tiempo que dura la ejecución del programa y sólo es cerrada al finalizar el trabajo de la aplicación con la base de datos.

Este artículo muestra la secuencia de pasos a seguir para poder configurar un pool de conexiones en un servidor de aplicaciones Glassfish. Los pasos a seguir son los siguientes:


Luego de configurado el nombre y seleccionado el motor de base de datos, debemos especificar ciertos parámetros de conexión. Si alguno de ellos no existe, se podrá agregar haciendo clic en el botón Add Property.


Podemos hacer una prueba del funcionamiento de nuestro pool de conexiones haciendo clic en el botón Ping.


Si al hacer clic en Ping les aparece el siguiente error: "Ping Connection Pool failed for SakilaPool. Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource Please check the server.log for more details.", no desesperen. Este error se debe a que no se encuentra la biblioteca correspondiente al conector MySQL en el dominio del servidor.

La solución es muy sencilla, sólo debemos colocar el archivo de extensión jar en su lugar correspondiente y reiniciar el servicio.



Volvemos a hacer ping al JDB Connection Pool y la respuesta debería ser como la que se muestra a continuación.


Ahora sólo basta configurar el acceso al pool como recurso nombrado. Para esto, hacer clic en el botón New de la pantalla que se muestra a continuación:


Y luego hacer clic en OK. Con esto tendremos configurado todo y sólo restaría hacer consultas de prueba a la base de datos a través del pool de conexiones.


Para realizar las pruebas debemos crear un proyecto Java Web y en la página de inicio deberá ser similar a:

<%@page import="java.sql.ResultSet"%> 
<%@page import="java.sql.Statement"%> 
<%@page import="javax.sql.DataSource"%> 
<%@page import="java.sql.Connection"%> 
<%@page import="javax.naming.InitialContext"%> 
<%@page import="javax.naming.Context"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
            Context ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("jdbc/sakila");
            Connection con = ds.getConnection();
            if (con != null) {
                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery("SELECT * FROM actor");
                out.print("<table>");
                while (rs.next()) {
                    out.print("<tr>");
                    out.print("<td>" + rs.getString("first_name") + "</td>");
                    out.print("<td>" + rs.getString("last_name") + "</td>");
                    out.print("</tr>");
                }
                out.print("</table>");
                rs.close();
                st.close();
                con.close();
            }%>
    </body>
</html>
La salida deberá verse así:


Espero este artículo les sea de utilidad. Cualquier pregunta, no duden en comentarla.

1 comentarios:

ARHZ dijo...

Gracias !

Publicar un comentario