Uso librería de integración java: Servicio web de Roles

RECU-0506 (Recurso Ejemplo)

Descripción

El presente documento muestra un ejemplo para la utilización de los web services de roles utilizando las librerías de integración

Requisitos

Ejemplo

Creación del proyecto utilizando maven

Ejecutamos el siguiente comando maven que creará el proyecto correspondiente:

$> mvn archetype:create -DgroupId=com.test -DartifactId=mytest

Referencia a las librerías (pom.xml)

Dentro de la carpeta mytest, creada en el paso anterior, encontramos el fichero pom.xml. Modificamos dicho fichero para incluir la librería de integración que nos da acceso a los web services de roles. Aquí vemos el contenido final de dicho fichero.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
 
<groupId>com.test</groupId>
<artifactId>mytest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
 
<name>mytest</name>
<url>http://maven.apache.org</url>
 
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
 
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>es.juntadeandalucia.guia</groupId>
<artifactId>mag4j</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.8</version>
<scope>compile</scope>
</dependency>
</dependencies>
 
<build>
<finalName>${artifactId}-${version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
</project>

Fichero de propiedades

Creamos el fichero $/mytest/src/test/resources/mag4j-ws-roles.properties

En dicho fichero se definen: la cuenta de servicio y la contraseña que se utilizará para invocar a los servicios web de roles y la ruta al wsdl donde se encuentra localizado el mismo. Se muestra un ejemplo del mismo en el que habrá que establecer los valores oportunos

#cuenta de conexión a los web services
guia_ws_roles_userdn=cn=cuenta_servicio_ejemplo,o=servicios,o=identidades,o=comun,dc=juntadeandalucia,dc=es
guia_ws_roles_pwd=passwordejemplo
guia_ws_roles_wsdl_location=https://host:port/servicio/wsroles/roles?wsdl
truststore_location=$HOME/mytest/keystore
truststore_password=myStorePassword
Las propiedades truststore_* deberán ser definidas en caso de que el certificado de servidor o su CA no hayan sido instaladas en keystore definido por defecto en la JVM.

Clase java de ejemplo

Por último modificamos la clase test de ejemplo generada por maven en $/mytest/src/test/java/com/test/AppTest.java

package com.test;

import static org.junit.Assert.fail;
import java.io.IOException;
import java.util.Properties;
import org.junit.Before;
import org.junit.Test;
import es.juntadeandalucia.guia.mag4j.spec.MaG4JException;
import es.juntadeandalucia.guia.mag4j.spec.ws.RolesClientFactory;
import es.juntadeandalucia.guia.mag4j.util.PropertiesLoader;
import es.juntadeandalucia.guia.mag4j.ws.roles.RolesClientFactoryImpl;
import es.juntadeandalucia.guia.oim.roles.cliente.GuiaFaultMsg;
import es.juntadeandalucia.guia.oim.roles.cliente.Roles; 

/**
* Unit test for simple App.
*/
public class AppTest {

 private RolesClientFactory rolesCFactory = null;

 @Before
 public void init() throws Exception {
 this.rolesCFactory = createRolesClientFactory("/mag4j-ws-roles.properties");
 }

 @Test
 public void testCreatedClientWorks() {
 try {
 System.out.println("Creación del cliente de web services a partir del método factoría de la API");
 Roles roles = this.rolesCFactory.createClient();
 System.out.println("Llamada al método isAlive del servicio web");
 roles.isAlive(null);
 System.out.println("Ok");
 } catch (MaG4JException e) {
 System.out.println("Error");
 e.printStackTrace();
 fail();
 } catch (GuiaFaultMsg e) {
 System.out.println("Error");
 if (e.getFaultInfo().getCodigo().equals("0")) {
 e.printStackTrace();
 fail("ws roles: Codigo de error " + e.getFaultInfo().getCodigo());
 }
 }
 }  

public static Properties loadProperties(String resourcepath) throws MaG4JException {
 try {
 return PropertiesLoader.loadFromClassPath(resourcepath);
 } catch (IOException e) {
 throw new MaG4JException("No se pudo leer el recurso " + resourcepath);
 }
 }

private static RolesClientFactory createRolesClientFactory(String resourcePath) throws MaG4JException {
 RolesClientFactory rcf = new RolesClientFactoryImpl();
 rcf.init(loadProperties(resourcePath));
 return rcf;
 }

 private static RolesClientFactory createRawRolesClientFactory() {
 return new RolesClientFactoryImpl();
 }

}

La clase simplemente lee el fichero de propiedades, crea un cliente para el acceso a los web services de roles e invoca al método isAlive() publicado en el mismo.

Ejecución del ejemplo

Para probar el ejemplo ejecutamos el siguiente comando maven que debería dar un resultado correcto:

$> mvn test

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0