Desde un Dispositivo Móvil hasta PostgreSQL utilizando WebSphere Message Broker

Conectando un dispositivo móvil con el backend

El siguiente documento trata de explicar la manera en la que se puede lograr la comunicación entre un dispositivo móvil, en este caso un celular, y el backend de una empresa, representado en este caso por una base de datos en PostgreSQL.

Juan Montalvo Godina, WebSphere IT Specialist, IBM

Juan Montalvo GodinaEl siguiente documento trata de explicar la manera en la que se puede lograr la comunicación entre un dispositivo móvil, en este caso un celular, y el backend de una empresa, representado en este caso por una base de datos en PostgreSQL.



24-10-2011

Los puntos a cubrir son básicamente dos:
*Conexión de un dispositivo móvil a Message Broker mediante WebServices
*Integración y manejo entre Message Broker y PostgreSQL mediante JDBC.

El escenario muestra es la inserción de un cliente desde un celular, basado en los siguientes componentes:
*WebSphere Message Broker v7.0.0.3
*WebSphere MQ v7.0.1.3
*WebSphere Message Broker Toolkit v7.0.0.3
*Sun Java Wireless Toolkit v2.5.2
*PostgreSQL v 8.4
*EclipseME v 1.7.9

1.- Para empezar, necesitamos crear la estructura del mensaje que viajará a través del flujo de Broker. Para esto abrimos un nuevo workspace y generamos un nuevo Message Set.

2.- Definimos el nombre del proyecto, en este caso ClienteMovil y continuamos con el wizard.

3.- El tipo de archivo que manejaremos será XML y especificamos que estaremos trabajando con WebServices

4.- Finalizamos el wizard y esperamos para generar la definición de la estructura.

5.- El toolkit nos puede o no mostrar la siguiente imagen. Si lo hace, damos clic en el botón Ok y continuamos.

6.- Vamos a generar ahora, el tipo y definición de la estructura con la que trabajaremos. Para esto, generamos una nueva definición de mensaje.

7.- La definición se llamará Cliente y deberá lucir similar a la siguiente pantalla.

8.- En el espacio de trabajo, vamos a la pantalla central para generar un nuevo tipo de datos complejo de bajo de la sección de Types

9.- Nombramos Cliente_Type al Nuevo tipo y empezamos a agregar 4 elementos locales de la siguiente manera.

10.- Renombramos los nombres de los elementos locales hasta que se vea de la siguiente manera:

11.- El siguiente paso es generar un nuevo mensaje basado en la definición que recién acabamos de crear. Agregamos un mensaje

12.- Lo nombramos Cliente_Msg y definimos el tipo correcto del mensaje, en este caso Cliente_Type. Al momento de crear el nuevo mensaje se crea un tipo llamado de mensaje llamado complexType, tendremos que borrar este tipo antes de continuar.

13.- Una vez hecho esto deberíamos tener la siguiente representación de lo que recién acabamos de hacer.

14.- Guardamos los cambios y procedemos a la creación de una definición WSDL para que sea la base de nuestro flujo a implementar. Para esto, necesitamos dar clic en la definición del mensaje, en la sección de proyectos, y seleccionar la opción Generate -> WSDL Definition

15.- Se abre un wizard para generar la definición del WSDL. En la primera pantalla seleccionamos la primera opción y damos clic en continuar.

16.- Paso siguiente, generamos una nueva carpeta en nuestro proyecto llamada WSDL y la seleccionamos como destino de la creación del nuevo archivo WSDL. Además, especificamos que queremos generar una estructura plana de archivos y continuamos con el asistente.

17.- En la siguiente pantalla, especificamos que queremos la definición de lo esquemas a manera inlined. Este punto es muy importante, ya que si no se selecciona esta opción hay algunos problemas en la generación del cliente WebService cuando el WSDL hace referencias a definiciones que están fuera del propio WSDL.

18.- En la siguiente página del asistente definimos el número y nombre de operaciones que contendrá el WebService. En este caso solo contará con una operación llamada insertaCliente que tendrá como entrada y salida el tipo de mensaje que habíamos definido anteriormente.

19.- Continuamos con el asistente para definir el tipo de componente que generaremos, así como nombre del servicio, acción y puerto. En este caso, dejaré los valores por defecto, solo especificaré el nombre de la acción SOAP.

20.- La última pantalla del asistente nos muestra un sumario de lo que definimos. Damos clic en finalizar para iniciar con la generación del WSDL.

21.- Una vez terminada la generación del WSDL, vamos a generar el flujo que hará la inserción a PostgreSQL. Para esto, utilizaremos los asistentes de Quick Starts en la parte superior izquierda de la pantalla, y seleccionamos la opción de iniciar desde un WSDL.

22.- Definimos el nombre de nuestro proyecto y continuamos con el asistente.

23.- Como base de nuestro proyecto, seleccionamos el WSDL que definimos en la sección anterior

