Wednesday, May 31, 2006

Giving jMaki a Whirl

Divas tutorials nos sorprende con este blog sobre el uso de jmaki en java studio creator, muy buen blog y de gran calidad.
Puedes visitarlo aqui

Splash Screens for Mobile Parte 2

Ahora, nos ubicamos en la paleta y seleccionamos SplashScrren y lo arrastramos Flow Desing.











Se muestra el splashScreen















Arrastramos el Star Point de Mobile Device hacia splashScreen












Ahora arrastramos el Dismiss hacia helloForm













Nos debe quedar de esta manera.












Damos doble clic sobre splashScreen1

Tuesday, May 30, 2006

Monday, May 29, 2006

Splash Screens for Mobile Parte 1

Basado en el tutorial Visual Mobile Designer Custom Components: Creating Mobile Splash Screens publicado en Netbeans por Contributed by Karol Harezlak.

Presento un pequeño tutorial
Pasos:
1. Crear el projecto, Seleccionamos File->New Project

























Elejimos en categorias Mobile y en projects la opción Mobile Application, presionamos el boton NEXT















Colocamos el nombre del proyecto, y damos click en el boton NEXT


















Indicamos la versión del CLDC y MIDP

















Seleccionamos algunas configuraciones de plantilla

















Nuestro proyecto, con el formato Visual.

Friday, May 26, 2006

Presentaciones java one 2006

Java One
Aqui podras encontrar las presentaciones de Java One 2006, para algunas presentaciones que requieren password pueden usar
usuario:contentbuilder
password:doc784

Project Semplice - Visual Basic for the Java Platform

Herbert
Publica en su blog, el project Semplice que permite compilar codigos Visual Basic, en clases java que son ejecutados por la maquina virtual Java. Esto nos lleva a pensar en la integración que se esta realizando en la plataforma para soportar otros lenguajes, la interrogante es:
  • Desearan los desarrolladores de java utilizar Visual Basic (En lo particular no veo mayor ventaja)

java studio creator + netbeans

Lo que muchos esperabamos desde hace ya bastante tiempo,la incorporación de java studio creator en netbeans, ya esta encaminada en forma rapida, observamos el pack que mostro Sun en java One 2006, ahora contamos con el subproyecto dentro de netbeans.
Haga Click aqui para ir al sitio Creator

Wednesday, May 24, 2006

Clips de Codigos en Java Studio Creator 2

Sitio de referencia:
java studio creator 2 tutoriales

Clips de Codigos en Java Studio Creator 2

Cuando desarrollamos aplicaciones, en ocasiones necesitamos repetir codigo en ciertas partes de una clase o clases diferentes. Estos clips de codigo los podemos manejar facilmente en java studio creator, veamos algunos pasos basicos:
1. Crear el clip de codigo
2.Añadirlo a nuestra(s) clase(s)
3.Editar el clip (de ser necesario algun cambio)


1.Crear el Clip de codigo, simplemente seleccionamos el codigo y lo arrastramos a la categoria deseada para el codigo en mi caso lo arrastre sobre Muestras. El IDE le colocara el nombre Clip seguido del numero, lo podemos editar y cambiar.


















Para cambiar el nombre del clip, damos clic derecho sobre Clip44, y seleccionamos Cambiar Nombre



Reemplazamos con el nuevo nombre.




2.Para utilizar el clip de codigo, simplemente lo arrastramos al lugar de nuestra clase donde deseamos colocarlo.





3. Editar el codigo del clip, para añadir o eliminar parte del mismo.
Seleccionamos el clip de codigo , damos clic derecho y seleccionamos la opción Editar clip de código.


Nos aparece la ventana de edición del clip de codigo. Simplemente editamos y damos click sobre el boton Guardar Cambios.

Tuesday, May 23, 2006

Agregar Registros usando DataProvider

Cuando deseamos agregar registros y verificar si existe algun valor en la tabla, podemos hacerlo de varias maneras:
  • Dejar que la misma base de datos nos envie el mensaje de error y nosotros lo mostramos mediante un messagegroup , este mensaje no es muy explicativo al usuario.
  • La otra verificar si ya existe ese valor dentro del campo de la base de datos y nosotros mismos deplegar el mensaje, de manera mas especifica al usuario.
