Showing posts with label WSO2. Show all posts
Showing posts with label WSO2. Show all posts

08 August 2018

Utilizando clases java desde WSO2 EI usando Groovy

Este post explica como utilizar clases java usando Groovy (Script mediator) desde WSO2 EI sin necesidad de crear un "Custom mediator".


A modo de ejemplo vamos a crear una clase java y generar el fichero JAR.





Una vez generado el fichero JAR solo tenemos que depositarlo en la carpeta "lib".





El siguiente ejemplo muestra como acceder a la clase java creada previamente utilizando Groovy.



Ahora solo queda hacer la llamada REST.

$ curl http://localhost:8280/demo/Emmerson
 output>Hello Emmerson /output>

- FIN -

19 May 2017

Recuperando el nombre del proxy que se esta ejecutando


A veces es util escribir en el log el nombre del proxy que esta generando la información, para esos casos en WSO2 disponemos de la propiedad de contexto "proxy.name".
<log level="custom">
<property expression="get-property('MessageID')" name="Id"/>
<property expression="get-property('proxy.name')" name="Proxy"/>
</log>
- Enjoy it -

19 June 2016

Code quality in WSO2 projects with SonarQube

Una de las principales preocupaciones en todo proyecto de desarrollo es la deuda técnica (a.k.a technical debt), y los proyectos con WSO2 no son la excepción, en muchos productos de su "Suite" el desarrollo se basa en ficheros xml, pero...

¿Como verificar la cálidad de estos desarrollos?


La respuesta es sencilla, utilizando SonarQube y una forma rápida de empezar es usando su "XML Plugin" para crear "custom XPath Rule".


¿Qué empezamos a validar?

La respuesta sigue siendo sencilla, entre otras cosas las "Best Practices for Mediation" que WSO2 tiene publicadas. Como se puede ver en la siguiente imagen, para este post he elegido la implementación de una de ellas.


Finalmente, como resultado del análisis de nuestros proyectos podemos obtener reportes completos de las malas prácticas y la localización exacta de cada una de ellas.

Enjoy!!!
- FIN -

08 May 2016

WSO2 ESB Scatter-Gather EIP

Este patrón nos permite enviar mensajes en paralelo a múltiples destinatarios y recopilar sus respuestas para devolverla como una sola.


Es decir con una sola petición de entrada podremos enviar varias peticiones (a diferentes endpoints y con differente formato de petición), recopilar todas las respuestas, procesarlas(aplicar transformaciones) y devolver un solo mensaje.

En el siguiente ejemplo crearé un servicio proxy que invocara en paralelo las operaciones "echoInt" y "echoString" del servicio "echo" que viene con el ESB, recogerá las respuestas y devolverá un un mensaje con el resultado de las mismas.



El servicio proxy:
<proxy name="scatter-gather-proxy" ...>
  <target 
    inSequence="scatter-gather-sequence-in" 
    outSequence="scatter-gather-sequence-out"/>
</proxy>


La secuencia de entrada (inSequence) usando "Clone mediator":
<sequence name="scatter-gather-sequence-in" ...>
  <log level="custom">
    <property name="MSG" value="SEQUENCIA ENTRADA"/>
  </log>
  <clone id="echoClone">
    <target sequence="scatter-gather-echoInt-sequence-in"/>
    <target sequence="scatter-gather-echoString-sequence-in"/>
  </clone>
</sequence>


La secuencia de entrada para invocar echoInt:
<sequence name="scatter-gather-echoInt-sequence-in" ...>
  <log level="custom">
    <property name="secuencia" 
                 value="scatter-gather-echoInt-sequence-in entrada"/>
  </log>
  <property description="SOAPAction" name="SOAPAction" scope="transport"
    type="STRING" value="urn:echoInt"/>
  <payloadFactory description="echoInt" media-type="xml">
    <format>
      <echo:echoInt xmlns:echo="http://echo.services.core.carbon.wso2.org">
        <in xmlns="">$1</in>
      </echo:echoInt>
    </format>
    <args>
      <arg evaluator="xml" expression="//echoData/number"/>
    </args>
  </payloadFactory>
  <log level="custom">
    <property name="secuencia" 
                 value="scatter-gather-echoInt-sequence-in salida"/>
  </log>
  <send>
    <endpoint key="echo-endpoint"/>
  </send>
