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.

7 comentarios:

Juan Manuel Salazar dijo...

Saludos amigo tienes algún ejemplo de trabajo con el protocolo de tiempo real RDP q utilice el framework JMF ? De antemano muchisimas gracias por tu colaboracion =)

JAVAMAN dijo...

Que tal Juan, sobre el tema este de RDP sé que es para trabajar Remote Desktop en aplicaciones JAVA, pero no he tenido tiempo de indagar sobre ese tema.

Suerte...

Adac dijo...

Amigo muchas Gracias, he estado mirando tu aplicación y me ha servido mucho, estoy haciendo un Proyecto de Telemedicina y me cae de Lujo...Gracias

Juan Pablo dijo...

Que tal Javaman, he leido tu blog acerca de una aplicación sobre el manejo WebCam dentro de la misma aplicación web, estoy muy interesado en aprender este tema y si me puedes echar una mano... ya que quiero realizar un proyecto que incluya webcam en una aplicacion Web... Gracias

JAVAMAN dijo...

Que tal Adac el ejemplo mostrado muestra el manejo de esta API JAVA para la manipulacion de WEBCAM desde JAVA... eso si para hacerlos interactura tendras que apoyarte de varios truquitos para que simule una interaccion en tu navegador. Una de ellas es el acceso a tu clase JAVA (Servlet) desde JAVA SCRIPT que es la forma que recuerdo manejé (Hace Años) justo esto mismo lo tengo posteado en uno de los BLOGs que tengo.
Saludos.

Jairo Toledo dijo...

Buenas amigo.. ojala aun respondas... tengo una web en java ee con fw jsf.. y tu ejemplo me sirve de muchisima ayuda.. pero lo malo que el link de descarga en megaupload no sirve.. por favor serias tan amabla de subir el ejemplo en otro servidor para poder descargarlo o mejor aun enviarme el ejemplo a mi correo.. te estaria eternamente agradecido..!!

JAVAMAN dijo...

Listo ya están actualizados los links, saludos.