Inicio > Forms > Llamar a un Web Services desde Oracle Forms

Llamar a un Web Services desde Oracle Forms

Una de las ventajas que aporta Forms en tres capas ya desde la versión 9i pero en especial en la nueva versión 11g, es la integración con otras tecnologías.

En este post vamos a ver lo sencillo que es integrar forms, una tecnología de más de 20 años, con una de las tecnologías que han irrumpido últimamente en el mundo del desarrollo de aplicaciones y de soluciones TI empresariales, que no es otra que SOA y en concreto Web Services.

Para consumir un Servicio desde Forms hay que seguir los siguientes 4 pasos.

Paso 1. Identificar el WSDL

El proveedor del servicio nos ha facilitar la URL del WSDL (Web service definition lenguaje). Mediante WSDL se define la interfaz pública a los servicios Web. En definitiva describe la forma de comunicación entre consumidor del servicio y proveedor del servicio.

Como ejemplo utilizaremos el siguiente servicio público que nos devuelve la temperatura actual de la ciudad indicada. El WSDL está en.

http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=48

Paso 2. Crear un proxy

Desde JDeveloper y a través de un wizard crearemos una clase Java que tendrá como misión actuar de “puente” entre forms y el Servicio Web. Os muestro los pasos más importantes en el siguiente GIF animado.

Una vez creado nuestro proyecto podemos probarlo desde el mismo JDeveloper.

Paso 3. Empaquetar el proxy

Crearemos un .jar que será lo que utilizaremos desde Oracle Forms.

Paso 4. Importar desde Oracle Forms

Para poder utilizar el proxy JAVA desde forms hemos primero de configurar lo siguiente.

  • En tiempo de diseño. Añadir en variable de sistema CLASSPATH el nuevo .jar
  • En ejecución. Configurar el fichero de environment del servidor de aplicaciones donde está desplegada nuestra aplicación Forms añadiendo nuestro .jar en la variable CLASSPATH

Una vez configurado, desde la utilidad  Java Importer del Forms builder importaremos las clases Java necesarias para utilizar el proxy.

El PL/SQL para consumir el servicio desde forms.

El resultado.