24.- Seleccionamos la opción que se nos presenta en la siguiente pantalla y finalizamos el asistente.

25.- Una vez finalizada la creación del asistente, debemos tener una estructura similar a la que se muestra en la siguiente imagen. Poniendo foco especia el archivo ClienteMovilService.wsdl debajo de la sección Deplorable WSDL

26.- Seleccionamos este archive y lo arrastramos hacia el canvas en el que construiremos el flujo de broker

27.- Se abrirá un asistente en el que definiremos que acción se realizará con este servicio. En este caso, especificamos que se expondrá el flujo como WebService y continuamos con el asistente.

28.- En la siguiente pantalla definimos que utilizaremos nodos SOAP para trabajar. Finalizamos el asistente.

29.- Se crean tres nodos en el canvas, básicamente la entrada del servicio, un componente que simplifica el mensaje SOAP y el nodo para responder el WebService.

30.- El siguiente paso a completar, es la inclusión de un nodo Java para realizar la conexión e inserción a PostgreSQL.

31.- Arrastramos y conectamos el nuevo nodo para obtener algo similar a la siguiente imagen.

32.- Damos doble clic sobre el nodo Java y se abrirá un asistente para la configuración del nodo. En la primera pantalla definimos el nombre del proyecto Java que utilizaremos.

33.- En la siguiente pantalla tenemos que agregar las librerías que utilizaremos, en este caso el driver JDBC para realizar la conexión. Nos vamos a la pestaña de Libraries y dar clic en el botón Add External JARs.

34.- Buscamos la siguiente librería y la seleccionamos. Se puede descargar del siguiente sitio:
http://jdbc.postgresql.org/download.html

35.- La pantalla se debería ver de manera similar a la siguiente imagen. Continuamos con el asistente.

36.- Definimos el nombre del paquete, en este caso cliente.psql y continuamos con el asistente.

37.- Definimos el tipo de acción que realizaremos en el componente Java. En este caso es una modificación al mensaje y finalizamos el asistente.

38.- Se abre el código del componente Java, localizamos la sección indicada en la siguiente imagen.

38b.- Colocamos el siguiente fragmento de código dentro del área delimitada sustituyendo los valores de user y password por aquellos que apliquen en su instalación.

39.- Si se muestra un error como el siguiente, se soluciona con importar las librerías adecuadas.

40.- Tenemos que importar las siguientes librerías para que el código pueda compilar.

40b.- Guardamos los cambios hasta el momento y ahora conectamos la salida Alternate, que para nosotros significa que hubo algún problema, y la relacionamos con la respuesta del WebService.

40c.- Hasta este punto, nuestro proyecto debería verse así.

41.- Para que Broker pueda ver el jar JDBC para PostgreSQL en tiempo de ejecución, se debe de copiar al directorio shared-classes de Broker, en este caso en la dirección que se muestra abajo. Esto es importante, ya que si no se copia el jar, Broker enviará un error especificando que no encuentra cierta clase. Una vez copiado, es necesario reiniciar el Broker.

42.- El siguiente punto es crear un Broker Archive para instalar nuestro flujo. Para esto damos clic derecho en el proyecto y seleccionamos la opción siguiente.

43.- Especificamos el nombre del BAR en el asistente y lo finalizamos.

44.- En la ventana Prepare del Broker Archive, seleccionamos los siguientes proyectos a ser incluidos. El flujo, la definición de mensaje normal y la del WebService, y el componente java.

45.- Nos movemos a la pantalla de Manage y construimos el BAR.

46.- No debería haber problemas para construir el empaquetado. Y los archivos incluidos se deberían ver de la siguiente manera.

47.- Instalamos el flujo, localizando el archivo .bar que acabamos de generar y arrastrándolo hasta el grupo de ejecución.

48.- Hasta este momento, ya tenemos el flujo, expuesto como WebService, que realiza la inserción a una base de datos PostgreSQL. La siguiente parte de nuestro documento, se enfocará en la creación de un cliente móvil para el flujo ya creado. Para esto abriremos un nuevo espacio de trabajo del WebSphere Message Broker Toolkit e instalaremos EclipseME para desarrollar en dispositivos móviles. Para esto vamos a la opción de Help -> Software Updates…

49.- Damos clic en la pestaña de Available Software y agregamos el sitio del cual descargaremos EclipseME.

50.- El sitio es http://www.eclipseme.org/updates y damos clic en Ok

51.-Expandimos la opción indicada en la imagen y seleccionamos la opción de EclipseME 1.7.9 y seleccionamos la opción de Install…

52.- En la siguiente página seleccionamos la opción que se nos muestra y continuamos con el asistente.

53.- Aceptamos los términos y finalizamos el asistente.

54.- Una vez que se instala EclipseME nos pide que reiniciemos el Toolkit. Aceptamos y esperamos el reinicio.

