4/9 curso jee5, soa, web services, esb y xml

68
INTRODUCCIÓN A LOS WEB SERVICES » Prácticas

Upload: juan-carlos-rubio-pineda

Post on 14-Jun-2015

2.235 views

Category:

Documents


1 download

DESCRIPTION

Curso JEE5, Soa, Web Services, ESB y XML

TRANSCRIPT

Page 1: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

INTRODUCCIÓN A LOS WEBSERVICES

» Prácticas

Page 2: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Contenido− ¿Qué es Axis?. Axis Services Vs JEE5 Services

• Creación de un web service calculadora con Axis (modo JWS)

• Creación de un web service calculadora mediante herramientas JEE5

− Más sobre axis: Implementación de un servicio mediante un WSDD

Page 3: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• AXIS− Apache Axis es una implementación de SOAP− Con axis, es muy sencillo crear y usar un Web Service. Hasta que apareció

JEE5, era una opción bastante buena para muchas organizaciones para construir sus Web Services.

− La versión que usaremos es la más reciente, la 1.4• NO ES CIERTO: la más reciente, es AXIS2; pero el desarrollo no es aún lo

suficientemente maduro, y además se trata de una implementación de WS distinta.

• AXIS Web Services VS JEE5 Web Services− Axis es un “añadido” innecesario para construir Web Services si nuestra

plataforma es JEE5− Sin embargo es muy útil conocerlo, ya que podemos implantarlo fácilmente

en nuestros entornos J2EE (por ejemplo, con Tomcat).− Los Web Services en JEE5 se construyen con JAX-WS. En AXIS se

construyen con JAX-RPC.

**

Page 4: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno (I)− Instalación del JRE

− Instalación SDK+App. Server

− Instalación de netbeans

− Crear directorio c:\temp y c:\cursosoa

− Cambiar variable entorno TMP a %SystemRoot%\TEMP o al valor c:\temp

− Cambiar el valor de la variable de usuario TMP a c:\temp

• Sirve para evitar un bug de Application Server y glassfish

− Copiar el script setenv.bat a c:\windows

− Añadir al path estos directorios:

• App-server-install-dir\bin

• App-server-install-dir\lib\ant\bin

Page 5: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno (II)− Comprobar si tenemos instalado notepad2. Notepad2 es un

editor sencillo con reconocimiento de sintaxis.

− Comprobar si tenemos instalado console. Console es una ventana de comandos con un buffer mayor que el cmd de windows y con unas fuentes más atractivas.

• Una de las mejores características que tiene es la de poder marcar texto mediante el botón de shift+click_izquierdo. El menú copy/paste es ahora contextual.

• Tambien ocurre que si tenemos texto en el portapapeles, podemos pegarlo con click_derecho sobre la ventana.

• Eliminaremos la transparencia comentando la línea transparency del archivo c:\windows\console.xml (<!– transparency…. -->).

Page 6: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno (III)− Descargarmos de la máquina jcrubio.cica.es el archivo:

• OPCIONAL-axis-bin-1_4.zip

− Lo copiamos a c:\temp y descomprimimos.

− Entramos a la carpeta axis-1_4\webapps\axis\WEB-INF.

− Editamos con notepad el archivo web.xml

• Comprobamos que los saltos de carro no son correctamente interpretados.

− Editamos con notepad2 web.xml

− Eliminamos el comentario a la línea que nos permite habilitar el AdminServlet. Salvamos

− Vamos a axis-1_4\webapps\axis

− Ejecutamos jar –cvf axis.war *

Page 7: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno (IV)− Ejecutamos asadmin deploy axis.war− Si no tenenos arrancado el servidor, fallará.− Comprobaremos los domains instalados y en ejecución con el

comando:• Asadmin list-domains

− Arrancar/Detener el servicio• Asadmin start-domain domain1 (como sólo un dominio, es opcional)• Asadmin stop-domain domain1

− Arrancamos el servicio con el comando start-domain.− Volvemos a intentar asadmin deploy axis.war .

• Usuario admin: admin• Password: curso.curso

Page 8: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno (V)− Comprobamos que se ha desplegado la aplicación con un navegador

http://localhost:8080/axis

− Ahora iniciamos la consola de administración (Programas, Sun Microsystems, Admin Console)

− Nos logamos con admin/curso.curso

− EN el panel de la izquierda, en Applications, pinchamos en webapplications, y en el panel de la derecha, seleccionamos axis y pulsamos undeploy.

− Logout

