SlideShare uma empresa Scribd logo
1 de 68
Baixar para ler offline
INTRODUCCIÓN A LOS WEB
SERVICES

    »   Prácticas
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
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.
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-dirbin
       • App-server-install-dirlibantbin
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:windowsconsole.xml (<!– transparency…. -->).
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_4webappsaxisWEB-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 Admin
      Servlet. Salvamos
   − Vamos a axis-1_4webappsaxis
   − Ejecutamos jar –cvf axis.war *
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
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 web
     applications, 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-dirdomainsdomain1autodeploy
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-dirSunnetbeans-5.5betaide7modulesext


• ¡TODO LISTO!
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 carpeta
  cd axis-1_4/webapps/axis/WEB-INF
− Editamos con gvim –y el archivo
  web.xml
− Eliminamos el comentario
  para 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
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
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.
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
Creación de un web service calculadora con Axis (modo JWS)
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 Application
  Server. Nos autenticamos con admin/curso.curso

• El path de despliegue de la aplicación axis.war será:
     • AppServer-install-dirdomainsdomain1applicationsj2ee-modulesaxis


• Será el directorio donde crearemos los JWS.
Práctica

• Debemos encontrarnos con lo siguiente:
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;
            }
        }
Prácticas

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

•   Comprobamos ahora si ha generado un web service
    así:
    http://localhost:8080/axis/Calculadora.jws


•   Debemos obtener
    como respuesta esto:
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
Prácticas

• De este modo:
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.
Prácticas

• Probamos el código con un Run de nuestro proyecto:
Creación de un web service calculadora
          mediante herramientas JEE5
Prácticas

• Ahora vamos a crear un proyecto del mismo web
  service 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
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.
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”.
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.
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.
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"));
Práctica

• Si dejamos el código tal como lo presenta el asistente,
  podemos obtener al final este aspecto en nuestro
  proyecto, una vez desplegado y ejecutándose:
Más sobre axis: Implementación de
   un servicio mediante un WSDD
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-dirdomainsdomain1applicationsj2ee-modulesaxis

• En este path, ejecutamos:
  copy Calculadora.jws WEB-INFclassesCalculadora.java

• Acto seguido, ejecutamos cd WEB-INFclasses

• Y por último “javac Calculadora.java”
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.
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>
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>
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/AdminService
         Calculadora.wsdd
Prácticas

• Captura de pantalla de la ejecución:
Prácticas

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

• Llegados a este punto, el fichero Calculadora.java
  podrí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
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.
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.
EJERCICIO: Utilizar WSDL2Java para
        crear un clientes standalone
PRÁCTICAS

• Abrimos un “console”
• Creamos una carpeta en el temporal:
  − Mkdir c:tempcarpeta
  − Cd c:tempcarpeta
• 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.
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 stubs
  o plantillas java para usar el web service.

• Usándolas, nos quedará un código mucho más legible.
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*
./localhost/axis/services/CalculadoraWS/Calculadora.java
./localhost/axis/services/CalculadoraWS/CalculadoraService.java
./localhost/axis/services/CalculadoraWS/CalculadoraServiceLocator.java
./localhost/axis/services/CalculadoraWS/CalculadoraWSSoapBindingStub.java


• Ya tenemos lo necesario para usarlo con un cliente.
Prácticas

• Código del cliente más legible (“CalculadoraClient2.java”) que
  podemos crear (seguimos en el directorio c:tempcarpeta):
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);
         }
   }
}
Prácticas

• Compilamos el cliente con el    • Si movemos el binario a
  comando:                          otra ubicación, fallará al
  javac CalculadoraClient2.java
                                    no encontrar la vía que
• Lo ejecutamos con:                empieza por localhost.
  java CalculadoraClient2
                                  • Tendríamos que arrastrar
• Obtenemos:                        la carpeta localhost junto
  8                                 con el
  1                                 CalculadoraClient2.class
  18
  25                              • Vamos a programarlo sin
                                    usar los stubs que crea la
                                    utilidad WSDL2Java.