Categorías:Forms Etiquetas: , , ,
  1. Victor
    mayo 25, 2010 a las 00:52 | #1

    Hola siguiendo los pasos me envia el siguiente error al tratar de importar a forms el jar

    Error – Unsupported major.minor version 50.0

    Espero que me puedas ayudar

    • javier.gea
      mayo 31, 2010 a las 08:27 | #2

      El error está relacionado con la versión de JDK utilizada para crear el proxy desde la cual se accede al WS.
      Concretamente se está produciendo una incompatibilidad de versiones entres Oracle forms y la JDK utilizada para crear el proxy.
      En mi “paso a paso” utilicé un JDK 1.6.0.14 para empaquetar el WS y Forms 11g para consumirlo. Debería de empaquetar el WS con una versión de JDK acorde con la versión de Oracle Forms que esté utilizando.
      Un saludo.

  2. Rubén
    septiembre 10, 2010 a las 18:48 | #3

    Buen día, cómo podría lograr implementar un paso mas donde el resultado obtenido del webservice (datos xml) quede grabado en un archivo XML en el disco duro.
    Lo que necesito al final subir este archivo XML a una tabla que tiene una columna de tipo XMLType en la base de datos Oracle.
    No sé cómo conseguir esto desde forms o si talvés es mejor usar PL/SQL.
    De antemano gracias por sus sugerencias.
    Saludos cordiales.

  3. janeth
    febrero 22, 2011 a las 23:18 | #5

    Buenas

    EN El PL/SQL para consumir el servicio desde forms. me genera el siguiente error:

    Error 302 component ‘NEW’ must be declared

    Por favor me pueden indicar que debo hacer??

    • javier.gea
      marzo 2, 2011 a las 15:47 | #6

      Lo siento, sin más datos nos es imposible ofrecer o pensar una solución a lo que nos está ocurriendo.
      Sigue el ejemplo de nuestro post y quizás te ayude a encontrar que está pasando

  4. hernando
    marzo 4, 2011 a las 19:55 | #7

    Buenas tardes!
    me gustaria en que parte del ORACLE-HOME tengo que almacenar el .jar que deseo utilizar?

    muchas gracias

    • javier.gea
      marzo 8, 2011 a las 09:40 | #8

      Hola.
      Si quieres utilizar desde lado cliente un fichero .jar copialo en $ORACLE_HOME/forms/java y configúralo en el “formsweb.cfg”, concretamente en la variable “archive”.
      Si lo necesitas para desarrollar desde el forms builder este fichero .jar ha de estar configurado en el CLASSPATH de la máquina de desarrollo.
      Un saludo.

  5. Eli
    enero 5, 2012 a las 17:43 | #9

    Buenos días:
    Quisiera un ejemplo de la llamada a un web services que me retorne una lista de objetos. El stub generado en Jdeveloper y la forma de llamarlo en el Oracle Forms. Muchas gracias

    • Javier Gea
      enero 9, 2012 a las 09:44 | #10

      Cuando un web services retorna una lista de datos es necesario hacer desde Oracle Forms un import de la clase Java en cuestión para poder tratarla. La creación del proxy desde Jdeveloper es idéntica a la del ejemplo del post.
      No dude en ponerse en contacto con avanttic si necesita profundizar en el desarrollo de una solución a su necesidad.

  6. manuel
    enero 6, 2012 a las 21:18 | #11

    buenas tengo problema para crear el proxy, estoy tratando de usar el jdeveloper 10g, pero no me da la opcion para crear este tipo de web services.

    que estoy haciendo mal o debo usar otra version del jdeveloper.

  7. Rubén
    enero 15, 2012 a las 00:24 | #13

    Hola, buenas noches.
    ¿Es posible consumir un webservice que tiene compresión desde Oracle Forms?
    He seguido paso a paso sus instrucciones y es exitoso con webservices públicos pero cuando lo intento con el webservice que es de nuestro interés no es posible.
    Según la documentación de este webservice, hay que agregar el esquema de compresión en el lado del consumidor y para ello nos proveen de un archivo DLL (WSSoapCompression.dll).
    No soy experto en el tema y no sé qué pasos adicionales debo seguir.
    Por cierto, tengo Oracle Forms 10g con el conjunto de parches 10.1.2.3.0
    Muchas gracias por sus luces.

    • Javier Gea
      enero 24, 2012 a las 13:31 | #14

      Hola.

      Para utilizar una .DLL desde forms hay varias alternativas. Le indico alguna de ellas:
      - Utilizando WEBUTIL de Oracle. WEBUTIL se ejecuta en el lado cliente por lo que la .dll también deberá de estar en el cliente.
      - JAVA es capaz de hacerlo, por lo que si JAVA es capaz de hacerlo también forms:
      a. A través de un PJC en el lado del cliente y si la .dll está en el cliente
      b. A través de un “import java class” si la .dll se encuentra en el servidor de aplicaciones y éste es Windows
      - ORA_FFI. Sólo si la .dll se encuentra en el servidor de aplicaciones y este es Windows

      Un saludo.

  8. manuel
    febrero 2, 2012 a las 21:39 | #15

    no veo la clase en el developer suite, como hago para poder verla e importarla

    gracias por su ayuda

    • Javier Gea
      febrero 6, 2012 a las 09:50 | #16

      Hola.
      Si usted tiene instalada un versión 10gR2 el fichero frmjdapi.jar se encuentra en %ORACLEHOME%\forms\java
      Si usted tiene instalada una versión 11g ó una 11gR2 el fichero frmjdapi.jar se encuentra en %ORACLEHOME%\fr_1\jlib
      Un saludo

  1. enero 3, 2011 a las 13:07 | #1
  2. enero 2, 2012 a las 10:38 | #2

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 52 seguidores