− Comprobamos con el navegador que la aplicación ya no es accesible.

− Con el servidor iniciado, abrimos un console y tomamos axis.war y lo copiamos al directorio:

• App-server-install-dir\domains\domain1\autodeploy

Page 9: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno (VI)− Comprobamos que axis también se ha desplegado.− El autodeploy es por tanto también una forma rápida y cómo

de desplegar aplicaciones en nuestro Application Server.

− Por último…− Copiamos el archivo 03-librerias externas en netb-ide7-

modules-ext.zip a un directorio temporal y extraemos su contenido.

− Copiamos todas las librerías que aparezcan a:• Netbeans-install-dir\\Sun\netbeans-5.5beta\ide7\modules\ext

• ¡TODO LISTO!

Page 10: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

Preparando el entorno en un sistema LINUX− Copiamos el archivo siguiente en nuestra máquina guadalinex:

• axis-bin-1_4.zip

− Una vez en /home/guadalinex, lo copiamos a /tmp y descomprimimos con unzip.

− Entramos a la carpetacd axis-1_4/webapps/axis/WEB-INF

− Editamos con gvim –y el archivo web.xml

− Eliminamos el comentariopara habilitar el Admin Servlet. Salvamos

− Vamos a axis-1_4/webapps/axis

− Ejecutamos:cp WEB-INF/classes/SOAP*.class .

− Ejecutamos jar –cvf axis.war *

OJO con el PUNTO

Page 11: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno en un sistema LINUX (II)− Ejecutamos asadmin deploy axis.war

− Si no tenenos arrancado el servidor, fallará.

− Comprobaremos los domains instalados y en ejecución con el comando:

• asadmin list-domains

− Arrancar/Detener el servicio

• asadmin start-domain domain1 (como sólo un dominio, es opcional)

• asadmin stop-domain domain1

− Arrancamos el servicio con el comando start-domain.

− Volvemos a intentar asadmin deploy axis.war .

• Usuario admin: admin

• Password: curso.curso

Page 12: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno en un sistema LINUX(III)− Comprobamos que se ha desplegado la aplicación con un navegador

http://localhost:8080/axis