Prácticas
• Código de CalculadoraClient3.java
/* import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
                                                         => Esta aplicación es mucho
   import org.apache.axis.encoding.XMLType;
   import javax.xml.rpc.ParameterMode;
                                                         más engorrosa de usar.
   /**
   * 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 WebService
             call.setTargetEndpointAddress( new java.net.URL(endpoint) );
             // Establecemos el nombre del método a invocar
             call.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 Web
             call.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);
             }
   }
EJERCICIO: Crear un proyecto netbeans
con el código fuente de CalculadoraClient2
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:
EJERCICIO: Crear aplicaciones web que
 sean clientes de nuestros Web Services
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"));
Prácticas

• Lo ejecutamos, y debemos ver algo como esto:
PRÁCTICAS REPASO
Práctica repaso 1
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.
Práctica repaso 2
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
EJERCICIO: Aprendemos a usar la
herramienta “Web Services Explorer” que
      viene incorporada en Eclipse WTP
WEB SERVICES

• En nuestra máquina linux, tenemos
  un 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”
WEB SERVICES

Seleccionamos el WSDL de nuestra calculadora:
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.
WEB SERVICES
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.
WEB SERVICES

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

• ¿Y los repositorios UDDI para publicar o buscar?
FIN

Mais conteúdo relacionado

Mais procurados

Mais procurados (19)

Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Apache Camel - Parte II
Apache Camel - Parte IIApache Camel - Parte II
Apache Camel - Parte II
 
Cjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-wsCjee a-leccion-web services-jax-ws
Cjee a-leccion-web services-jax-ws
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Curso Básico de JDBC
Curso Básico de JDBCCurso Básico de JDBC
Curso Básico de JDBC
 
Entornos apex onpremise
Entornos apex onpremiseEntornos apex onpremise
Entornos apex onpremise
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre asp
 
Curso: Programación Web con Tecnología Java
Curso:  	Programación Web con Tecnología JavaCurso:  	Programación Web con Tecnología Java
Curso: Programación Web con Tecnología Java
 
Migrating to ICEfaces 2 (Spanish)
Migrating to ICEfaces 2 (Spanish)Migrating to ICEfaces 2 (Spanish)
Migrating to ICEfaces 2 (Spanish)
 
Oracle Forms
Oracle FormsOracle Forms
Oracle Forms
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Asp .net
Asp .netAsp .net
Asp .net
 
Clase xi
Clase xiClase xi
Clase xi
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
webutil oracle forms
webutil oracle formswebutil oracle forms
webutil oracle forms
 

Destaque

Ebe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nubeEbe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nubeJuan Carlos Rubio Pineda
 
7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Componentes Web y El Framework Polymer
Componentes Web y El Framework PolymerComponentes Web y El Framework Polymer
Componentes Web y El Framework PolymerJavier Vélez Reyes
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web ServicesGeneXus
 
Curso node.js
Curso node.js Curso node.js
Curso node.js Redradix
 
Curso de javascript y node avanzado
Curso de javascript y node avanzadoCurso de javascript y node avanzado
Curso de javascript y node avanzadobrainybogota
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Servicesedmodi
 
Taller de Programación Funcional en JavaScript
Taller de Programación Funcional en JavaScriptTaller de Programación Funcional en JavaScript
Taller de Programación Funcional en JavaScriptJavier Vélez Reyes
 
Principios de Diseño de Componentes Web
Principios de Diseño de Componentes WebPrincipios de Diseño de Componentes Web
Principios de Diseño de Componentes WebJavier Vélez Reyes
 
Arquitecturas Reactivas de Streams
Arquitecturas Reactivas de StreamsArquitecturas Reactivas de Streams
Arquitecturas Reactivas de StreamsJavier Vélez Reyes
 
Programación Asíncrona en Node JS
Programación Asíncrona en Node JSProgramación Asíncrona en Node JS
Programación Asíncrona en Node JSJavier Vélez Reyes
 

Destaque (20)

Introduccion Servicios Web
Introduccion Servicios WebIntroduccion Servicios Web
Introduccion Servicios Web
 
Ebe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nubeEbe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nube
 
Servicios web xml
Servicios web xmlServicios web xml
Servicios web xml
 
El Proyecto Polymer
El Proyecto PolymerEl Proyecto Polymer
El Proyecto Polymer
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Componentes Web y El Framework Polymer
Componentes Web y El Framework PolymerComponentes Web y El Framework Polymer
Componentes Web y El Framework Polymer
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Web services
Web servicesWeb services
Web services
 
Curso node.js
Curso node.js Curso node.js
Curso node.js
 
Curso de javascript y node avanzado
Curso de javascript y node avanzadoCurso de javascript y node avanzado
Curso de javascript y node avanzado
 
Servidor API REST con Node.js
Servidor API REST con Node.jsServidor API REST con Node.js
Servidor API REST con Node.js
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
 
Taller de Programación Funcional en JavaScript
Taller de Programación Funcional en JavaScriptTaller de Programación Funcional en JavaScript
Taller de Programación Funcional en JavaScript
 
Principios de Diseño de Componentes Web
Principios de Diseño de Componentes WebPrincipios de Diseño de Componentes Web
Principios de Diseño de Componentes Web
 
Arquitecturas Reactivas de Streams
Arquitecturas Reactivas de StreamsArquitecturas Reactivas de Streams
Arquitecturas Reactivas de Streams
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
Programación Asíncrona en Node JS
Programación Asíncrona en Node JSProgramación Asíncrona en Node JS
Programación Asíncrona en Node JS
 
Arquitectura Orientada a Servicios (SOA)
Arquitectura Orientada  a Servicios (SOA)Arquitectura Orientada  a Servicios (SOA)
Arquitectura Orientada a Servicios (SOA)
 

Semelhante a 4/9 Curso JEE5, Soa, Web Services, ESB y XML

ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkMauro Parra-Miranda
 
Manual de instalacion_my_sql_sergio
Manual de instalacion_my_sql_sergioManual de instalacion_my_sql_sergio
Manual de instalacion_my_sql_sergioTecnologia
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexicoAmazon Web Services LATAM
 
Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Mauro Parra-Miranda
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
PHP Tema 1 - Introducción
PHP Tema 1 - IntroducciónPHP Tema 1 - Introducción
PHP Tema 1 - IntroducciónSpacetoshare
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Desarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.pptDesarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.pptJorgeAntonio32064
 
C:\Fakepath\Dm Trejo Produccion De Recursos[1]
C:\Fakepath\Dm Trejo Produccion De Recursos[1]C:\Fakepath\Dm Trejo Produccion De Recursos[1]
C:\Fakepath\Dm Trejo Produccion De Recursos[1]Dulce trejo
 
Servidor web lamp
Servidor web lampServidor web lamp
Servidor web lampyaser6700
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfectobetabeers
 
Manual de instalacion de mysql Server mysql-workbench-xamp server
Manual de instalacion de mysql Server mysql-workbench-xamp server Manual de instalacion de mysql Server mysql-workbench-xamp server
Manual de instalacion de mysql Server mysql-workbench-xamp server Jorge Saavedra
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota MexicoHermann Pais
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sqlyanetzis
 
Servidores Web en GNU/Linux
Servidores Web en GNU/LinuxServidores Web en GNU/Linux
Servidores Web en GNU/LinuxMartin Gregorio
 
Instalacion de osc inventory en ubuntu
Instalacion de osc inventory en ubuntuInstalacion de osc inventory en ubuntu
Instalacion de osc inventory en ubuntuEcuteb Gv
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
 

Semelhante a 4/9 Curso JEE5, Soa, Web Services, ESB y XML (20)

ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
 
Manual de instalacion_my_sql_sergio
Manual de instalacion_my_sql_sergioManual de instalacion_my_sql_sergio
Manual de instalacion_my_sql_sergio
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexico
 
Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101Cloudevel - Microsoft Azure - 101
Cloudevel - Microsoft Azure - 101
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
PHP Tema 1 - Introducción
PHP Tema 1 - IntroducciónPHP Tema 1 - Introducción
PHP Tema 1 - Introducción
 
Tema1
Tema1Tema1
Tema1
 
WSO2 DSS - JENKINS
WSO2 DSS - JENKINSWSO2 DSS - JENKINS
WSO2 DSS - JENKINS
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Desarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.pptDesarrollo de sitios web con PHP y MySQL.ppt
Desarrollo de sitios web con PHP y MySQL.ppt
 
C:\Fakepath\Dm Trejo Produccion De Recursos[1]
C:\Fakepath\Dm Trejo Produccion De Recursos[1]C:\Fakepath\Dm Trejo Produccion De Recursos[1]
C:\Fakepath\Dm Trejo Produccion De Recursos[1]
 
Servidor web lamp
Servidor web lampServidor web lamp
Servidor web lamp
 
El servidor perfecto
El servidor perfectoEl servidor perfecto
El servidor perfecto
 
Manual de instalacion de mysql Server mysql-workbench-xamp server
Manual de instalacion de mysql Server mysql-workbench-xamp server Manual de instalacion de mysql Server mysql-workbench-xamp server
Manual de instalacion de mysql Server mysql-workbench-xamp server
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk   AWS Roadshow Bogota MexicoIntroduccion a Elastic Beanstalk   AWS Roadshow Bogota Mexico
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
 
Aplicaciones web con php y my sql
Aplicaciones web con php y my sqlAplicaciones web con php y my sql
Aplicaciones web con php y my sql
 
Servidores Web en GNU/Linux
Servidores Web en GNU/LinuxServidores Web en GNU/Linux
Servidores Web en GNU/Linux
 
Instalacion de osc inventory en ubuntu
Instalacion de osc inventory en ubuntuInstalacion de osc inventory en ubuntu
Instalacion de osc inventory en ubuntu
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
 

Mais de Juan Carlos Rubio Pineda

Redes lan2 : instrucción 1/2006 de la Junta de Andalucía
Redes lan2 : instrucción 1/2006 de la Junta de AndalucíaRedes lan2 : instrucción 1/2006 de la Junta de Andalucía
Redes lan2 : instrucción 1/2006 de la Junta de AndalucíaJuan Carlos Rubio Pineda
 
Supercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
Supercomputación y Cloud computing en CICA. Jornadas Universidad de HuelvaSupercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
Supercomputación y Cloud computing en CICA. Jornadas Universidad de HuelvaJuan Carlos Rubio Pineda
 
Seminario de metodologías ágiles, bloque I
Seminario de metodologías ágiles, bloque ISeminario de metodologías ágiles, bloque I
Seminario de metodologías ágiles, bloque IJuan Carlos Rubio Pineda
 
2/9 Curso JEE5, Soa, Web Services, ESB y XML
2/9 Curso JEE5, Soa, Web Services, ESB y XML2/9 Curso JEE5, Soa, Web Services, ESB y XML
2/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XML5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Guadalinex con colinux y Tecnología Nomachine NX
Guadalinex con colinux y Tecnología Nomachine NXGuadalinex con colinux y Tecnología Nomachine NX
Guadalinex con colinux y Tecnología Nomachine NXJuan Carlos Rubio Pineda
 

Mais de Juan Carlos Rubio Pineda (16)

Gdg 2013
Gdg 2013Gdg 2013
Gdg 2013
 
Anexo seguridad tic-centrorespaldo
Anexo seguridad tic-centrorespaldoAnexo seguridad tic-centrorespaldo
Anexo seguridad tic-centrorespaldo
 
Continuidad de sistemas
Continuidad de sistemasContinuidad de sistemas
Continuidad de sistemas
 
Redes lan2 : instrucción 1/2006 de la Junta de Andalucía
Redes lan2 : instrucción 1/2006 de la Junta de AndalucíaRedes lan2 : instrucción 1/2006 de la Junta de Andalucía
Redes lan2 : instrucción 1/2006 de la Junta de Andalucía
 
Redes lan1: cableado (orden 25/9/2007)
Redes lan1: cableado (orden 25/9/2007)Redes lan1: cableado (orden 25/9/2007)
Redes lan1: cableado (orden 25/9/2007)
 
Zentyal curso-ja
Zentyal curso-jaZentyal curso-ja
Zentyal curso-ja
 
Supercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
Supercomputación y Cloud computing en CICA. Jornadas Universidad de HuelvaSupercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
Supercomputación y Cloud computing en CICA. Jornadas Universidad de Huelva
 
Seminario metodologías agiles bloque II
Seminario metodologías agiles bloque IISeminario metodologías agiles bloque II
Seminario metodologías agiles bloque II
 
Seminario de metodologías ágiles, bloque I
Seminario de metodologías ágiles, bloque ISeminario de metodologías ágiles, bloque I
Seminario de metodologías ágiles, bloque I
 
2/9 Curso JEE5, Soa, Web Services, ESB y XML
2/9 Curso JEE5, Soa, Web Services, ESB y XML2/9 Curso JEE5, Soa, Web Services, ESB y XML
2/9 Curso JEE5, Soa, Web Services, ESB y XML
 
5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XML5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Virtualizacion
VirtualizacionVirtualizacion
Virtualizacion
 
Curso Ejb3
Curso Ejb3Curso Ejb3
Curso Ejb3
 
Guadalinex con colinux y Tecnología Nomachine NX
Guadalinex con colinux y Tecnología Nomachine NXGuadalinex con colinux y Tecnología Nomachine NX
Guadalinex con colinux y Tecnología Nomachine NX
 
Exportador S I C A C V N 1
Exportador S I C A  C V N 1Exportador S I C A  C V N 1
Exportador S I C A C V N 1
 
Sistema de colas Condor en CICA
Sistema de colas Condor en CICASistema de colas Condor en CICA
Sistema de colas Condor en CICA
 

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

  • 1. INTRODUCCIÓN A LOS WEB SERVICES » Prácticas
  • 2. 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
  • 3. 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.
  • 4. 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-dirbin • App-server-install-dirlibantbin
  • 5. 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:windowsconsole.xml (<!– transparency…. -->).
  • 6. 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_4webappsaxisWEB-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 Admin Servlet. Salvamos − Vamos a axis-1_4webappsaxis − Ejecutamos jar –cvf axis.war *
  • 7. 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
  • 8. 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 web applications, 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-dirdomainsdomain1autodeploy
  • 9. 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-dirSunnetbeans-5.5betaide7modulesext • ¡TODO LISTO!
  • 10. 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 carpeta cd axis-1_4/webapps/axis/WEB-INF − Editamos con gvim –y el archivo web.xml − Eliminamos el comentario para 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
  • 11. 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
  • 12. 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.
  • 13. 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
  • 14. Creación de un web service calculadora con Axis (modo JWS)
  • 15. 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 Application Server. Nos autenticamos con admin/curso.curso • El path de despliegue de la aplicación axis.war será: • AppServer-install-dirdomainsdomain1applicationsj2ee-modulesaxis • Será el directorio donde crearemos los JWS.
  • 17. 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; } }
  • 18. Prácticas • Cerramos el archivo, y con el server arrancado, y la aplicación axis desplegada, copiamos ese archivo al directorio: AppServer-install-dirdomainsdomain1applicationsj2ee-modulesaxis • Comprobamos ahora si ha generado un web service así: http://localhost:8080/axis/Calculadora.jws • Debemos obtener como respuesta esto:
  • 19. 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
  • 21. 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.
  • 22. Prácticas • Probamos el código con un Run de nuestro proyecto:
  • 23. Creación de un web service calculadora mediante herramientas JEE5
  • 24. Prácticas • Ahora vamos a crear un proyecto del mismo web service 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
  • 25. 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.
  • 26. 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”.
  • 27. 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.
  • 28. 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.
  • 29. 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"));
  • 30. Práctica • Si dejamos el código tal como lo presenta el asistente, podemos obtener al final este aspecto en nuestro proyecto, una vez desplegado y ejecutándose:
  • 31. Más sobre axis: Implementación de un servicio mediante un WSDD
  • 32. 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-dirdomainsdomain1applicationsj2ee-modulesaxis • En este path, ejecutamos: copy Calculadora.jws WEB-INFclassesCalculadora.java • Acto seguido, ejecutamos cd WEB-INFclasses • Y por último “javac Calculadora.java”
  • 33. 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.
  • 34. 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>
  • 35. 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>
  • 36. 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/AdminService Calculadora.wsdd
  • 37. Prácticas • Captura de pantalla de la ejecución:
  • 38. Prácticas • Si todo ha ido bien, podremos ver algo como esto:
  • 39. Prácticas • Llegados a este punto, el fichero Calculadora.java podrí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
  • 40. 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.
  • 41. 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.
  • 42. EJERCICIO: Utilizar WSDL2Java para crear un clientes standalone
  • 43. PRÁCTICAS • Abrimos un “console” • Creamos una carpeta en el temporal: − Mkdir c:tempcarpeta − Cd c:tempcarpeta • 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.
  • 44. 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 stubs o plantillas java para usar el web service. • Usándolas, nos quedará un código mucho más legible.
  • 45. 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* ./localhost/axis/services/CalculadoraWS/Calculadora.java ./localhost/axis/services/CalculadoraWS/CalculadoraService.java ./localhost/axis/services/CalculadoraWS/CalculadoraServiceLocator.java ./localhost/axis/services/CalculadoraWS/CalculadoraWSSoapBindingStub.java • Ya tenemos lo necesario para usarlo con un cliente.
  • 46. Prácticas • Código del cliente más legible (“CalculadoraClient2.java”) que podemos crear (seguimos en el directorio c:tempcarpeta): 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); } } }
  • 47. Prácticas • Compilamos el cliente con el • Si movemos el binario a comando: otra ubicación, fallará al javac CalculadoraClient2.java no encontrar la vía que • Lo ejecutamos con: empieza por localhost. java CalculadoraClient2 • Tendríamos que arrastrar • Obtenemos: la carpeta localhost junto 8 con el 1 CalculadoraClient2.class 18 25 • Vamos a programarlo sin usar los stubs que crea la utilidad WSDL2Java.
  • 48. Prácticas • Código de CalculadoraClient3.java /* import org.apache.axis.client.Call; import org.apache.axis.client.Service; => Esta aplicación es mucho import org.apache.axis.encoding.XMLType; import javax.xml.rpc.ParameterMode; más engorrosa de usar. /** * 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 WebService call.setTargetEndpointAddress( new java.net.URL(endpoint) ); // Establecemos el nombre del método a invocar call.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 Web call.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); } }
  • 49. EJERCICIO: Crear un proyecto netbeans con el código fuente de CalculadoraClient2
  • 50. 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:
  • 51. EJERCICIO: Crear aplicaciones web que sean clientes de nuestros Web Services
  • 52. 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"));
  • 53. Prácticas • Lo ejecutamos, y debemos ver algo como esto:
  • 56. 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.
  • 58. 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
  • 59. EJERCICIO: Aprendemos a usar la herramienta “Web Services Explorer” que viene incorporada en Eclipse WTP
  • 60. WEB SERVICES • En nuestra máquina linux, tenemos un 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”
  • 61. WEB SERVICES Seleccionamos el WSDL de nuestra calculadora:
  • 62. 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.
  • 64. 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.
  • 65. WEB SERVICES • ¿Cómo puedo buscar en un repositorio UDDI?
  • 67. WEB SERVICES • ¿Y los repositorios UDDI para publicar o buscar?
  • 68. FIN