</sequence>


La secuencia de entrada para invocar echoString:
<sequence name="scatter-gather-echoString-sequence-in" ...>
  <log level="custom">
    <property name="secuencia" 
                 value="scatter-gather-echoString-sequence-in entrada"/>
  </log>
  <property description="SOAPAction" name="SOAPAction" scope="transport"
    type="STRING" value="urn:echoString"/>
  <payloadFactory description="echoString" media-type="xml">
    <format>
      <echo:echoString xmlns:echo="http://echo.services.core.carbon.wso2.org">
        <in xmlns="">$1</in>
      </echo:echoString>
    </format>
    <args>
      <arg evaluator="xml" expression="//echoData/text"/>
    </args>
  </payloadFactory>
  <log level="custom">
    <property name="secuencia" 
                 value="scatter-gather-echoString-sequence-in salida"/>
  </log>
  <send>
    <endpoint key="echo-endpoint"/>
  </send>
</sequence>


La secuencia de entrada (outSequence) usando "Aggregate mediator":
<sequence name="scatter-gather-sequence-out" ...>
  <log level="custom">
    <property name="msg" value="SEQUENCIA SALIDA"/>
  </log>
  <aggregate id="echoClone">
    <completeCondition>
      <messageCount max="2" min="2"/>
    </completeCondition>
    <onComplete expression="//soapenv:Body/*[1]" 
                 xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
      <log level="full">
        <property name="ON-COMPLETE" value="EJECUTANDO AGREGATOR"/>
      </log>
      <payloadFactory description="make response" media-type="xml">
        <format>
          <aggregateResult xmlns="">
            <returnInt>$1</returnInt>
            <returnString>$2</returnString>
          </aggregateResult>
        </format>
        <args>
          <arg evaluator="xml" 
                  expression="//ns:echoIntResponse/return" 
                  xmlns:ns="http://echo.services.core.carbon.wso2.org"/>
          <arg evaluator="xml" 
                  expression="//ns:echoStringResponse/return" 
                  xmlns:ns="http://echo.services.core.carbon.wso2.org"/>
        </args>
      </payloadFactory>
      <send/>
    </onComplete>
  </aggregate>
</sequence>


Enlaces relacionados:
- FIN -

20 April 2016

WSO2 ESB Changing Hostname and WSDL prefix

Probablemente durante el desarrollo de servicios con WSO2 ESB, nos hemos topado con un par de cosillas que siempre tenemos que tener en cuenta:
  • Cuando DevStudio abre el navegador con la consola, siempre aparece la IP de la máquina con la que estamos trabajando (dicha IP varia según la red a la que estemos conectados)
  • Usualmente en los endpoints publicados de los proxies aparece el nombre de la máquina
Ambos casos se pueden ver en la siguiente imagen.

En el primero de los casos, resulta un poco incordiante estar aceptando siempre el certificado digital generado para esa IP. En el segundo de los casos, debemos tener cuidado de cuando utilizamos el endpoint (por ejemplo para hacer testing) cambiar el nombre de la máquina por "localhost" u otro nombre que figure en el fichero hosts.

Para cambiar ambos valores debemos cambiar los ficheros ..\repository\conf\carbon.xml y ..\repository\conf\axis2\axis2.xml respectivamente.

..\repository\conf\carbon.xml
..\repository\conf\axis2\axis2.xml

Después de reiniciar el servidor podemos ver reflejados los cambios.
- FIN -

07 January 2016

WSO2 Hello World Microservice Sample

Cuando se quiere empezar a probar el desarrollo de microservicios con WSO2, la documentación del fabricante es un buen punto de partida.