− Ahora iniciamos la consola de administración (abrimos un navegador y tecleamos la URL: http://localhost:4848)

− Nos logamos con admin/curso.curso− En el panel de la izquierda, en Applications, pinchamos en web

applications, y en el panel de la derecha, comprobamos que se encuentra la aplicación axis.

− Logout− Si con el servidor iniciado, hubiésemos tomado el archivo axis.war y lo

hubiésemos copiamos al directorio:• App-server-install-dir/domains/domain1/autodeploy

• También se habría desplegado y aparecería en la consola de administración.

Page 13: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Preparando el entorno en un sistema LINUX(IV)− El autodeploy es por tanto también una forma rápida y cómo

de desplegar aplicaciones en nuestro Application Server.

− Copiamos el archivo lib-ext-netb-ide7-modules-ext.zip a nuestra máquina guadalinex, y lo copiamos desde /home/guadalinex a /tmp. Ahí, extraemos su contenido con unzip.

− Copiamos todas las librerías CON sudo que aparezcan a:• /opt/netbean-5.5/ide7/modules/ext

Page 14: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Creación de un web service calculadora con Axis (modo JWS)

Page 15: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Una vez instalado AXIS, ya podemos también construir Web Services mediante él.

• Otro camino para arrancar el servidor es mediante el PROGRAMAS->Sun->App.->Start Default Server, y luego arrancamos la Admin Console del ApplicationServer. Nos autenticamos con admin/curso.curso

• El path de despliegue de la aplicación axis.war será:• AppServer-install-dir\domains\domain1\applications\j2ee-modules\axis

• Será el directorio donde crearemos los JWS.

Page 16: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica

• Debemos encontrarnos con lo siguiente:

Page 17: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Ahora abrimos el archivo Calculadora.jws del directorio de prácticas. Debe contener algo como esto:

/*** Servicio Web que realiza las operaciones Suma, * Resta, Multiplicación y División de dos números* @author JC*/public class Calculadora {

public int suma(int x, int y) {return x + y;}

public int resta(int x, int y) {return x-y;}

public int multiplica(int x, int y) {return x * y;}

public int divide(int x, int y) {return x / y;}

}

Page 18: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Cerramos el archivo, y con el server arrancado, y la aplicación axis desplegada, copiamos ese archivo al directorio:

AppServer-install-dir\domains\domain1\applications\j2ee-modules\axis

• Comprobamos ahora si ha generado un web serviceasí:

http://localhost:8080/axis/Calculadora.jws

• Debemos obtener como respuesta esto:

Page 19: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Una vez que sabemos que axis funciona correctamente, usaremos el Web Service Calculadora proporcionado por axis, construido sobre un archivo JWS.− Crearemos un proyecto de tipo “Web”.

− Le daremos como nombre de proyecto 01CalculadoraJws

− Una vez creado, en la zona de librerías, añadiremos los siguientes .jar de la carpeta ext:

• axis.jar

• jaxrpc.jar

• commons-discovery-0.2.jar

• commons-logging-1.0.4.jar

• wsdl4j-1.5.1.jar

Page 20: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• De este modo:

Page 21: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Ahora crearemos un servlet, que llamaremos resultados. El código fuente de este servlet, lo podemos extraer del directorio de prácticas: base-resultados.txt. Arreglamos los errores que marque Netbeans y salvamos.

• El index.jsp lo podemos extraer del directorio de prácticas; básicamente contiene un formulario que permite introducir dos argumentos para el cálculo que queramos hacer con la calculadora.

Page 22: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Probamos el código con un Run de nuestro proyecto:

Page 23: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Creación de un web service calculadora mediante herramientas JEE5

Page 24: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Ahora vamos a crear un proyecto del mismo webservice que hemos implementado en AXIS, pero con la tecnología JEE5.

• Para ello, arrancamos netbeans, y creamos un nuevo proyecto. En el asistente, elegimos la opción de un proyecto tipo Web.

• Elegimos el nombre: 01CalculadoraJEE5

Page 25: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Ahora creamos un web service mediante los menús, pulsando botón derecho en el proyecto, New File, Web Services, Web Service.

• Lo llamaremos “calculadora”, y en el nombre del paquete le daremos calculadoraJEE5.

• El asistente creará un archivo .java en la carpeta “Web Services”. Editamos el código de ejemplo que nos ha dejado Netbeans, y lo rellenamos con el archivo base-Calculadora.txt. Arreglar lo que netbeans marque con flags de error.

Page 26: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Este proyecto tiene un index.jsp cuyo código dejaremos así:<%String URLRedireccion = "/01CalculadoraJEE5/calculadoraService?WSDL";response.sendRedirect(URLRedireccion);%>

• Hacemos un Clean and Build y un RUN del proyecto.

• El navegador se dirigirá hacia:• http://localhost:8080/01CalculadoraJEE5/calculadoraService?WSDL

• Ahora que ya tenemos nuestro Web Service Calculadora, debemos crear un cliente para probar el funcionamiento.

• Observamos que el web service JEE5 lleva el sufijo “Service”.

Page 27: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Creamos un nuevo proyecto, de tipo Web, con el nombre 01CalculadoraJEE5Client .

• El index.jsp del proyecto, lo dejamos idéntico al index.jsp del proyecto 01CalculadoraJws.

• Creamos un Servlet llamado resultados, y en el nombre del paquete, establecemos calculadoraJEE5Client .

• Luego, pinchamos en nuestro proyecto, pulsamos botón derecho del ratón, New File, y en el asistente, elegimos Web Services, y en el panel derecho, elegimos Web Service Client.

Page 28: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• En la ventana siguiente, podemos elegir entre buscar el Web Service entre uno de nuestros proyectos o bien a través de la opción WSDL URL.

• Si elegimos Project, basta navegar hacia 01CalculadoraJEE5 y seleccionar nuestro web service. Si elegimos WSDL URL,debemos especificar esta URL:

• http://localhost:8080/01CalculadoraJEE5/calculadoraService?WSDL

• Como nombre de paquete, elegimos calculadorajee5client

• Una vez que ya tenemos el web service referenciado en nuestro proyecto, podemos usar una característica de Netbeans de escritura automática de código.

Page 29: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica

• Seleccionamos nuestro proyecto y creamos un nuevo Servlet, y lo llamaremos “resultados”; también en el paquete calculadorajee5client.

• En la ventana de código, tenemos que irnos al método processRequest . En una línea vacía de la ventana de Editor, dentro de este método, pulsamos botón derecho del ratón y elegimos Web Service Client Resources, y dentro de este menú, Call Web Service Operation.

• Seleccionamos el Web Service que tenemos referenciado y elegimos la operación suma.

• Las sentencias para capturar los parámetros del formulario que usará el Web Service en nuestras operaciones son:Integer arg0 = Integer.parseInt(request.getParameter("arg0"));Integer arg1 = Integer.parseInt(request.getParameter("arg1"));

Page 30: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica

• Si dejamos el código tal como lo presenta el asistente, podemos obtener al final este aspecto en nuestroproyecto, una vez desplegado y ejecutándose:

Page 31: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Más sobre axis: Implementación de un servicio mediante un WSDD

Page 32: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Lo primero que tenemos que hacer es asegurarnos de que tenemos disponible el archivo setenv.bat en una ubicación dentro del PATH.

• Luego abrimos un “console”, y nos dirigimos hacia:AppServer-Install-dir\domains\domain1\applications\j2ee-modules\axis

• En este path, ejecutamos:copy Calculadora.jws WEB-INF\classes\Calculadora.java

• Acto seguido, ejecutamos cd WEB-INF\classes

• Y por último “javac Calculadora.java”

Page 33: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• El fichero batch “setenv” crea unas variables de entorno para que podamos usar el AdminService de axis, que sirve para dar de alta Web Services compilados y que aparecen en la lista inicial list junto con sus métodos.

• Para poder usar el AdminService, es necesario crear en este mismo directorio un fichero Calculadora.wsdd

• El fichero Calculadora.wsdd puede copiarse del directorio de prácticas.

Page 34: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Calculadora.wsdd:<deployment

xmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><!--Definimos el servicio Web a activar:

Nombre y tipo de Servicio Web. RPC: Llamadas a procedimientos remotos con ejecucion sincrona

--> <service name="CalculadoraWS" provider="java:RPC">

<!-- Nombre de la clase que implementa los metodos expuestos --><parameter name="className" value="Calculadora"/> <!-- Expone todos los metodos como visibles desde el exterior --><parameter name="allowedMethods" value="*"/>

</service></deployment>

Page 35: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

• También creamos un archivo que se llame “undeploy-calculadora-ws.wsdd”. Servirá si tenemos que dar de baja el web service:

<undeployment xmlns="http://xml.apache.org/axis/wsdd/">

<service name="CalculadoraWS"/>

</undeployment>

Page 36: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Es muy importante que en fichero wsdd no exista ningún carácter acentuado.

• Si existe algún carácter acentuado incluso en la zona de comentarios, el AdminService generará un error.

Ahora, para usar el AdminService:− Iniciamos el servidor donde esté axis− setenv− java

org.apache.axis.client.AdminClient-lhttp://localhost:8080/axis/services/AdminServiceCalculadora.wsdd

Page 37: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Captura de pantalla de la ejecución:

Page 38: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Si todo ha ido bien, podremos ver algo como esto:

Page 39: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Llegados a este punto, el fichero Calculadora.javapodría eliminarse de ese directorio, si quisiéramos.

• Es importante destacar que AdminService ha añadido la terminación WS al web service, porque así lo hemos especificado en el WSDD. Podríamos haber añadido el sufijo “Service”, como en los WS de JEE5. Ahora para acceder al wsdl la URL es:− http://localhost:8080/axis/services/CalculadoraWS?wsdl

• Los web services JEE5 tienen una URL terminada en service− http://localhost:8080/01CalculadoraJEE5/calculadoraService?WSDL

Page 40: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• ¿Podríamos haber creado el WS sin tener el servidor de aplicaciones levantado, o el admin servlet habilitado?

• Sí; de este modo:− setenv

− java org.apache.axis.transport.http.SimpleAxisServer -p 8080

− Java org.apache.axis.client.AdminClient-p 8080 Calculadora.wsdd

.. .. .. .. .. .. .. .. ..

Processing file Calculadora.wsdd

<Admin>Done processing</Admin>

• Y ya tendríamos el Web Service Calculadora Disponible.

Page 41: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Para detener el SimpleAxisServer, ejecutamos:− java org.apache.axis.client.AdminClient -p 8080 quit

− <Admin> quitting.</Admin>

• Obtendré del sistema lo siguiente:− Administration service requested to quit, quitting.

− SimpleAxisServer quitting.

− SimpleAxisServer quitting.

Page 42: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

EJERCICIO: Utilizar WSDL2Java para crear un clientes standalone

Page 43: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

PRÁCTICAS

• Abrimos un “console”

• Creamos una carpeta en el temporal:− Mkdir c:\temp\carpeta− Cd c:\temp\carpeta

• Levantamos el servidor

• Por últimos, una vez el servidor arriba, ejecutamos lo siguiente:

− Setenv

− wget http://localhost:8080/axis/services/CalculadoraWS?wsdl -O CalculadoraWS.wsdl

• NOTA: disponemos de wget gracias a unxutils.

Page 44: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Ahora ejecutamos:wget http://localhost:8080/axis/services/CalculadoraWS?wsdl -O CalculadoraWS.wsdl

• Eso nos descargará el archivo CalculadoraWS.wsdl

• Con él, usaremos una herramienta que creará los stubso plantillas java para usar el web service.

• Usándolas, nos quedará un código mucho más legible.

Page 45: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Generamos la implementación de los stubs del Web Service, ejecutando:java org.apache.axis.wsdl.WSDL2Java CalculadoraWS.wsdl

• Comprobamos que debe existir ahora esta estructura:ls ./localhost/axis/services/CalculadoraWS/Calculadora*

• Ya tenemos lo necesario para usarlo con un cliente.

./localhost/axis/services/CalculadoraWS/Calculadora.java

./localhost/axis/services/CalculadoraWS/CalculadoraService.java

./localhost/axis/services/CalculadoraWS/CalculadoraServiceLocator.java

./localhost/axis/services/CalculadoraWS/CalculadoraWSSoapBindingStub.java

Page 46: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Código del cliente más legible (“CalculadoraClient2.java”) quepodemos crear (seguimos en el directorio c:\temp\carpeta):

import localhost.axis.services.CalculadoraWS.*;/*** Prueba el Web Service* @author JC*/public class CalculadoraClient2 {

public static void main(String[] args) {localhost.axis.services.CalculadoraWS.CalculadoraServiceLocator locator;localhost.axis.services.CalculadoraWS.Calculadora calc;try {

locator = new CalculadoraServiceLocator();calc = locator.getCalculadoraWS();System.out.println(calc.suma(6, 2));System.out.println(calc.resta(3, 2));System.out.println(calc.multiplica(9, 2));System.out.println(calc.divide(100, 4));

} catch (Exception ex){System.out.println(ex);

}}

}

Page 47: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Compilamos el cliente con el comando:javac CalculadoraClient2.java

• Lo ejecutamos con:java CalculadoraClient2

• Obtenemos:811825

• Si movemos el binario a otra ubicación, fallará al no encontrar la vía que empieza por localhost.

• Tendríamos que arrastrarla carpeta localhost juntocon el CalculadoraClient2.class

• Vamos a programarlo sin usar los stubs que crea la utilidad WSDL2Java.

Page 48: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Código de CalculadoraClient3.java /* import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.encoding.XMLType;import javax.xml.rpc.ParameterMode;/*** Prueba el Web Service 2* @author JC*/public class CalculadoraClient3 {

public static void main(String [] args) throws Exception {String endpoint = "http://localhost:8080/axis/services/CalculadoraWS";Integer op1 = new Integer(100);Integer op2 = new Integer(200);Service service = new Service();Call call = (Call) service.createCall();// Establecemos la dirección en la que está activado el WebServicecall.setTargetEndpointAddress( new java.net.URL(endpoint) );// Establecemos el nombre del método a invocarcall.setOperationName( "multiplica" );// Establecemos los parámetros que necesita el método// Observe que se deben especificar correctamente tanto el nómbre// como el tipo de datos..// esta información se puede obtener viendo el WSDL del servicio Webcall.addParameter( "in0", XMLType.XSD_INT, ParameterMode.IN );call.addParameter( "in1", XMLType.XSD_INT, ParameterMode.IN );call.setReturnType( XMLType.XSD_INT );Integer result = (Integer) call.invoke( new Object [] { op1, op2 });System.out.println("El resultado de la multiplicacion es: " + result);}

}

=> Esta aplicación es mucho más engorrosa de usar.

Page 49: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

EJERCICIO: Crear un proyecto netbeanscon el código fuente de CalculadoraClient2

Page 50: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Se pide:− Crear un proyecto 01CalculadoraClient2, que realice la misma

función que CalculadoraClient2.

• NOTAS− Tenemos que tener en cuenta que WSDL2Java genera un

paquete con fuentes que necesitamos.

− Este proyecto, necesita las siguientes librerías:

Page 51: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

EJERCICIO: Crear aplicaciones web que sean clientes de nuestros Web Services

Page 52: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Como ejercicio, debemos crear un cliente de web service. CalculadoraWS. Tendremos de nuevo que añadir a mano las librerías externas como en el proyecto cliente JWS.

• Creamos un proyecto llamado: 01CalculadoraWsdd, de tipo Web.

• Creamos un servlet resultados, y en el nombre del paquete, le ponemos: calculadoraWsdd

• Copiamos todo el trozo de código del servlet del proyecto 01CalculadoraJws, sin copiar la línea “package”.

• Cambiamos la línea:miLlamada.setTargetEndpointAddress(new URL("http://localhost:8080/axis/Calculadora.jws"));

• Por la línea:miLlamada.setTargetEndpointAddress(new URL("http://localhost:8080/axis/services/CalculadoraWS "));

Page 53: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Prácticas

• Lo ejecutamos, y debemos ver algo como esto:

Page 54: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

PRÁCTICAS REPASO

Page 55: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica repaso 1

Page 56: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica repaso 1

− Construir un web service que tome dos argumentos; sean A y B. − El WS debe devolver el resultado de la siguiente operación:

• A*B+2*(A+B) -1

− Lo construiremos:• Mediante un JWS, con su cliente• Mediante una clase Java, con su WSDD y su cliente• Mediante JEE5, con un WS (@webservice) y su cliente.

− PERO: nuestros clientes atacarán al web service del compañero de al lado. Los nombres de ficheros/proyectos y métodos:

• El método que ofrecerá el cálculo A*B+2*(A+B) -1 se llamará calculo.• El index.jsp con el formulario que captura los dos argumentos será el habitual.• El JWS que implemente el WS se llamará: pfinal1.jws• El PROYECTO que actúa como cliente de pfinal.jws se llamará pfinal1JwsClient

• El PROYECTO que actúa como cliente del servicio implementado con WSDD se llamarápfinal1WSDDClient. El WSDD llevará como service name pfinalWS1

• El PROYECTO JEE5 que implemente el Web Service se llamará pfinal1JEE5WService, el servicio se llamará pfinal1

• El PROYECTO cliente del Web Service se llamará pfinal1JEE5Client.− OJO CON LOS SUFIJOS EN EL DESPLIEGUE DE SERVICIOS.

Page 57: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica repaso 2

Page 58: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

Práctica repaso 2

• Construiremos ahora dos web services:− Uno llamado pfinal2a, que realice la operación A*3+B*4

− Uno llamado pfinal2b, que realice la operación A+3+B-2

− Los construiremos de tipo AXIS/WSDD y JEE5

− Los WSDD’s llevarán como service name pfinal2aWS y pfinal2bWS

− El PROYECTO JEE5 que implemente el Web Service se llamarápfinal2ajee5 y pfinal2bjee5 , los servicios se llamarán pfinal2a y pfinal2b

• Y ADEMÁS: − Los clientes, harán lo siguiente:

• Harán la llamada a TODOS los web services de todos los alumnos, y sumarán el resultado que produzcan cada uno de ellos.

• Construiremos los clientes tanto para pfinal2a como para pfinal2b

Page 59: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

EJERCICIO: Aprendemos a usar la herramienta “Web Services Explorer” que

viene incorporada en Eclipse WTP

Page 60: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

• En nuestra máquina linux, tenemosun proyecto funcionando con Web Services, pero nuestro IDE es capaz de hacer más cosas. Algunas de ellas muy útiles en cuanto a depuración: Web Services Explorer

• Dentro de la carpeta src/WEB-INF, creamos una nueva carpeta que se llame “wsdl”. La vía completa serápues: src/WEB-INF/wsdl

• Seleccionamos esa carpeta, y pulsamos “File->Import->File System”

Page 61: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

Seleccionamos el WSDL de nuestra calculadora:

Page 62: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

• Si todo ha ido correctamente, debemos tener en el Package Explorer una imagen como la de la figura.

• Si hacemos doble click sobre el nombre del archivo que hemos importado, se abrirá una vista en diseño muy útil y clarificadora.

Page 63: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

Page 64: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

• Para lo siguiente que vamos a hacer, necesitamos arrancar JBOSS (por ejemplo, desde Eclipse, mediante la configuración de debugging que hemos creado).

• Ahora nos aseguramos de seleccionar CalculadoraWS.wsdl, y pulsamos:click-dcho->Web Services->Test with Web Services

Explorer

• Se abrirá una ventana de navegador con una aplicación web como la de la figura siguiente.

Page 65: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

• ¿Cómo puedo buscar en un repositorio UDDI?

Page 66: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

Page 67: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

WEB SERVICES

• ¿Y los repositorios UDDI para publicar o buscar?

Page 68: 4/9 Curso JEE5, Soa, Web Services, ESB y XML

FIN