lunes, 1 de junio de 2009

MANEJO DE 'WEB SERVICE' CON 'AXIS1'.

Ultimamente en mi nuevo trabajo me solicitaron la integracion de dos sistemas que trabajaban por separado y analizando decidi aplicar 'Web Service'(WS), asi que buscando decidi aplicar este muy buen Framework para manejo en JAVA de Web Service 'AXIS1'. El ejemplo presentado acontinuaciòn consiste en dos proyectos JAVA:

1.- Ejemplo_ServidorWS_AXIS1:
- Posee clases de conexion a MySql.
- Posee un Patròn DAO y las Interfaces respectivas.
- Posee Servicios de acceso.
- Aqui se genarara el 'WSDL'(Que es un XML mapeado con los paràmetros que accederàn de un sistema al otro), mediante la herramienta que brinda Eclipse.

2.- Ejemplo_ClienteWS_AXIS1:
- Posee dos ejemplos de Cliente 'Web Service', el primero generado mediante la herramienta del Eclipse para generar un 'Cliente WS' en base al 'WSDL' ya creado, y el segundo cliente es en base varias clases que brinda 'AXIS' para el acceso automàtico en base a solo el nombre de la ruta del 'WSDL' en String.

Datos Importante (Sobre el Ejemplo a Descargar):
- El ejemplo del manejo de Web Service esta preparado para correr con platformas JAVA v1.5 y v1.6 (Aqui se debe quitar de a carpeta 'lib': jsp-api.jar y servlet.jar ya que vienen dentro del 'JDK-1.6' sino crea conflicto y no levantar la aplicaciòn), trabaja con una conexion a MySql (El Stript se encuentra dentro del Aplicativo Servidor) y fue desarrollado en Eclipse v3.3.

- Para levantar el 'Web Service', se tiene que tener ya un proyecto Java listo con las conexion a MySql, que trabajara como 'Servidor' y en base a la Implementacion de una Interface 'DAO' o la de un 'Servicio' se generara el 'WSDL', donde se mapearan los datos de entrada y salida para la interconexion de los sistemas. (Al correr la aplicaciòn con el Tomcat, se levanta junto con la aplicacion el servicio 'WSDL'). Ver imagenes:

Se muestra el arbol de la aplicaciòn que servirà de Servidor para el 'WS'.

Comenzamos a generar el 'WS' con la herramienta de Eclipse.

Seguir pasos que se muestran en la imagen.

Chequear los mètodos que serviràn para la generaciòn del 'WS'
(Seran mapeados en el XML).

Iniciar el Servidor y pulsar finalizar.

Se levantarà la aplicaciòn y se mostrarà una pàgina 'JSP'.

Del 'WDSL' generado obtendremos la ruta del del 'WSDL' para probar si el servicio esta iniciado.

A la vez que se levanta el servidor se inicia el Servicio del 'WS'. Observemos el 'WSDL' generado agregando al link el '?wsdl'.

Luego de esto, para generar el cliente con la herramienta que facilita el Eclipse
copiamos la carpeta 'WSDL' con todo su contenido del Proyecto Java que sirve de 'Servidor' al proyecto que servirà de 'Cliente' y del 'UsuarioDaoImpl.wsdl' generar las clases base.


Dar los cheks respectivos que se muestran en la imagen.

Se muestra la ubicaciòn donde se generà las clases de apoyo al 'WS' (org.java.dao) en la aplicacion 'Cliente'.

Se muestran las clases generadas en el proyecto Cliente 'WS'.

Luego de estos pasos, ya podemos trabajar con el cliente 'WS'. Mostrarè dos formas de realizar un cliente 'WS' para realizar un mantenimiento via 'WS', los procesos seràn los siguientes y se ejecutaràn en base al orden que sean descomentados:

/********** PROCESOS 'WS' **********/
clienteWS.registrarUsuario( accesoWS );
//clienteWS.modificarUsuario( accesoWS );
//clienteWS.eliminarUsuario( accesoWS );
//clienteWS.obtenerObjetoUsuario( accesoWS );
//clienteWS.obtenerListaObjetosUsuario( accesoWS );
/**************************************/

1.- Cliente 'WS' en base a las clases generadas:'src.org.java.client.ClienteWS_Generado.java', utiliza las clases generadas por Eclipse para conectarse al 'WSDL'.