En este caso me voy a centrar en su ejemplo básico, el cual esta muy bien explicado :-)


El problema de este ejemplo esta en el relativePath, ya que si estamos creando el ejemplo desde cero, no tenemos el fichero ../../mss-lite-parent/pom.xml a nuestro alcance, para solventar este problema, podemos descargar el fichero desde el proyecto github del producto.


Tip: Aseguraros que estais utilizando la JDK 1.8 tanto a nivel de sistema operativo (java -version), como dentro de la configuración de maven (mvn -version).

Enlaces relacionados: - Enjoy it -

06 November 2015

Buenas prácticas de Mediación con WSO2 ESB

Una de las principales características del bus de WSO2 es la mediación de mensajes mediante el uso de secuencias, he aquí un pequeño listado de recomendaciones del fabricante a tener en cuenta al momento definirlas:

  • El último mediador en una secuencia.
  • Definición de secuencias IN y OUT.
  • El uso correcto de: "Loopback mediator".
  • Reutilización de secuencias.
  • El uso correcto de: "Sequence mediator"

Un mediador("mediator") es una pequeña unidad funcional que realiza una tarea específica, WSO2 ESB actualmente viene un conjunto de mediators bastante potente que solucionan muchos problemas típicos de integración y de además permite ampliarlos creando los que nos hagan falta.

Una secuencia("sequence") es una agrupación lógica de mediators que se organizan de forma parecida a los patrones "Pipes and Filters" y que puede ser reutilizada, en el ESB existen dos tipos de secuencias, la "Main sequence" y las "Named sequence", aunque también se pueden definir "in-line sequences" dentro de "Proxy Service", pero esto último no permite a reutización de las mismas.



Un servicio proxy("Proxy Service") es un "endpoint" que puede ser consumido desde el exterior por diversos clientes, y que ofrece un nivel de abstracción sobre uno o varios servicios de negocio en el backend, algunas veces tiene correlación directa con un servicio de negocio y otras se hacen operaciones más avanzadas, un servicio proxy esta compuesto por las siguientes secuencias: In-Sequence, Out-Sequence and Fault-Sequence.

"WSO2 Developer Studio" viene con un wizard que permite crear proxies fácilmente mediante un asistente.


Enlaces relacionados: - FIN -

17 October 2015

WSO2 Developer Studio - Desarrollo y buenas prácticas [Parte 3]

Buenas prácticas de despliegue


DevStudio permite empaquetar los artefactos en un fichero CAR (Composite Application aRchive) y desplegarlos en los distintos servidores WSO2 (AS, ESB, DSS, ...), sin importar si dichos servidores esten on-premise o en Cloud.


Las tres principales maneras de desplegar los artefactos son:

Todas las opciones antes mencionadas necesitan de un proyecto "composite application" para generar el fichero "*.car".

Existen ciertos puntos importantes:
  • Desplegar con el plugin Maven o con el fichero CAR puede ser la mejor forma para desplegar en entornos productivos.
  • Desplegar con el plugin de Maven nos da la habilidad de desplegar el fichero CAR en múltiples servidores. Lo único que hay que hacer es configurar las direcciones de los servidores con sus credenciales en el plugin Maven.
  • La C-App puede ser desplegada en cualquier servidor Carbon, pero sólo los artefactos relevantes pueden ser desplegados en servidores específicos dependiendo de los roles de servidor (por ejemplo un artefacto DSS no puede ser desplegado en un servidor IS).


Despliegue en múltiples entornos


Los siguientes son algunos aspectos importantes.

Cuando se trata con múltiples entornos (DEV, QA, PROD) se necesita tener diferentes proyectos C-App para agrupar los artefactos dinámicos para los diferentes entornos (endpoints, WSDLs y polices). También se necesita otro proyecto para almacenar los artefactos comunes(independientes del entorno) y poder desplegarlo en cualquier entorno sin sufrir modificaciones.