Usaremos la segunda solución. Debemos tener presente que deseamos buscar un registro con el valor deseado, debemos recordar que si no tenemos registros en la tabla se generara un excepción, con el siguiente mensaje "java.lang.ArrayIndexOutOfBoundsException: -1", tal vez no muy explicativo, pero indica que la tabla no tiene registros, asi que debemos primero verificar que exista algun registro para luego utilizar una instrucción como esta:
aulasRowKey = aulasDataProvider.findFirst("aulas.aula", aulaTextField.getText());
El metodo findFirst encuentra el primer registro en la tabla aulas que cumpla la condición de busqueda. Acontinuación el codigo completo del boton Agregar nuevo registro.

public String saveButton_action() {
// TODO: Procesar la acción de clic de botón. El valor de devolución es un
// nombre de caso de navegación en el que un valor nulo devolverá la misma página.

try {
RowKey aulasRowKey;
int numeroRegistros;
numeroRegistros = aulasDataProvider.getRowCount();
if ( numeroRegistros == 0){
// info("No hay registros de propiedades");
boolean nada;
} else{
boolean ok = true;

aulasRowKey = aulasDataProvider.findFirst("aulas.aula", aulaTextField.getText());
if (aulasRowKey != null) {
error("El aula '"+aulaTextField.getText()+"' ya esta en uso....");
ok = false;
}
if (!ok) {
return null;
}
}

// Asigna el nuevo registro de aula
String tipo = (String) tipodropDown.getSelected();

aulasRowKey = aulasDataProvider.appendRow();
aulasDataProvider.setValue("aulas.aula",aulasRowKey,aulaTextField.getText());
aulasDataProvider.setValue("aulas.edificio",aulasRowKey, edificioTextField.getText());
aulasDataProvider.setValue("aulas.idtipoaula",aulasRowKey, tipo);
aulasDataProvider.setValue("aulas.activo",aulasRowKey, "s");
aulasDataProvider.commitChanges();
info("Se registro el aula");

this.saveButton.setDisabled(true);
} catch (Exception e) {
log("No puede registrar el aula: " , e);
error("No puede registrar el aula " + e);
aulasDataProvider.revertChanges();
}

return null;
}



Estructura de la tabla

aula varchar(35)
edificio` varchar(35)
idtipoaula` varchar(15)
activo varchar(1)

Sunday, May 21, 2006

Making a simple MySQL client in NetBeans

En Netbeans podermos encontrar el articulo escrito por Miki Shimizu , donde nos muestra un ejemplo de uso de Netbeans con mysql, usando jTable. Interesante y bastante basico en donde explica como realizarlo.
Articulo en netbeans

Friday, May 19, 2006

Proyectos web en netbeans

Desde los primeros proyectos en Netbeans en los que se ha hecho la integración de java server faces se ha avanzado moderadamente en los mimos. facilitando enormemente su uso, sin una interfaz que permitiera el drag and drop de los componentes, que muchos deseamos que este incorporada, por muchas razones, atraeria muchos desarrolladores, ya que disminuiria el tiempo de desarrollo al contar con una herramienta visual. Creo que esto lo encontramos en Java Studio Creator 2, aunque este con consumos excesivos de recursos para funcionar adecuadamente, bien es importante su integración dentro de Netbeans.
Cuando participaba en el primer netbeans comunity chat sobre netbeans, pregunte sobre la integración de la parte visual en netbeans
Transcript of the 1st official NetBeans community chat.

Se hablaba que un futuro seria integrado, ahora vi una presentación sobre el paquete java studio creator pack para netbeans, en el cual podemos trabajar como si de proyectos jsc2 se trataran, es logico ya que este esta basado en netbeans 4.1.
Esto permite un nuevo marco de desarrollo para proyectos java server faces, con la estructura y nuevos componentes y una integración con Ajax.

Busquedas condicionales


