Mostrando entradas con la etiqueta JAVA. Mostrar todas las entradas
Mostrando entradas con la etiqueta JAVA. Mostrar todas las entradas

domingo, 19 de agosto de 2012

MANEJO FRAMEWORK: "EHCACHE".



En esta oportunidad mostraré el manejo de  uno de los Frameworks más utilizados para el Cache de Objetos Java. Su nombre es: EHCACHE.
En general, EHCACHE consta de "regiones de cache" dentro de la aplicación en donde se ubican objetos .JAVA para poder así guardarlos en memoria por un lapsus de tiempo para así reutilizar la información guardada en ella. Estas regiones se configuran en clases .JAVA o en un archivo XML (preferible), para determinar el tiempo de expiación, cantidad máxima de elementos, tiempo, etc.
El compartido muestra una interfaz LOGIN que se conecta a un BD en MYSQL (Script dentro del APP) desplegado sobre un TOMCAT. La configuración de EHCACHE aplicada en el XML (ehCache.xml), es de 30 segundos pero la puedes configurar a tu gusto. En ese lapsus de tiempo la informaron guardada en CACHE se repetirá todas las veces que se consulte hasta pasado el tiempo configurado en dicho fichero XML. 

    maxElementsInMemory = "500" 
    eternal             = "false"
  overflowToDisk      = "false" 
  timeToIdleSeconds   = "30" 
  timeToLiveSeconds   = "30" />
Se comparten 2 versiones del DUMMY. Uno versión J2EE normal y el otro versión J2EE aplicado con MAVEN.
Para descargar el ejemplo completo pulsar:  AQUÍ   

sábado, 25 de febrero de 2012

PRUEBAS MULTI-MODULE CON 'CLASSPATHSUITE'

Buen día en esta oportunidad mostrare sobre el manejo de una API muy buena para el manejo de las diferentes pruebas que nos podemos requerir realizar durante el desarrollo de software.

El API es ClasspathSuite y para explicarlos me basare en un escenario común:

“TENEMOS UN PROYECTO JAVA QUE ESTA COMPUESTO POR VARIOS MODULOS Y POR BUENAS PRACTICAS CADA MODULO LO TENEMOS EN APPs DISTINTAS. CADA APPs TIENE SUS CLASES DE PRUEBAS YA SEAN DE TIPO UNITARIAS Y INTEGRALES, Y REQUERIMOS ANTES DE INICIAR EL PROYECTO EJECUTAR TODAS.”


SOLUCION
- COMUN: Ejecutar clase por clase, modulo por modulo y verificar el correcto resultado de todos. Esto puede demorar.
- RECOMEMDADA: Ejecutar como máximo 3 clases, segmentada para un tipo UNITARIA, INTEGRAL y TODAS.


El DUMMY preparado muestra lo siguiente. Pasos:

1. Descagar los JARs: cpsuite-1.2.5-jar y JUnit 4.8.

2. Crear 2 proyectos JAVA que simularan a los MODULOS por separados y agregarle el JAR: JUnit:
- ModuloJAVA_01.
- ModuloJAVA_02.

3. A cada modulo crearle un clase Test que el resultado de la prueba sea correcto.
- TestModulo_01.java
- TestModulo_02.java

4. Crear un proyecto JAVA que simulara el proyecto principal llamado: DummyManejoClasspathSuite y agregarle los JARs: cpsuite-1.2.5-jar y JUnit 4.8.

5. Dentro de tipo proyecto principal damos en Botón Derecho sobre el proyecto --> Propiedades --> Java Build Path --> Pestaña Projects, y añadimos (botón Add...) todos los proyectos (en nuestro ejemplo: ModuloJAVA_01 y ModuloJAVA_02).

6. Dentro del modulo principal creamos 3 clases Test:
- AllTestJava.java: Clase que permite la ejecución de TODOS los TEST: (Unitarios y de Integración) sin restricción alguna.
- AllUnitTestJava.java: Clase que permite la ejecución de TODOS los TEST de tipo UNITARIOS. El Filtro se aplica en base a: 'Regex Expressions', en este caso es en base al nombre de la clase que NO contenga: 'IntegrationTest'.
- AllIntegrationTestJava.java: Clase que permite la ejecución de TODOS los TEST de tipo INTEGRALES. El Filtro se aplica en base a: 'Regex Expressions', en este caso es en base al nombre de la clase que SI contenga: 'IntegrationTest'.

7. Ejecutamos cada clase por separado y el resultado deberá de ser las pruebas Unitarias y/o Integrales completas según la clase Test ejecutada,


Para mayor detalle descargar el demo completo pulsando Aquí