Debemos intentar colocar artefactos como recursos del registro para diferentes entornos, para que sea fácil de gestionar en los entornos. Consulte este artículo para obtener más información.

Por ejemplo, si consideramos los entornos DEV y QA, el proyecto 'Integration_Parent_Project' mencionado en el post anterior, debería tener la siguiente estructura:
Integration_Parent_Project
   |___ AppServerProject
   |___ ESBConfigProject
   |___ RegistryProject 
    |___ DEV
    |___ QA
   |___ CappProject_Common
   |___ CappProject_DEV
   |___ CappProject_QA

En esta estructura "RegistryProject" tiene dos carpetas para los recursos necesarios para DEV y QA. Digamos que para el mismo servicio que tenemos dos endpoints, uno para desarrollo(DEV) y otro para calidad (QA); estos endpoints se pueden crear en sus respectivas carpetas. Esta técnica nos permite crear recursos(endpoints) con el mismo nombre y diferentes nombres de artefactos, quedando de la siguiente manera:
|___ RegistryProject  
    |___DEV
        |__ backendEP.xml   //dev backend, http://dev.wso2as.com/9763
    |___QA
        |__ backendEP.xml   //qa backend, http://qa.wso2as.com/9763


La finalidad de "CappProject_Common" es mantener los recursos independientes del entorno, de tal manera que el fichero CAR generado de este pueda ser desplegado en todos los entornos.

"CappProject_DEV" será usado para empaquetar los recursos de desarrollo.

"CappProject_QA" será usado para empaquetar los recursos del entorno de pruebas.

Todo esto facilita el movimiento de DEV a QA y lo único que se necesita es desplegar el fichro .car adecuado.

Despliegues remotos


Como se dijo al principio, cuando tenemos múltiples proyectos hay que agruparlos en un "parent project" (como buena práctica). Cuando se construye este, obtenemos el fichero "*.car" dentro del directorio target del proyecto C-App, el cual, simplemente se puede desplegar usando la consola de administración.

Sin embargo, cuando se trata de automatizació y pruebas, podemos usar el "Maven CAR deploy plugin" para hacer este proceso más fácil.

Despliegues remotos con el plugin Maven CAR


El plugin de maven proporcinado por WSO2 necesita que se configure con los datos del servidor donde desplegar, sus credenciales de conexión y el truststore con los certificados públicos de dicho servidor (accesibles desde el plugin), el siguiente es un ejemplo de configuración:

<plugin>
   <groupid>org.wso2.maven</groupid>
   <artifactid>maven-car-deploy-plugin</artifactid>
   <version>1.0.9</version>
   <extensions>true</extensions>
   <configuration>
    <carbonservers>
     <carbonserver>
      <truststorepath>/.../repository/resources/security/wso2carbon.jks</truststorepath>
      <truststorepassword>wso2carbon</truststorepassword>
      <truststoretype>JKS</truststoretype>
      <serverurl>https://localhost:9443</serverurl>
      <username>admin</username>
      <password>admin</password>
      <operation>deploy</operation>
     </carbonserver>
    </carbonservers>
   </configuration>
</plugin>


De este ejemplo, notese que la etiqueta "carbonserver", puede repertirse varias veces dado que esta contenida dentro de otra llamada "carbonservers".

Una vez que el plugin ha sido configurado, se puede efectuar el despliegue remoto con una simple instrucción maven, como por ejemplo:

mvn clean deploy -Dmaven.deploy.skip=true -Dmaven.car.deploy.skip=false

Un aspecto evidente de seguridad es que el plugin usa passwords en texto plano. Actualmente no hay ninguna opción para encriptar los passwords, sin embargo el plugin se puede configurar para que obtenga los passwords de variables de entorno pasadas por linea de comandos, modificandose la configuración de la siguiente manera:

<carbonserver>
      ...
      <serverurl>https://localhost:9443</serverurl>
      <username>${username}</username>
      <password>${password}</password>
      ...
</carbonserver>


Así la ejecución desde linea de comandos quedaría de la siguiente manera:

mvn clean deploy -Dusername=admin -Dpassword=admin -Dmaven.deploy.skip=true -Dmaven.car.deploy.skip=false


Este artículo es una interpretación de un artículo publicado por Susinda Perera, uno de los ingenieros de WSO2, el cual trata sobre el IDE oficial y las buenas prácticas de desarrollo de proyectos SOA.

Enlaces relacionados:
- FIN -

16 October 2015

WSO2 Developer Studio - Desarrollo y buenas prácticas [Parte 2]

Buenas prácticas de desarrollo


Creación genérica de proyectos


DevStudio permite crear proyectos desde cero o puede importar algunos existentes o artefactos en proyectos. Aquí se puede encontrar la guía de como crear diferentes tipos de proyectos.

Los siguientes, son algunos de los puntos a tener en cuenta cuando se crea un proyecto:
  • El IDE empieza con el workspace por defecto. Se recomienda cambiar la localización a una que sea fácilmente accesible.
  • Cuando se crea un proyecto, este tiene una localización por defecto, al igual que con el workspace se puede elegir una localización fácilmente accesible.
  • Se recomienda crear un proyecto "Maven Multi Module (MMM)" para agrupar los proyectos de un caso de uso.
  • Tan pronto como la estructura sea creada se recomienda ponerla bajo el control de un SCM (SVN, Git,...).
  • Todos los proyectos creados son MAVEN, por tanto se recomienda seguir la convensión de nombres de MAVEN.
  • Hay que asegurarnos que las propiedades groupid, artifactid y version esten correctamente definidos.


Creación de proyectos ESB


Un proyecto de este tipo puede contener artefactos tales como "proxy services", "APIs", "endpoints", "sequence tasks", "message stores", "message processors", "local-entries" y "templates".

Los siguientes, son algunos de los puntos a tener en cuenta cuando se crea un proyecto ESB:
  • Por cada artefacto hay que usar una convensión de nombres, por tanto es necesario establecer alguna antes de empezar.
  • Si un proyecto ESB contiene muchos artefactos relacionados a diferentes casos de uso, es recomendable usar prefijos o sufijos relacionados con el caso de uso. Pero es recomendable tener un proyecto por caso de uso.
  • Cuando se dispone de un conjunto de código, una buena práctica es implementarlo en una "sequence" o "template", así podemos reutilizarlos.
  • No usar nunca "endpoint inline", en su lugar hay que registrarlos y usar su clave de registro, así, ganaremos más flexibilidad cuando haya que cambiar o eliminar el endpoint.
  • [este es mi granito de arena] En caso de tener que utilizar passwords es recomendable utilizar "Secure Vault" para almacenarlos encriptados y usar sus alias.


Creación de proyectos múltiples


La mayoría de tiempo se necesitan crear múltiples proyectos. Por ejemplo, se necesita crear los servicios de backend (AS), ESB, front-end (Web app) y otros. Para estos casos se recomienda crearlos como proyectos MMM (Maven Multi Module) y un ejemplo de esta estructura sería la siguiente:
Integration_Parent_Project
   |___ AppServerProject
   |___ ESBConfigProject
   |___ RegistryProject
   |___ CappProject
La ventaja de los proyectos MMM es que se pueden construir todos los hijos al mismo tiempo con un solo comando. También, si fuera necesario realizar tareas de automatizacion como la ejecución de otros plugins de Maven antes y después de un "build", desde este punto se vuelve una tarea sencilla.

Control de código fuente


Siempre se recomienda el uso de un SCM para el seguimiento de los proyectos y también como mecanismo a prueba de fallos.

Los siguientes, son algunos de los puntos a tener en cuenta cuando se usa un SCM:
  • Añadir a la lista de ignorados las carpetas ".settings" y "target"
  • No ignorar los ficheros "artifacts.xml" y ".project" porque contienen información para visualizar el proyecto.
  • Para los proyectos ESB, se puede ignorar el directorio "graphical-synapse-config", porque se auto genera.



Este artículo es una interpretación de un artículo publicado por Susinda Perera, uno de los ingenieros de WSO2, el cual trata sobre el IDE oficial y las buenas prácticas de desarrollo de proyectos SOA.
Enlaces relacionados: - FIN -

15 October 2015

WSO2 Developer Studio - Desarrollo y buenas prácticas [Parte 1]

Introducción


Este artículo trata sobre las mejores prácticas para los desarrolladores de proyectos SOA usando WS02 Developer Studio (DevStudio) 3.7.1, basados en las activades comunes que suceden durante todo el ciclo de desarrollo.

DevStudio es el IDE recomendado para desarrollar aplicaciones sobre la plataforma de WS02 (ESB, BPS, DSS ...), también permite desarrollar aplicaciones web JAX-RS, JAX-WS, servicios Axis2 y aplicaciones web. Este IDE es un plugin de eclipse que se puede instalar o bien se puede descargar una versión binaria pre-instalada de la web de WS02.

DevStudio simplifica el proceso de creación de artefactos de forma gráfica y la administración de sus dependencias, además no soló soporta el proceso de desarrollo-testing-debugging, sino también el despliegue de artefactos en los servidores (on-premise o en Cloud)

DevStudio soporta la creación de proyectos y artefactos para los siguientes servidores:
  • WSO2 Enterprise Service Bus
  • WSO2 Data Services Server
  • WSO2 Application Server
  • WSO2 Business Process Server
  • WSO2 Business Rules Server
  • WSO2 Governance Registry

Existe soporte para otros tipos de proyectos, el listado completo se puede ver en "IDE Dashboard" y en su documentación.




Este artículo es una interpretación de un artículo publicado por Susinda Perera, uno de los ingenieros de WSO2, el cual trata sobre el IDE oficial y las buenas prácticas de desarrollo de proyectos SOA.

Enlaces relacionados:
- FIN -

31 August 2015

WSO2 API Manager - Accessing SOAP Service

En este documento podemos encontrar un ejemplo de como : Hacer accesible un servicio SOAP desde WSO2 API Manager y establecer un consumo de 150 transacciones por minuto como máximo. Crear y utilizar un nuevo “Throttling tier” (cuota de uso). Creación, publicación, suscripción y test del API. Anuncio de la nueva API en las redes sociales. Revisión de las estadísticas del API Manager.


- FIN -

15 August 2015

WSO2 DSS & JENKINS

En esta presentación se puede ver como utilizar Jenkins para construir y desplegar servicios(DataServices) construidos con WSO2 Developer Studio en WSO2 Data Services Server.



Enlaces relacionados: - FIN -

12 August 2015

WSO2 DSS - Ejecutando procedimientos almacenados

Este documento es la continuación de "WSO2 DSS - Creación de un DataService" y en el se muestra como invocar un procedimiento almacenado Oracle, recoger el cursor devuelto como parámetro de salida y extraer y devolver los registros en la respuesta del servicio.



Enlaces relacionados: - FIN -

07 August 2015

WSO2 DSS - Creación de un DataService

En este documento se explica como crear un DataService para WSO2 DSS, usando WSO2 Developer Studio. Los datos son extraidos del esquema HR de una base de datos Oracle XE.


- FIN -

17 September 2014

WSO2 ESB - Secure Vault Tool (primeros pasos)

Una buena práctica es "no utilizar" los passwords sin encriptar dentro de nuestras secuencias/templates dentro de WSO2, para ello WSO2 nos facilita una herramienta llamada "Secure Vault Tool" la cual es un almacén de claves encriptadas (clave-valor), las cuales se pueden utilizar mediante una referencia dentro de nuestras secuencias. En la instalación por defecto, al intentar crear una clave, se recibe siempre el siguiente fallo:
"AxisFault: Failed to load security key store information ,Configure secret-conf.properties properly"
Este error quiere decir que no hemos configurado el almacén de claves, en la que según la documentación oficial tenemos que ejecutar previamente la herramienta "ciphertool.bat" con el parámetro -Dconfigure (en mi caso utilizo la versión de windows).
Como se puede ver en la imagen, la ejecución en windows da el error "La línea escrita es demasiado larga" ("input line too long") y esto se debe a que el fichero bat genera una cadena de classpath demasiado larga para este entorno, así que hay que modificar el fichero "ciphertool.bat" para utilizar comodines en la generación del classpath.
Después del cambio volvemos a ejecutar el comando y esta vez nos pedirá la clave para la KeyStore, por defecto es wso2carbon.
Bien ahora queda reiniciar WSO2 ESB, durante el reinicio volvemos a introducir la clave.
A partir de este momento ya podemos crear nuestras claves.
- FIN -

12 August 2014

WS02 ESB - Orquestación de servicios

En este documento hay un ejemplo de como orquestar llamadas a múltiples WS desde una única interfaz Proxy.



- FIN -

10 August 2014

WSO2 REST API

En estas diapositivas publicadas en slideshare se puede ver como crear un servicio REST en WSO2 ESB.

Este servicio es un ejemplo de como utilizar la WSO2 ESB REST API, sequences y mediators. Recibe una petición HTTP GET para consultar la información de un país, se define un parámetro para indicar el país a consultar, y con este dato se construye una petición SOAP a un WS; y finalmente se transforma la respuesta SOAP en una respuesta JSON.

Como requisito para poder seguir este tutorial hay que haber implementado los servicios del post WSO2 Creando Data Services de un esquema Oracle.



Enlaces relacionados: JSON Short manual

- FIN -

29 July 2014

WSO2 ESB - Creando un Transformer Proxy

En estas diapositivas publicadas en slideshare se puede ver como crear un servicio proxy en WSO2 ESB, este servicio proxy utiliza hojas de transformación XSLT para convertir los mensajes de entrada al formato del WS destino y como convertir su respuesta al formato de salida definido.

Como requisito para poder seguir este tutorial hay que haber implementado los servicios del post WSO2 Creando Data Services de un esquema Oracle.



- FIN -

23 July 2014

WSO2 Creando Data Services de un esquema Oracle

En este post podremos ver como publicar datos maestros de tablas Oracle como "Data Services" utlizando WSO2.

Antes de crear el servicio de datos primero se creará un Data Source en el servidor.


Después de introducir los datos de conexión a la base de datos (propiedades JDBC) se debe probar la conexión.

En la imagen anterior se puede ver como hay un error al probar el DS, observando la consola del servidor se puede ver como hay un ClassNotFoundException, esto se debe a que debemos poner en el servidor el driver de conexión a la base de datos Oracle como se puede ver en la siguiente imagen (hay que reiniciar después de hacer esta operación).

Bien, ahora volvemos a probar la conexión y deberiamos tener un ok, como se puede observar en la siguiente imagen.


Una vez que el Data Source se ha creado correctamente, se procede a generar el Data Service.


Después de elegir el Data Source a utilizar, se elige el esquema del cual se quieren publicar los datos.

Luego de elegir el esquema hay que elegir que tablas de los datos maestros queremos publicar para poderlos utilizar en nuestros "building blocks".

Elegida la información a publicar, hay que elegir como hacerlo, en este caso he marcado que cree un servicio por tabla.
Una vez finalizado el asistente, se puede observar que aparece un servicio por cada tabla, según se  elegio, y por cada servicio tenemos una serie de opciones, en este caso podemos acceder al WSDL de cada uno.

Ahora solo queda probar los servicios, para ello vamos a copiar la dirección del WSDL del servicio "COUNTRIES_DataService" y lo registramos en SOAPUI y ya podemos probarlo.


En caso de no tener SOAPUI el propio WSO2 nos da la posibilidad de probarlo desde una consola propia.

Como se puede ver en la siguiente imagen, uno de los métodos que se genera en servicio es el de poder consultar por PK los datos de una tabla.

- FIN -