Cuando deseamos crear busquedas avanzadas, estableciendo estas en base a las opciones que el usuario seleccione. Pasos para realizarlo:
1).Diseñamos el formulario de busqueda avanzada, en el cual colocamos las condiciones a buscar, agregandoles checkbox para cada condición , el que seleccionara el usuario.
2).En el botón BUSCAR comprobamos cuales checkbox han sido marcados y simplemente construimos el sql.
public String buscarButton_action() {
// TODO: Procesar la acción de clic de botón. El valor de devolución es un
// nombre de caso de navegación en el que un valor nulo devolverá la misma página.
try{
getSessionBean1().setComandosql("");
String sql ="";
//precio
if (preciocheckbox.isChecked()) {
String precio = (String)precioInicialField.getText();
double precioInicial = Double.parseDouble(precio);
precio = (String)precioFinalField.getText();
double precioFinal = Double.parseDouble(precio);

sql = " precio >= '" + precioInicial + "' and precio <= '" + precioFinal + "'";
}
//tipo
if (tipocheckbox.isChecked()) {
if (sql.equals("") == false)
sql = sql + " and ";
String idTipo = (String) tipodropDown.getSelected();
sql = sql + " idtipo like '" + idTipo + "'";
}

//operacion
if (operacioncheckbox.isChecked()) {
if (sql.equals("") == false)
sql = sql + " and ";
String idOperacion = (String) operaciondropDown.getSelected();
sql = sql + " idoperacion like '" + idOperacion + "'";
}


if (corregimientocheckbox.isChecked()) {
if (sql.equals("") == false)
sql = sql + " and ";
String corregimiento = (String) corregimientodropDown.getSelected();
sql = sql + " corregimiento like '" + corregimiento + "'";
}

//distrito
if (distritocheckbox.isChecked()) {
if (sql.equals("") == false)
sql = sql + " and ";
String distrito = (String) distritodropDown.getSelected();
sql = sql + " distrito like '" + distrito + "'";
}
if (provinciacheckbox.isChecked()) {
if (sql.equals("") == false)
sql = sql + " and ";
String provincia = (String) provinciadropDown.getSelected();
sql = sql + " provincia like '" + provincia + "'";
}
//pais
if (paischeckbox.isChecked()) {
if (sql.equals("") == false)
sql = sql + " and ";
String idPais = (String) paisdropDown.getSelected();
sql = sql + " idpais like '" + idPais + "'";
}

// verificar y generar el sqlcomand

if (sql.equals("")) {
info("Por favor seleccione una condicion de busqueda");
} else{
getSessionBean1().setComandosql(sql);
// info("Comando a evaluar " + sql);
this.getExternalContext().redirect("faces/propiedadesResultadosTipo.jsp");
}

}catch(Exception e) {
log("Error ", e);
error("Error " + e);
}

return null;
}
Resultado de la busqueda

Thursday, May 18, 2006

jLibrary 1.0 Liberado

Hace un rato conversaba con mi amigo Martin Perez, y me comunico que ya esta disponible la primera version estable de jLibrary 1.0.
Esta es la definición para jLibrary
jLibrary is a DMS (Document Management System), oriented for personal and enterprise use. This double approach make from jLibrary an unique product. With jLibrary, you can classify your documents, videos, or any other media type. You can export those contents to static web pages based on templates, search on those content, add comments, categorize it, etc.
Puedes descargarla y usarla en lo personal lo considero como un producto de alta calidad.
jLibrary home page

Wednesday, May 17, 2006

Integracion de jsc2 en netbeans

Revisando los foros de java studio creator en Sun, encontre Forum
en donde hacen referencia a java studio creator pack para integrarlo con netbeans lo que permitira el uso de los componentes visuales y proyectos estilo java studio creator.
Ver Demo

Sun considera hacer open source java

Sun Microsystem, hablo sobre la liberación del codigo de java, con lo cual atraeria más usuarios. Hay que tener cuidado sobre esto para evitar los fork de java,
Articulo en News

Google Web Toolkit - Build AJAX apps in the Java language

Google ha liberado un conjunto de herramientas para usar Ajax en aplicaciones java.
google webtoolkit
Entre estos tenemos tablas y otros componentes.

Java PetStore Netbeans 5.5

Blueprint, publicaron la version de java petstore sobre netbeans 5.5, interesante implementación a tener en cuenta.
BluePrint

Tuesday, May 16, 2006

aplicaciones en Tiempo Real Netbeans

