RSS

Proyecto Java web con Apache Solr y Postgresql

05 Jun

Descargar e instalar un manejador de bases de datos…..

En este ejemplo se utiliza Postgrsql, que pueden descargar e instalar siguiendo las instrucciones
en la página del proyecto http://www.postgresql.org/download/

Creando la base de datos …………..

No es necesario crear una base de datos real, solo se necesitan tener algunos campos con datos de manera que podamos hacer las pruebas correspondientes.

Utilizando pgAdmin podemos crear facilmente la estructura de la base e incluir algunos datos:

 


Se crea la base de datos:

Dar click derecho sobre el nombre de la base y elegir la opción: “CREATE Script”, y escribir la definición
de la tabla como se muestra en la siguiente imágen:

Una vez creada la tabla aparecerá en la lista en el lado derecho de la siguiente manera:

Para incluir datos se puede hacer con el script con instrucciones INSERT, en este caso agregamos cinco registros en la vista de datos de pgAdmin:

Es todo lo que tendrá la base de datos.

Crear un proyecto web con NetBeans……

Creamos un proyecto llamado Laboratorio10.

Para realizar la conexión entre java y postgreSQL es necesario utilizar un driver, que debe descargarse en
la siguiente dirección: http://jdbc.postgresql.org/download.html

Crear un directorio lib y configurar con “Add Jar” en la carpeta “Libraries” y agregar la ruta del driver
al proyecto.

Agregamos un Servlet llamado BaseSeminarioServlet.java, en este archivo vamos a obtener los registros desde la base de datos que se creó en PostgreSQL, la base BaseSeminario y los datos de la tabla libro.

Los datos son los titulos de los libros. Las consultas pueden ser más complejas y existen diferentes maneras
para obtener los datos. Es importante en este laboratorio solamente como se hace la conexión a la base de datos desde el código.

EL servlet debe tener la siguiente implementación del método processRequest:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException {
        PrintWriter out =null;
        try {

            response.setContentType("text/html;charset=UTF-8");
            out = response.getWriter();
        
            String m_sconector = "org.postgresql.Driver";
            String m_surl = "jdbc:postgresql://localhost:5432/BaseSeminario";
            String user = "postgres";
            String password = "postgres";
            Class.forName(m_sconector);
            Connection conexion;
            conexion=DriverManager.getConnection(m_surl, user, password);
            Statement instruccion;
            instruccion = conexion.createStatement();
            ResultSet datos = instruccion.executeQuery("select * from libro");
           

            StringBuilder sb = new StringBuilder();
            String sep = System.getProperty("line.separator");
            sb.append("<html>").append(sep);
            sb.append("<head>").append(sep);
            sb.append("<title>Servlet BaseSeminarioServlet</title>").append(sep);
            sb.append("</head>").append(sep);
            sb.append("<body>").append(sep);
            sb.append("<h1>Servlet BaseSeminarioServlet: </h1><br>");
            while(datos.next()){
                sb.append(datos.getString("titulo")).append("<br>");
            }
            sb.append("</body>").append(sep);
            sb.append("</html>").append(sep);
            instruccion.close();
            out.println(sb.toString());

           
        } catch (Exception ex) {
            Logger.getLogger(BaseSeminarioServlet.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            out.close();
        }
    }

En la siguiente figura puede se puede ver como muestra los datos desde la base el servlet:

Creando un pool de conexiones desde Glassfish …………

Una vez iniciado el servidor, tenemos que entrar en la página de administración en la siguiente dirección:

http://localhost:4848

Después entramos en Recursos > JDBC > Conjunto de colecciones y damos click en Nuevo.

Tenemos que poner el nombre del recurso, el tipo de recurso que debe ser javax.sql.DataSource y por último el proveedor de la base de datos que es postresql.

Despés se muestran las preferencias, en este ejemplo solo modificaremos las siguientes:

portNumber: 5432
databaseName: BaseSeminario
serverName: localhost
user: postgres
password: postgres

Hacer click en “Sondeo” para probar la conexión, es necesario agregar el archivo jar del driver de postgresql
al directorio: $GLASSFISH_HOME/domains/domain/lib si no existe o manda algun error.

Ahora tenemos que crear un recurso JDBC, en Recursos > JDBC > Recursos JDBC click en “Nuevo”.

Se escribe el nombre del recurso en formato JNDI, por ejemplo: jdbc/BaseSeminario y se elige el pool de conexiones que se creó anteriormente.

Probando el pool de conexiones ……

Es muy importante definir la referencia al recurso en el archivo descriptor del proyecto, en el caso de glassfish,
se debe agregar el siguente elemento al archivo $GLASSFISH_HOME/domains/domain1/config/default-web.xml

<resource-ref>
<description>Referencia al pool de conexiones</description>
<res-ref-name>jdbc/BaseSeminario</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

Necesitamos crear otro servlet llamado “BaseSeminarioPoolServlet.java“, en este servlet haremos lo mismo que en el anterior pero utilizando el pool de conexiones de glassfish.

El código del método processRequest es el siguiente:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out =null;
        try {

            response.setContentType("text/html;charset=UTF-8");
            out = response.getWriter();
        
            Context initCtx = new InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            DataSource ds = (DataSource) envCtx.lookup("jdbc/BaseSeminario");
            Connection conexion = ds.getConnection();
            Statement instruccion;
            instruccion = conexion.createStatement();
            ResultSet datos = instruccion.executeQuery("select * from libro");
           

            StringBuilder sb = new StringBuilder();
            String sep = System.getProperty("line.separator");
            sb.append("<html>").append(sep);
            sb.append("<head>").append(sep);
            sb.append("<title>Servlet BaseSeminarioServlet</title>").append(sep);
            sb.append("</head>").append(sep);
            sb.append("<body>").append(sep);
            sb.append("<h1>Servlet BaseSeminarioServlet: </h1><br>");
            while(datos.next()){
                sb.append(datos.getString("titulo")).append("<br>");
            }
            sb.append("</body>").append(sep);
            sb.append("</html>").append(sep);
            instruccion.close();
            out.println(sb.toString());

           
        } catch (Exception ex) {
            Logger.getLogger(BaseSeminarioServlet.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            out.close();
        }
    }

 
Deja un comentario

Publicado por en 5 junio, 2012 en Apache Solr, Código, Java, Postgresql

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: