Archivo
Bienvenido Oracle ADF Mobile!
Ya es oficial: ha salido al mercado Oracle ADF Mobile. Con esta extensión del framework ADF, Oracle completa las opciones que ofrece su plataforma de Middleware a la hora de desarrollar aplicaciones, permitiendo crear aplicaciones nativas para dispositivos móviles.

Las características principales que convierten ADF Mobile en un gran producto para soluciones de movilidad empresariales son:
- Desarrollo unificado para distintas plataformas (develop once, deploy anywhere): de momento iOS y Android
- Acceso a funcionalidades del dispositivo: cámara, gps, contactos, correo…
- Capacidad de trabajo offline: utilizando una base de datos local
- Seguridad: aplicaciones integradas en la política de seguridad corporativa (SSO, Oracle Access Manager)
Todo esto con un desarrollo basado en lo que ya conocemos de ADF 11g (task flows, data controls…) y SOA (el proveedor de datos remoto natural para este tipo de aplicaciones), y por tanto, con una mayor facilidad de aprendizaje por nuestra parte.
avanttic ha formado parte del programa de beta testing, siendo el único partner español que se ha incorporado al mismo. Durante los meses que ha durado el programa hemos podido comprobar las capacidades del producto, ayudando a su mejora mediante el aporte de sugerencias y casos de uso derivados de los contactos con distintos clientes. Esto nos ha permitido, a fecha de hoy, tener varios prototipos disponibles y estar desarrollando ya nuestro primer proyecto para un cliente en ADF Mobile, con garantías tecnológicas y confianza en el producto.
Podéis empezar a descubrir qué ofrece el framework en el site del producto en la web de Oracle y descargarlo aquí. También podéis leer la nota de prensa.
Contacta con nosotros si quieres que te enseñemos los prototipos que tenemos preparados o deseas más información.
Esperando SOA & BPM 12c
Si hace relativamente poco que Oracle presentaba la nueva versión de Weblogic (de la cuál un compañero os hizo un breve resumen de las nuevas funcionalidades que incorpora), en el reciente Oracle Community Partner Forum que tuvo lugar en Málaga, tuvimos la oportunidad de conocer de primera mano la evolución prevista para los distintos productos que van a correr sobre esta nueva infraestructura. Así, anunciaron las nuevas características que debían aparecer con la nueva release 11gPS5 de SOA Suite y BPM Suite y el camino que seguirían estos productos hacia su versión 12c.
A continuación, os hago un resumen de las características que encuentro más interesantes de estos productos.
soapUI: Probar Web Services de forma rápida y efectiva
Cuando nos dedicamos a realizar proyectos de integración de sistemas mediante Web Services, lo más probable es que nos pasemos una buena parte de nuestro tiempo probando el funcionamiento de los mismos, ya bien para testear el buen funcionamiento de los servicios que implementamos, o bien para hacer pruebas de los servicios que debemos consumir.
Por tanto, es importante disponer, en nuestro arsenal de herramientas, de una herramienta que nos permita realizar estas pruebas de una forma rápida. Hoy os sugiero utilizar la que estoy utilizando yo actualmente en distintos proyectos: soapUI.
![]()
En primer lugar, las ventajas que veo a soapUI son las siguientes:
1) Existe una versión libre que cubre las necesidades de test básicas.
2) Nos permite generar con facilidad el esqueleto de una petición. Sólo debemos rellenarla con los valores que queremos probar y listo.
Estadísticas de tiempo de un servicio en el ESB 10gR3
A veces, querremos obtener una pequeña estadística de tiempos de llamada a nuestros servicios. Si hemos publicado y consumimos estos servicios en Oracle Enterprise Service Bus 10g, éste nos ofrece la posibilidad de darnos el tiempo en milisegundos que ha consumido cada uno de los servicios implicados en el servicio:
Por tanto, a través de la consola podríamos hipotéticamente filtrar todas las llamadas a servicios de nuestro interés e, instancia a instancia, recopilar los tiempos que cada una de ellas ha tardado en procesarse y sacar la estadística a partir de estos datos. Es decir, un proceso largo y tedioso.
¿Es posible obtener estos datos de una forma más automatizada? La respuesta es que sí. Hay que ir a la fuente de los datos.
Facilitando el consumo de nuestros Web Services basados en PL/SQL
Una de las cosas más importantes a la hora de desarrollar web services es proporcionar un contrato detallado describiendo las operaciones y parámetros de nuestro servicio. Este contrato se describe mediante lenguaje XML en un fichero de tipo WSDL (Web Service Description Language). Cuanto más precisa sea la definición del servicio en su contrato, menos problemas tendremos de interpretación entre lo que entienden los que desarrollan el servicio y los que lo consumen. Además, un contrato preciso permite a los consumidores utilizar herramientas de generación automáticas que les facilitan la tarea de llamar al servicio, pudiéndose concentrar en la lógica de la interacción y no en la tecnología.
JDeveloper, desde su versión 9, proporciona herramientas para publicar web services basados en packages PL/SQL. De este modo, es fácil reaprovechar la lógica de negocio embebida en nuestras bases de datos Oracle. El único problema que tiene el wizard de JDeveloper, es cuando se trata de generar el contrato para un servicio que devuelve directamente una estructura XML, es decir, un objeto de tipo XmlType. En este caso, y ante la incapacidad de averiguar cuál es la estructura que devuelve el PL/SQL, JDeveloper pone en el contrato que el método devuelve cualquier XML (un elemento de tipo any o anyType de XSD).
Si queremos aplicar buenas prácticas, deberemos modificar el contrato generado para que contenga la descripción de la estructura que realmente devolvemos (y que nosotros, en calidad de proveedores del servicio, conocemos). En este post, explicamos cuáles serían los pasos a realizar.
Un poco de formación ADF online
A la hora de empezar a trabajar en ADF, la fuente de documentación principal son los tutoriales colgados en la web de Oracle. Pero con una comunidad creciente de desarrolladores que utilizan este framework, es muy habitual encontrar cursos o trucos avanzados publicados por empresas y programadores individuales.
Hoy os dejo un par de links a cursos online en formato video y de carácter práctico:
- Canal de ADF Guru: Se trata de un curso de ADF 10g formado por 13 capítulos, donde se presentan las tareas más habituales a la hora de desarrollar aplicaciones en ADF. El audio es en inglés y es bastante comprensible. Un buen curso para empezar a trabajar en ADF, tanto en la versión 10g como en la versión 11g (ya que muchos conceptos son compartidos por ambas versiones).
- Masterclass de ADF 11g: Se trata de la grabación de una masterclass realizada por Juan Camilo Ruíz, de Oracle USA, en castellano sobre la versión 11g de ADF. Dividida en 10 videos, en ella, Juan Camilo nos muestra las características fundamentales del framework mediante el uso de ejemplos prácticos. Muy recomendable.
Ambos enlaces nos ofrecen una forma más interactiva de aprender ADF. Pero, si realmente quereis conocer las ventajas que ofrece ADF 11g, no dudeis en aprender de John, el programador-ninja de Oracle !!!
Los estándares sí importan
Mis primeras andanzas en el mundo de las arquitecturas orientadas a servicios (SOA) se desarrollaron sobre un servidor WebLogic 9.2, por entonces, un desconocido para mí.
Para conseguir el objetivo fijado en aquel momento, se instaló el producto de diseño de procesos BPEL de Oracle sobre el servidor WebLogic. Para aquellos que no lo conozcan, BPEL (Business Process Execution Language) es, a grandes rasgos, un lenguaje estàndard que permite definir un proceso cómo un flujo de tareas –automáticas o humanas-, ofreciendo integración con web services de forma natural. Existen distintos productos en el mercado orientados a ofrecer las capacidades de diseño, implementación y ejecución de los procesos definidos mediante este lenguaje, uno de los cuales, es la SOA Suite de Oracle.
En el mismo servidor, desplegamos una aplicación en tecnología ADF –también de Oracle-, que interactuaba con los procesos de negocio, y que actuaba de interfaz de usuario para las distintas tareas humanas definidas en el proceso BPEL.
En la fase de pruebas empezamos a detectar comportamientos extraños. De vez en cuando, nuestra aplicación ADF perdía la sesión web. Tardamos un tiempo en darnos cuenta de que esto sólo pasaba cuando hacíamos logout de la consola de control de BPEL que estaba desplegada en el mismo servidor que nuestra aplicación y lo hacíamos desde el mismo navegador (que gran invento los navegadores con pestañas!!). Como estábamos comprobando a través de la consola el avance del proceso gestionado por las pantallas de nuestra aplicación ADF, esto nos estaba pasando muy a menudo.
El comportamiento entraba en clara contradicción con lo que sabíamos –y sabemos- de los servidores de aplicaciones J2EE:
1) La sesión web es gestionada por el contenedor J2EE a nivel de contexto o aplicación.
2) Nosotros teníamos dos aplicaciones distintas, con sus respectivos contextos en el mismo servidor de aplicaciones.
Repasamos la documentación del servidor WebLogic, y en el apartado de seguridad (Programming WebLogic Security) se explica que las aplicaciones que comparten el nombre de la cookie de sesión, funcionan como un Single Sign On. Es posible modificar el nombre de la cookie mediante el fichero de despliegue weblogic.xml, con los parámetros CookieName y CookiePath.
Con este nuevo conocimiento, creamos el fichero de despliegue con un nombre específico para la cookie de sesión de nuestra aplicación ADF. A partir de ese momento, el problema de invalidación de la sesión desapareció.
Una vez solventado el problema, no pude más que acceder a la especificación de los servlets –según la documentación, el WebLogic 9.2 daba soporte completo a la especificación 2.4 de los Servlets- para establecer cuál debía ser el comportamiento de un contenedor J2EE a la hora de gestionar las sesiones web. Con sorpresa, comprobé que la especificación, en su apartado 7. Sessions, establece que el nombre de la cookie de sesión debe ser JSESSIONID (apartado 7.1.1) y que el objeto de sesión debe limitar su ámbito al de aplicación o contexto de servlets (apartado 7.3).
Por lo tanto, WebLogic no estaba cumpliendo con las especificaciones estándar!!
La importancia de los estándares debe quedar clara a las grandes compañías que proveen de servicios, para garantizar el éxito de los proyectos que se desarrollan en sus plataformas. Oracle –actual propietario de WebLogic- se ha caracterizado por un apoyo claro a la definición y uso de estándares. Confiamos que en el futuro próximo, seguirán realizando la misma valiente apuesta por los estándares, que redunde en beneficio de tota la comunidad.