Las aplicaciones en tiempo real combinan muchos aspectos como funcionalidad, usabilidad, abstraccion, y los estandares basados en los avances de java. Ahora puedes usarlos desde Netbeans.
http://www.netbeans.org/kb/articles/java-rts.html
http://race.java.sun.com/

Friday, May 12, 2006

Los mejores blog

Este es un listado de los mejores blogs

Empezare por el de mi amigo kalali, un expert0 en GlasshFish, Netbeans

Masoud Kalali's

Una autoridad en jsp y jsf

Jayson Falkner's
James Gosling, el padre de Java.

Amy Roh's

Martin Perez

netbeans 5.5 beta liberado



Ya esta disponible para descarga la version 5.5 beta de netbeans, además estan disponibles el mobility pack 5.5, profiler 5.5, Enterprise pack 5.5.
A todos los usuarios de netbeans, es hora de descargarlo y empezar a usarlo.
http://www.netbeans.info/downloads/download.php

Thursday, May 11, 2006

archivos log

LOGGER


Que es

Un archivo logger, simplemente es una archivo donde tomcat almacena el log de los eventos que ocurren con nuestra aplicación web. Este archivo se almacenara en el directorio logs de tomcat.


Configuración

  1. Para configurar el logger, lo hacemos en el archivo context.xml, ubicado dentro de la carpeta META-INF de nuestro proyecto.

Definimos la clase FileLogger que viene con tomcat por defecto.Tomcat generara el archivo indicando la fecha localhost_poolconexion_lo.YYYY.txt


Agregar un data provider en un session bean

Si deseamos añadir un dataprovider al bean de session lo hacemos de esta manera

Asumiendo que deseamos agregar la tabla favoritosmodelos al bean.

  1. Editar SessionBean1.java

  2. Crear el RowSet de tipo CachedRowSetXImpl

private CachedRowSetXImpl favoritosmodelosRowSet = new CachedRowSetXImpl();

public CachedRowSetXImpl getFavoritosmodelosRowSet() {

return favoritosmodelosRowSet;

}

public void setFavoritosmodelosRowSet(CachedRowSetXImpl crsxi) {

this.favoritosmodelosRowSet = crsxi;

}

  1. Añadir dentro del metodo _init()

favoritosmodelosRowSet.setDataSourceName("java:comp/env/jdbc/balipanama");

favoritosmodelosRowSet.setCommand("SELECT * FROM favoritosmodelos");

favoritosmodelosRowSet.setTableName("favoritosmodelos");



PARA USARLO DESDE UNA PAGINA JSF Y DESDE EL BEAN.

Asumimos que tenemos la pagina modelosVer.jsp y modelosVer.java

Pasos:

  1. En el metodo _init() de modelosVer.java, hacemos referencia al bean y al rowset

    favoritosmodelosDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet)getValue("#{SessionBean1.favoritosmodelosRowSet}"));

  1. Creamos los objetos RowSet

private CachedRowSetDataProvider favoritosmodelosDataProvider = new CachedRowSetDataProvider();

public CachedRowSetDataProvider getFavoritosmodelosDataProvider() {

return favoritosmodelosDataProvider;

}

public void setFavoritosmodelosDataProvider(CachedRowSetDataProvider crsdp) {

this.favoritosmodelosDataProvider = crsdp;

}


  1. Asumimos que tenemos un hiperlink en el que guardamos un registro basico lo hariamos de la siguiente manera.

    public String agregarFavoritoshyperlink_action() {

// TODO: Reemplazar con código del usuario

try {

RowKey favoritosmodelosRowKey;

//

//Lo añado a mis favoritospropiedades

//si existe simplemente no lo guarda

//

String idModelo = getSessionBean1().getIdModelo();

String username = getSessionBean1().getUsername();

favoritosmodelosRowKey = favoritosmodelosDataProvider.appendRow();

favoritosmodelosDataProvider.setValue("favoritosmodelos.username",favoritosmodelosRowKey,username);

favoritosmodelosDataProvider.setValue("favoritosmodelos.idmodelo",favoritosmodelosRowKey,idModelo);

favoritosmodelosDataProvider.commitChanges();

info("Se guardo esta propiedad en mis favoritos");

} catch (Exception e) {

log("Error: " , e);

error("Error " + e);

}

return null;

}

hipervinculos en una tabla