2.- Cliente 'WS' de acceso automàtico sin utilizar ninguna clase generada:'src.org.java.client.ClienteWS.java', no necesita ninguna clase sino que utiliza las Clases que brinda AXIS para el acceso automàtico, necesitando simplemente la ruta del 'WSDL' en String.

Para mayor detalle descargar el ejemplo completo: AQUI.

AUTOMATIZACIÒN DE PROCESOS CON 'QUARZ'

Hace tiempo estaba buscando alguna forma de como realizar 'Procesos Automàticos', que estos se ejecuten periodicamente, que a la vez la configuracion de estos Procesos Automaticos conocidos como (JOBs) sean totalmente personalizables y los importante que sea hecho en JAVA. Indagando encontre este muy buen 'Framework' 'QUARZ', que permite todo lo anterior dicho y màs. Aquì muestro el manejo de este muy buen Framework:

Configuraciòn:
1.-Configuramos el Web.xml, ingresando el acceso al servlet:

[servlet]
[servlet-name]QuartzInitializer[/servlet-name]
[display-name]Quartz Initializer Servlet[/display-name]
[servlet-class]org.quartz.ee.servlet.QuartzInitializerServlet
[/servlet-class]
[load-on-startup]1[/load-on-startup]
[/servlet]

[servlet]
[servlet-name]QuarzMB[/servlet-name]
[display-name]Quartz Servlet[/display-name]
[servlet-class]org.java.manageBean.QuarzMB[/servlet-class]
[load-on-startup]2[/load-on-startup]
[/servlet]


2.- Este al ejecutarce la aplicaciòn accedera automaticamente a:
'org.java.manageBean.QuarzMB' y a su metodo:

public void init( ServletConfig config ) throws ServletException{
System.out.println( "DENTRO DE 'init( ServletConfig config )' " );

super.init( config );

try{
this.IniciarQuarz();
}
catch( IOException e ){
e.printStackTrace();
}
}

3.-En el metodo 'IniciarQuarz()' descomentaremos el ejemplo de los tres ejemplos que he preparado para la demostracion de este Framework:

public void IniciarQuarz() throws ServletException, IOException{
System.out.println( "DENTRO DE 'IniciarQuarz()' " );

try{
this.fechaInicio = new Date();
this.fechaFin = null;

QuarzMB job = new QuarzMB();
job.iniciarEjemploJob_01( this.fechaInicio, this.fechaFin );
//job.iniciarEjemploJob_02( this.fechaFin );
//job.iniciarEjemploJob_03( this.fechaInicio, this.fechaFin );
}
catch( Exception e ){
e.printStackTrace();
}
}

4.- Por ejemplo la salida al ejecutarce el Ejemplo #1 se darìa cada 5 segundos y serìa la siguiente (En realidad no se envìa los emails, pero si dentro de dicho mètodo se hace una funcionalidad de envìo de emails funcionarà sin problema):


------------- ['2009-06-01 23:19:20'] JOB Ejecutado ------------
******* DENTRO DE 'envioAlertaProceso_01()' *******
Enviando Email...#0 [cesarricardo_guerra19@hotmail.com] a Cesar Ricardo
Enviando Email...#1 [magaly_027@hotmail.com] a Catherine Magaly
Enviando Email...#2 [i220051@cibertec.edu.pe] a Milko Samame

------------- ['2009-06-01 23:19:25'] JOB Ejecutado ------------
******* DENTRO DE 'envioAlertaProceso_01()' *******
Enviando Email...#0 [cesarricardo_guerra19@hotmail.com] a Cesar Ricardo
Enviando Email...#1 [magaly_027@hotmail.com] a Catherine Magaly
Enviando Email...#2 [i220051@cibertec.edu.pe] a Milko Samame

------------- ['2009-06-01 23:19:30'] JOB Ejecutado ------------
******* DENTRO DE 'envioAlertaProceso_01()' *******
Enviando Email...#0 [cesarricardo_guerra19@hotmail.com] a Cesar Ricardo
Enviando Email...#1 [magaly_027@hotmail.com] a Catherine Magaly
Enviando Email...#2 [i220051@cibertec.edu.pe] a Milko Samame


Para un mejor entendimiento del manejo de este Framework, puedes descargar el proyecto 'Eclipse' completo: AQUI.

sábado, 9 de mayo de 2009

Validaciones con Hibernate Annotations & RichFaces