55.- Una vez reiniciado el espacio de trabajo, vamos a generar un nuevo proyecto J2ME. Seguimos la ruta File -> New -> Other

56.- Buscamos la carpeta de J2ME y seleccionamos J2ME Midlet Suite.

57.- Especificamos el nombre del proyecto, en este caso ClienteMovil y continuamos con el asistente.

58.- En esta parte utilizaremos funcionalidad de Sun Java Wireless Toolkit v2.5.2, por lo que es necesario ya tener instalado este producto. La instalación esta fuera del alcance de este documento. El producto puede ser descargado de la siguiente liga http://www.oracle.com/technetwork/java/download-135801.html . Damos clic en Manage Devices para especificar sobre que dispositivo queremos emular nuestra aplicación

59.- En la página que se nos abre, vamos a la sección de J2ME -> Device Management del lado izquierdo y damos clic en el botón Import.

60.- Especificamos la ruta de instalación del Wireless Toolkit y damos clic en Refresh. Se actualizará la pantalla de Devices mostrándonos los dispositivos disponibles para utilizar. Seleccionamos todos y finalizamos el asistente.

61.- En la siguiente pantalla especificamos cual dispositivo utilizaremos. En este caso DefaultColorPhone.

62.- Nuestra pantalla se debe ver similar a la siguiente. En este punto podemos finalizar el asistente.

63.- Con el proyecto creado, necesitamos crear un nuevo Midlet para ejecutar en el móvil. Clic derecho en el proyecto ClienteMovil y seguimos la ruta New -> Other.

64.- Buscamos la carpeta J2ME y seleccionamos la opción J2ME Midlet y continuamos con el asistente.

65.-Necesitamos especificar el fólder en el que se creará el midlet y el nombre del mismo. Finalizamos el asistente.

66.- Nuestro workspace se deberá ver similar al siguiente.

67.- Para probar que todo va bien, damos clic derecho en el midlet que acabamos de crear y lo ejecutamos como se muestra en la pantalla.

68.- Dado que es un midlet vacío, solo se cargará el dispositivo en blanco como se muestra a continuación.

69.- Es tiempo de generar las clases necesarias para interactuar con el WebService de Broker. Para esto, tenemos que buscar dentro de los programas instalados el Wireless Toolkit y seleccionar la opción de Utilities.

70.- Seleccionamos la opción de Stub Generator y ejecutamos la utilería.

71.- En la siguiente pantalla necesitamos especificar sobre que WSDL se basará la herramienta para generar las clases necesarias. En este caso especificamos el WSDL utilizado en el punto 26, es muy importante que sea este el referenciado. Seleccionamos un directorio de salida y especificamos el package cliente.movil. En la versión de CLDC especificamos la 1.1. La gran diferencia entre ambos es en el manejo de los tipos float e integers, la versión 1.0 no los soporta. Finalizamos el asistente.

72.- Esperamos a que termine la generación.

73.- Si todo va bien, se muestra el siguiente mensaje.

74.- Ahora vamos a importar las clases generadas para utilizarlas en nuestro proyecto. Creamos la siguiente jerarquía cliente->movil dentro de la carpeta src e importamos las clases en esta carpeta.

75.- Seleccionamos la opción de File System y continuamos con el asistente.

76.- Navegamos hasta la carpeta en la que dejamos las clases java generadas en el punto 71 y seleccionamos los archivos java que importaremos. Hay que seleccionar las opciones de carpeta tal cual se muestran en la siguiente imagen.

77.- Una vez finalizado el asistente, debemos tener una estructura como la siguiente. Vamos a trabajar sobre el archivo ClienteMovil.java

77b.- Copia y pega el siguiente código sustituyendo el código generado por defecto para el archivo ClienteMovil.java

78.- Guardamos el proyecto y ejecutamos de nuevo el midlet para ver los cambios en la aplicación.

79.- Al lanzarse el emulador móvil, se muestra una pantalla con 3 campos editables correspondientes al Nombre, Telefono y Edad, además de un cuarto campo en el que se mostrarán mensajes de control de la aplicación. Una vez que tengamos los datos listos para enviarse, seleccionamos la opción Enviar en el emulador.

80.- El emulador pedirá autorización para el envío de datos. Aceptamos la petición para continuar con el envío.

81.- El móvil mostrará un mensaje de cliente insertado correctamente.

82.- Vamos a la base de datos correspondiente con la herramienta de administración de PostgreSQL. En este caso la base de datos prueba, con la tabla cliente.

83.- Corremos un select sobre la tabla para ver los registros de la misma.

84.- Vemos que estará registrada la información que acabamos de enviar.

85.- Podemos enviar un par de pruebas mas, incluso deteniendo el manejador de base de datos para verificar el manejo de errores.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=WebSphere
ArticleID=767530
ArticleTitle=Desde un Dispositivo Móvil hasta PostgreSQL utilizando WebSphere Message Broker
publish-date=10242011