PASO A:

Descripción:

Se creara una pagina que contenga todos los registros de usuarios mostrándolos en un table, se mostrara la foto de cada propiedad, el usuario al dar clic sobre la foto le mostrara una pagina con el detalle.



PASO B:

Descripción:

Pagina que muestra los detalles de esa propiedad, muestra las fotos, utiliza el evento onMouseOver para que cada vez que se pase el cursor sobre una foto esta se amplie en la misma pagina, ademas al dar clic sobre la foto ampliada , la muestra sola un otra pagina, también incorpora la opción de imprimir a un amigo. Se usara java scritp.



PASO C:

Descripción:

Muestra la foto ampliada.

PASO A:

Descripción:

Se creara una pagina que contenga todos los registros de usuarios mostrándolos en un table, se mostrara la foto de cada propiedad, el usuario al dar clic sobre la foto le mostrara una pagina con el detalle.

Asumimos que tenemos un table en un un formulario jsp, le damos click derecho, y seleccionamos Diseño de tabla -> en la opción de columnas damos clics en nuevo para añadir una nueva columna le quitamos el Texto de encabezado, escogemos tipo de componente Hipervinculo de imagen,y le asociamos con el campo de la tabla que contenga el url de la foto. Cerramos el diseño de tabla.

En el diseñador de jsc2, seleccionamos jsp, buscamos la linea

observamos que el establece el sourceVar como currentRow, este componente nos permite desplazarnos por los registros de la tabla. Asumimos que nuestra tabla se llama propiedades y tenemos un campo llamado foto1, que contiene el url de las fotos, necesitamos añadir al componente. Debemos cambiar el código que genera en el JSP para que el muestre la foto del registro actual, de otro modo repetiría la primera.

imageURL="#{currentRow.value['propiedades.foto1']}"

Ejemplo del código completo.

binding="#{Page1_1.imageHyperlink2}" height="80"

id="imageHyperlink2" imageURL="#{currentRow.value['propiedades.foto1']}"

text="" width="96"/>



Ahora tenemos que añadir el comportamiento, nos vamos al diseñador visual y damos doble click sobre el Hipervinculo de imagen.



PASO D:

Descripción:

Imprimir a un amigo.

PASO A:

Descripción:

Se creara una pagina que contenga todos los registros de usuarios mostrándolos en un table, se mostrara la foto de cada propiedad, el usuario al dar clic sobre la foto le mostrara una pagina con el detalle.

Asumimos que tenemos un table en un un formulario jsp, le damos click derecho, y seleccionamos Diseño de tabla -> en la opción de columnas damos clics en nuevo para añadir una nueva columna le quitamos el Texto de encabezado, escogemos tipo de componente Hipervinculo de imagen,y le asociamos con el campo de la tabla que contenga el url de la foto. Cerramos el diseño de tabla.

En el diseñador de jsc2, seleccionamos jsp, buscamos la linea

observamos que el establece el sourceVar como currentRow, este componente nos permite desplazarnos por los registros de la tabla. Asumimos que nuestra tabla se llama propiedades y tenemos un campo llamado foto1, que contiene el url de las fotos, necesitamos añadir al componente. Debemos cambiar el código que genera en el JSP para que el muestre la foto del registro actual, de otro modo repetiría la primera.

imageURL="#{currentRow.value['propiedades.foto1']}"

Ejemplo del código completo.

binding="#{Page1_1.imageHyperlink2}" height="80"

id="imageHyperlink2" imageURL="#{currentRow.value['propiedades.foto1']}"

text="" width="96"/>



Ahora tenemos que añadir el comportamiento, nos vamos al diseñador visual y damos doble click sobre el Hipervinculo de imagen.

Y obtenemos el campo índice de la fila actual , lo guardamos en el bean de sesión, y retornamos el valor que usamos en las paginas de navegación para ir a la pagina de detalle.

public String imageHyperlink2_action() {

// TODO: Reemplazar con código del usuario

RowKey rowKey = tableRowGroup1.getRowKey();

String idPropiedad = (String) propiedadesDataProvider.getValue("propiedades.idpropiedad", rowKey);

getSessionBean1().setIdPropiedad(idPropiedad);

return "propiedades";

}