Explorando una forma nueva de realizar las validaciones, comence a indagar como podria realizarlo por medio de Anotaciones con el Framework 'Hibernate' y bueno probando resulto el demo preparado a continuaciòn.

Este demo esta realizado en Eclipse, Maven y RichFaces (Para el acceso a las anotaciones, mediante uno de sus controles). Para los que no puedan correr la aplicacion por medio de Maven, aqui esta un muy buen tutorial descargable.

Para descargar la aplicaciòn demo pulsar:
Aquì.

domingo, 3 de mayo de 2009

Integraciòn JSF - Applet - Servlet

Hola como estan, hace unos dìas estaba trabajando y surgiò la necesidad de realizar una implementaciòn de un sistema y integrar 2 logicas de programaciòn distintas (Aplicacion J2SE y J2EE), para ello sabia que tenia que relizarlo mediante applets incrustados dentro de la aplicaciòn oreintada a web. Pero, lo que deseaba hacer es que trabaje en el servidor, una tranferencia de datos que tenia que hacer mediante un formulario, y como el applet no trabaja en el servidor mismo sino en el cliente, tube que indagar formas diferentes formas de conectar estas 2 logicas de trabajo y encontre una par de formas de hacerlo:

Mediante una conexion de la aplicacion web, enviandole aparametros al applet y este a su vez conectandoce con el servlet (Que hara lo que tenga que hacer en el servidor: guardar en base de datos, guardar una imagen en disco, etc) para que luego este servlet regrese un mensaje de confirmacion entre otras cosas y estas se muestren en la aplicacion web. Todo esto es apreciado en algunos ajemplos que preparè.

Para visualizar como luce la aplicaciòn pulsar:
Aquì.

Para descargar la aplicaciòn demo online pulsar:
Aquì.

Hasta una nueva oportunidad.

jueves, 30 de abril de 2009

Integracion 'J2EE - JMF - BLOB' en 3 Motores de Datos Distintos.

Hola como están, en esta oportunidad estoy presentando un demo que muestra la integración de J2EE + JMF + BLOB (Archivos) en 3 diferentes motores de datos. La idea de este demo surgió hace un par de semanas ya que en mi ex-trabajo aparecieron los requerimientos de hacer un sistema que manejara un control de WebCam en tiempo real dentro de la misma aplicación web y yo buscando me encontré con JMF que permitía hacer todo esto y mas ya que es un API para manejo de multimedia, luego surgió otro requerimiento que las imágenes que para la webcam sean en guardadas no en una ruta del servidor sino en la misma BD. Y esto fue un problema ya que no todos los motores de datos manejan la misma clase para guardar el archivo BLOB. Y finalmente recuperar la imagen guardada y mostrarla. Bueno lo anteriormente explicado salio finalmente exitoso y me dio la idea de ir un poco más y preparar un demo como este:

EXPLICACIÒN:
La aplicación que he desarrollado y continuación explicare esta basada en J2EE, JMF, JSF (Tomahawk, Sandbox, Richfaces), trabaja con 3 motores de datos simultaneamente ( MySql, Postgres y Oracle ) y fue desarrollado en la IDE: 'Red Hat Developer Studio'( Que es un Eclipse v3.3 mejorado ). Esta aplicación en si consta de 3 demos:

1er Demo: Búsqueda BLOB 'Applet-Servlet', donde se aplica una lógica de programación basada en 'Applet-Servlet' y muestra un ambiente de consulta para obtener el objeto que trae consigo a mostrar el archivo guardado en la BD como blob. Para la consulta hay que escoger el código del registro y tipo de archivo que se obtendrá de la BD y que ya esta guardada como tipo de dato (Imagen, Música, Video, Documento). Esto será validado al momento de obtener dicho archivo para dependiendo de eso mostrarse en el navegador, en un Applet JMF ( Como 'Control Imagen' o Como 'Reproductor' ).

2do Demo: Búsqueda BLOB 'Jsf-Servlet', donde se aplica una lógica de programación basada en 'Jsf-Servlet' y muestra un ambiente de consulta para obtener el objeto que trae consigo a mostrar el archivo guardado en la BD como blob. Para la consulta hay que escoger el código del registro y tipo de archivo que se obtendrá de la BD y que ya esta guardada como tipo de dato (Imagen, Música, Video, Documento). Esto será validado al momento de obtener dicho archivo para dependiendo de eso mostrarse en el navegador, mediante un Servlet que utiliza un clase que desarrollé llamada 'ManejoContentType' que lee la extensión del archivo obtenido y automáticamente retorna el tipo de ContentType respectivo para que el Servlet retorne en el response.