jueves, 30 de diciembre de 2010

MANEJO API JEXCEL

El otro día me escribieron a mi email una consulta sobre manipulación de ficheros .xls desde Java y recomendé un API ya bastante antigua llamada POI de Jakarta, que era una que había utilizado hace varios años atrás, pero luego pensé y me dije si habrán creado alguna mejor forma para la manipulación de dichos ficheros Excel que son tan populares y me puse a buscar en la Internet la existencia de alguna API nueva y me encontré con una muy buena pero no tan nueva jejeje, llamada JExcel API .
Y justo me puse a entenderla y postear sobre ella. Esta API (http://jexcelapi.sourceforge.net) es una API Opensource para especializado en la manipulación (Read/Write) de ficheros .xls sobre ccualquier sistema operativo donde exista y funcione una máquina virtual Java (es decir, no sólo Windows) puede procesar y entregar las hojas de cálculo Excel. Debido a que es Java, la API se puede invocar desde dentro de un Servlet, dando así acceso a hojas de cálculo Excel a través de aplicaciones Web.

El ejemplo preparado es un proyectito simple de tipo desktop sobre Eclipse, donde ejecuto independientemente dos clases por separado.

- org.java.jexcel.read.test.ReadExcel.java
- org.java.jexcel.write.test.WriteExcel.java

I. ReadExcel.java: Permite la lectura de un archivo Excel que debe de ser ubicado en: C://JAVA_EXCEL.xls (Este archivo lo encuentras en el SourFolder Resources del proyecto adjunto) y su salida de lo leído en consola.


********************************************************************
*************************** FORMA MANUAL ***************************
********************************************************************

- CELDA #C2: NOMBRE
- COLUMNA #C2: 1
- FILA #C2: 1

- CELDA #C2: APELLIDO
- COLUMNA #C2: 2
- FILA #C2: 1

- CELDA #D2: DNI
- COLUMNA #D2: 3
- FILA #D2: 1

- CELDA #E2: EDAD
- COLUMNA #E2: 4
- FILA #E2: 1

********************************************************************
************************* FORMA AUTOMATICA *************************
********************************************************************
OBTENIENDO [LABEL]: A1
OBTENIENDO [LABEL]: A2
OBTENIENDO [LABEL]: A3
OBTENIENDO [LABEL]: A4
OBTENIENDO [LABEL]: A5
OBTENIENDO [LABEL]: B1
OBTENIENDO [LABEL]: NOMBRE
OBTENIENDO [LABEL]: Cesar Ricardo
OBTENIENDO [LABEL]: Catherine Magaly
OBTENIENDO [LABEL]: B5
OBTENIENDO [LABEL]: C1
OBTENIENDO [LABEL]: APELLIDO
OBTENIENDO [LABEL]: Guerra Arnaiz
OBTENIENDO [LABEL]: Cotrina Vasques
OBTENIENDO [LABEL]: C5
OBTENIENDO [LABEL]: D1
OBTENIENDO [LABEL]: DNI
OBTENIENDO [NUMBER]: 41816133
OBTENIENDO [NUMBER]: 48798678
OBTENIENDO [LABEL]: D5
OBTENIENDO [LABEL]: E1
OBTENIENDO [LABEL]: EDAD
OBTENIENDO [NUMBER]: 27
OBTENIENDO [NUMBER]: 25
OBTENIENDO [LABEL]: E5
OBTENIENDO [LABEL]: F1
OBTENIENDO [LABEL]: FECHA
OBTENIENDO [DATE]: 20 12 2010 12:00:00
OBTENIENDO [DATE]: 21 12 2010 12:00:00
OBTENIENDO [LABEL]: F5
OBTENIENDO [LABEL]: G1
OBTENIENDO [LABEL]: G2
OBTENIENDO [LABEL]: G3
OBTENIENDO [LABEL]: G4
OBTENIENDO [LABEL]: G5

II. ReadExcel.java: Permite la creación de un archivo .xls, llamado: C:\\JAVA_EXCEL_CREATED.xls, donde se está incrustando cabeceras de texto simple, link, imágenes, etc.

Para descargar el demo pulsar Aquí

domingo, 17 de octubre de 2010

MANEJO FRAMEWORK "AJAX TAGs v1.5.1"

Luego de postear anteriormente sobre el manejo de AJAX de forma NATIVA, esta vez les mostrare un ejemplo de como manejar este Framework que facilita el manejo de AJAX mediante una serie de TAGs que brinda el acceso al servidor sin la necesidad del clasico PostBack. Esta librería permite la aplicación de funcionalidad AJAX en el desarrollo de componentes como:

- COMBOBOX.
- LISTAS.
- CALLOUT.
- PORLET.
- TOGGLE.
- EDITOR.
- TREE.
- Etc.

La logica de este Framework esta basado al manejo de un Servlet especial que extiende de la clase: BaseAjaxServlet

Aqui el mapeo respectivo en el web.xml: (Ojo por motivos de Visualización he cambiado '<' por '[' & ']' por '>')


[servlet][display-name]AjaxServlet[/display-name]
[servlet-name]AjaxServlet[/servlet-name]
[servlet-class]org.java.servlet.AjaxServlet[/servlet-class]
[load-on-startup]2[/load-on-startup][/servlet]

[servlet-mapping]
[servlet-name]AjaxServlet[/servlet-name]
[url-pattern]/AjaxServlet[/url-pattern]
[/servlet-mapping]

[!-- **** SERVLET: CARGA LAS LIBRERIS DEL 'JAR' **** --]
[servlet]
[servlet-name]sourceloader[/servlet-name]
[servlet-class]net.sourceforge.ajaxtags.servlets.SourceLoader[/servlet-class]
[init-param]
[param-name]prefix[/param-name]
[param-value]/ajaxtags[/param-value]
[/init-param]
[/servlet]

[servlet-mapping]
[servlet-name]sourceloader[/servlet-name]
[url-pattern]/ajaxtags/js/*[/url-pattern]
[/servlet-mapping]

[servlet-mapping]
[servlet-name]sourceloader[/servlet-name]
[url-pattern]/img/*[/url-pattern]
[/servlet-mapping]

[servlet-mapping]
[servlet-name]sourceloader[/servlet-name]
[url-pattern]/css/*[/url-pattern]
[/servlet-mapping]
[!-- ************************************** --]


Para descargar el ejemplo completo, descargarlo de: AQUÌ.

MANEJO DE "AJAX" (FORMA NATIVA)

En esta oportunidad mostrare el manejo de AJAX (Asynchronous JavaScript And XML) de la forma Nativa, pero en dos formas distintas de realizar. Al decir forma Nativa, hago referencia a que no utilizare ningún Framework especializado, sino que me apoyare en funciones JavaScript o mediante un simple fichero .JS.

Lo más resaltante es el diseño del fichero .JS que permitirá el acceso al servidor de forma directa sin la realización de un Post Back, el fichero es el siguiente:

var vAJAX;

/*** GLOBALES ***/
var Id_OBJETO;
var URL_Redirec;
var Id_Mostrar;

function PROCESAR_AJAX( Id_OBJETO2, URL_Redirec2, Id_Mostrar2 ){

this.Id_OBJETO = Id_OBJETO2;
this.URL_Redirec = URL_Redirec2;
this.Id_Mostrar = Id_Mostrar2;

recuperaAjax();
}

function recuperaAjax(){

//CREAMOS EL CONTROL 'XMLHttpRequest', SEGÚN EL NAVEGADOR UTILIZADO:
if( window.XMLHttpRequest ){
vAJAX = new XMLHttpRequest(); //SI NO ES 'INTERNET EXPLORER'
}
else{
vAJAX = new ActiveXObject( "Microsoft.XMLHTTP" ); //SI ES 'INTERNET EXPLORER'
}

//ALMACENAMOS EN EL CONTROL, LA FUNCION QUE INVOCARA CUANDO LA PETICION CAMBIE DE ESTADO
vAJAX.onreadystatechange = funcionCallback; //IMPORTANTE LOS LLAMADOS A LOS METODOS SE HACEN SIN PONER '()'

//ENVIAMOS LA PETICION...
vAJAX.open( "GET", URL_Redirec + "?PERSONA=" + Id_OBJETO , true );
vAJAX.send( "" );
}

function funcionCallback(){
//alert(Id_OBJETO);
alert(URL_Redirec);
//alert(Id_Mostrar);

//COMPROBAMOS SI LA PETICION SE HA COMPROBADO: (TIENE QUE COINCIDIR CON EL ESTADO #4)
if( vAJAX.readyState == 4 ){

//COMPROBAMOS SI LA RESPUESTA HA SIDO CORRECTA: (TIENE QUE COINCIDIR CON 'HTTP 200')
if( vAJAX.status == 200 ){

//ESCRIBIMOS EL RESULTADO DE LA PAGINA 'HTML' MEDIANTE 'DHTML'
if( Id_Mostrar == "IMPRIMIR" ){
document.all.IMPRIMIR.innerHTML = "" + vAJAX.responseText + "";
}
else{
alert("");
}
}
}
}






Para descargar el ejemplo completo, descargarlo de: AQUÌ.