Si no ha creado la propiedad en el bean de sesion debe hacerlo de esta manera, dar clic derecho en bean de sesion.



PASO B:

Descripción:

Pagina que muestra los detalles de esa propiedad, muestra las fotos, utiliza el evento onMouseOver para que cada vez que se pase el cursor sobre una foto esta se amplie en la misma pagina, ademas al dar clic sobre la foto ampliada , la muestra sola un otra pagina, también incorpora la opción de imprimir a un amigo. Se usara java script.



Hacemos un diseño básico que contendrá el nombre de la propiedad, el precio, un Hipervinculo de regresar, un Hipervinculo para imprimir a un amigo, cuatro imágenes pequeñas (usamos Hipervinculo de imágenes), una ampliada(hipervinculo de imagen, llamada image1).

Agregamos la tabla a la pagina, para esto nos vamos desde el servidor, buscamos nuestra base de datos, seleccionamos la tabla y le damos Agregar a la pagina, con esto podemos ligar nuestros componentes con los registros de la tabla. (Si no sabe como agregar la conexión de la base de datos consulte el tutorial sobre Agregar orígenes de Datos).

Añadimos los componentes desde la paleta de diseño, nos colocamos en cada componente y le damos clic derecho, seleccionamos Enlazar con datos. Luego escogemos el campo de la tabla que deseamos que se realice la liga.



importando proyectos jscs 2 a netbeans

Para importar tu proyecto desde java studio creator 2 a netbeans, es bien facíl, debemos recordar que jsc2 (java studio creator 2), esta basado en netbeans, de alli que la estructura de los proyectos sea estandar. Antes de explicar el proceso, podemos hacernos la pregunta, de porque abrir un proyecto jsc en netbeans , una de las razones que me motivo a hacerlo, fue el hecho de la cantidad de recursos que consume el jsc2, ya que solo cuento con 512MB de memoria RAM, y la recomendacion es de un 1GB en adelante, tambien debes considerar que en netbeans, no tendras la parte visual de la aplicación. Esto se compensa con la velocidad y el consumo adecuado de los recursos.

Iniciare indicando los pasos basicos para abrir tu proyecto en netbeans, no sin antes hacer referencia a la fuente de información primordial donde encontre la forma de realizarlo,

Mark Dey's Weblog

http://blogs.sun.com/roller/page/markdey

en su blog encontraras los pasos basicos, a continuación detallare los que puedes utilizar.

1.descargamos el archivo de configuracion de xml para netbeans

2, lo descomprimo y queda de esta manera

(-)creatorslibnb

(+) config

(+)META-INF

3. seleccionar las carpetas config, META-INF, y copiar en

C:\Documents and Settings\usuario\.netbeans\5.0

dAhora entramos en el menu Tools de Netbeans, seleccionamos LIBRARY MANAGER , debe cargarmos las librerias, sin la referencias a ellas, según Mark Deys, podemos instalarlo el jsc2 y netbeans en la misma ruta para que encuentre automaticamente las librerias, si no lo hacemos de esa manera, simplemente buscamos su ubicación.

cAhora debemos añadir a netbeans el Sun Application Server, si no lo tenemos configurado.

Desde la opcion RUNTIME->Servers->Add Server

eAhora buscamos la carpeta donde tenemos instalado el Sun Application Server, generalmente lo encontraremos en c:\program Files\Sun\Creator2\SunAppServer8.

Le indicamos el nombre de usuario y password.

Acerca AJAX, si tu proyecto utiliza algunos componentes AJAX, en algunos casos debemos especificarlos, en mi proyecto empresasbalipanama, utilizo ciertos componentes AJAX, por esta razón, los añado a la libreria de netbeans, creo dos nuevos.

empresasbalipana_Desing-time_AJAX_JSF_Components_0.96. Agregamos las librerias ajax-components.jar y ajax-components-dt.jar

empresasbalipanama_Runtime_AJAX_JSF_Components_0.96. Solo agregamos ajax-components.jar

Nota: Recuerda que debes especificar la conexión a la base d e datos.


pool de conexiones netbeans


POOL DE CONEXIONES

  1. Que es?

  2. Archivos .jar necesarios

  3. Configuración

  4. Clases para manejar el pool



Que es