3er Demo: Demo Mantenimiento BLOB, donde se muestra un mantenimiento completo (CRUD), utilizando las lógicas explicadas anteriormente.

4to Demo: Este demo no es propio de la aplicación web pero es importante ya que muestra el manejo de BLOB ejecutando una clase descomentando y comentando métodos (CRUD), dicha clase esta ubicada en: 'Manejo_Java_BLOB\src\org\java\main\Main.java', recuerda que para la ejecución de esta clase se tiene que haber hecho previamente 'Configuración Previa' y que luego de ejecutar los 4 métodos CRUD de la clase en orden, se tiene que copiar nuevamente el contenido de: 'Manejo_Java_BLOB\fuentes\imagenesPrueba' en: 'C:\Imagenes'.

Para visualizar como luce la aplicación pulsar:
[[ VISUALIZAR ]]


CONFIGURACIÒN PREVIA
Para configurar la aplicación hay que tener ya cargada la aplicación en 'Red Hat Developer Studio o en Eclipse v3.3. Luego hay que ver a cual de los 3 motores de datos que soporta la aplicación nos vamos a conectar, esto al igual que los paràmetros de conecciòn son configurables en el archivo: 'Manejo_Java_BLOB\src\org\java\conexion\jdbc.properties'
( 1=MySql, 2=Postgres, 3=Oracle ).
(Si tenemos los 3 motores de datos podemos acceder a los 3, alterando el archivo .properties y reiniciando el servidor para cada acceso), para la manipulaciòn de los datos de tipo BLOB, de en los 3 motores de datos, podemos usar esta muy buena herramienta DbVisualizer v6.5.1 . Luego, hay que crear la carpeta 'C:\Imagenes' y hay que pegar el contenido de 'Manejo_Java_BLOB\fuentes\archivosBlob' y de 'Manejo_Java_BLOB\fuentes\imagenesPrueba' ahí dentro (Estos serán los archivos que serán grabados como BLOB en los registros de prueba ). Después, ejecutaremos los scripts que serán soportados en los motores de datos, para ello accederemos a la ruta 'Manejo_Java_BLOB\fuentes\bd\ScriptBD.txt', dentro están los scripts para crear las tablas, secuenciales y inserts respectivos por motor de datos. Finalmente, Instalar la plataforma JMF v2.1 y luego el Plugin MP3 v3.1.0. (Recuerda que estos tienen que estar relacionados con el JDK o JRE que la aplicación este usando).

DESCARGAS:
Descarga Aplicación Demo Completa.
Descarga Plataforma JMF v2.1.
Descarga Java MP3 Plugin v3.1.0.

jueves, 5 de marzo de 2009

Manejo Conexiones JDBC

En esta oportunidad estoy mostrando un documento que muestra los informaciòn importante para el manejo de conexiones JDBC en distintos motores de datos, la informaciòn que he recaudada es la siguiente:

- Clase Driver:
- URL de Conexión:
- Ejemplo URL:
- Librerìa 'jar':
- Hibernate Dependency:

Las librerìas JBDC de las cuales se a juntado la informaciòn, son de los siguientes motores de datos:

- DB2
- DERBY
- H2
- HSQLDB
- INFORMIX
- MySQL
- ORACLE
- PostgreSQL
- SQLSERVER
- SYBASE

Para descargar el documento con toda la informaciòn anteriormente explicada pulsar: AQUI.

Para descargar todas las librerias (.JARs) JDBC de todos los motores de datos nombrados pulsar: AQUI.

viernes, 27 de febrero de 2009

Validaciones y Mensajes Dinamicos con JSF

Aqui muestro una forma muy efectiva de como manejar los Validadores en un Formulario
utilizando el Framework 'JSF', en los casos que se manipulen datos de tipo: 'BigDecimal, String, Integer, Date'. Ademas, muestro tambien una forma de como manipular los de 'JSF' para trabajarlos de forma dinàmica ( Estados: INFO, ERROR, WARNING ).

Para visualizar la Aplicacion demo, donde muestro todo lo explicado anteriormente pulsar: AQUI.

Porsiaca la Aplicacion demo la desarrolle en la Ide 'Eclipse v3.3'. Y para verlo se puede simplemente importar dicho proyecto desde Eclipse.