El pool de conexiones nos permite administrar eficientemente las conexiones de nuestra aplicación a una base de datos. Cuando necesitemos interactuar con la base de datos simplemente lo hacemos a través del pool, este creara una sola conexión a la base de datos , a la que podemos acceder.


Archivos .jar necesarios

Dependiendo de la base de datos que usemos, debemos obtener los .jar jdbc y copiarlos dentro:

netbeans_home\enterprise2\jakarta-tomcat-5.5.7\common\lib


Configuración

  1. Para configurar el pool, buscamos el archivo context.xml, ubicado dentro de la carpeta META-INF de nuestro proyecto. Indicamos la configuración para el pool, colocando el nombre para el pool, el driver jdbc, la base datos, el usuario y password.


name="jdbc/avbravo"

type="javax.sql.DataSource"

driverClassName="org.postgresql.Driver"

password="postgres"

maxIdle="2"

maxWait="5000"

username="postgres"

url="jdbc:postgresql://localhost:5432/academicoazuero"

maxActive="4"/>















Figura del context.xml

























  1. Configurar el archivo web.xml, para permitir a nuestras clases java, usar el pool. Añadimos eñ resource-ref.



jdbc/avbravo

javax.sql.DataSource

Container




  1. Clases que usan el pool.

Definimos una clase que se encargue de manejar la conexión con el pool, y ejecutar las sentencias sql.

Crear el paquete com.avbravo.basedatos para la clase conexión y el paquete com.avbravo.usuarios para almacenar la clase del usuario.






/*

* conexion.java

*

* Created on 17 de noviembre de 2005, 08:58 AM

*

* To change this template, choose Tools | Template Manager

* and open the template in the editor.

*/


package com.avbravo.basedatos;


/**

*

* @author aristides

*/

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

import java.util.logging.Level;

import java.util.logging.Logger;

import java.sql.Statement;

public class conexion {

private Connection conn;

private Statement stmt;

private ResultSet rs;

private String myError="";

private Logger logger = Logger.getLogger("com.avbravo.basedatos");

/** Creates a new instance of conexion */

//PROPERTY myError

public String getError() {

return this.myError;

}

//PROPERTY: rs

public ResultSet getResultSet() {

return this.rs;

}

//carga el pool de conexiones

public boolean conectarPool(){

try{

Context ctx = new InitialContext();

if (ctx == null) {

this.myError ="No initial context";

return false;

}

DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/avbravo");

if (ds == null) {

this.myError= "No data source";

return false;

}

conn = ds.getConnection();

if (conn == null){

this.myError = "No connection";

return false;

}

return true;

}catch (SQLException ex) {

this.myError = "SQLException " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

} catch (NamingException ex) {

this.myError = "NamingException " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

} catch (Exception ex) {

this.myError = "Exception " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

}

}//conectarPool()

//ejecutarQuery(String)

//ejecuta una sentencia sql

public boolean ejecutarQuery(String sql) {

try{

if (sql.equals("")){

this.myError ="Sentencia sql vacia";

return false;

}

if (conectarPool() == false)

return false;

else {

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs = stmt.executeQuery(sql);

return true;

}

}catch (SQLException ex) {

this.myError = "SQLException " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

} catch (Exception ex) {

this.myError = "Exception " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

}

}//ejecutarQuery

//ejecutarUpdate(String)

//ejecuta una sentencia sql

public boolean ejecutarUpdate(String sql) {

try{

if (sql.equals("")){

this.myError ="Sentencia sql vacia";

return false;

}

if (conectarPool() == false)

return false;

else {

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

stmt.executeUpdate(sql);

return true;

}

}catch (SQLException ex) {

this.myError = "SQLException " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

} catch (Exception ex) {

this.myError = "Exception " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

return false;

}

}//ejecutarQuery

//cerrarPool()

//cierra el pool de conexiones

public void cerrarPool() {

try{

conn.close();

}catch (SQLException ex) {

this.myError = "SQLException " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

} catch (Exception ex) {

this.myError = "Exception " + ex.getMessage();

logger.log(Level.SEVERE, "loginAction", ex);

}

}

}//class

clase usuarios.

/*

* usuarios.java

*

* Created on 17 de noviembre de 2005, 09:02 AM

*