Calculadora con Web Services
El objetivo es crear una calculadora de tipo Web Service, el cual será accesado por un cliente, para ello se requiere crear 2 aplicaciones:
1) Crear el Web Service en un servidor.
2) Crear código en un cliente para accesar al Web Service.
Parte 1) Creación del Web Service en un servidor
Se arranca el NetBeans (se requiere una versión actual que tenga integrado JAX) y se crea un proyecto, seleccionando en los menús superiores:
Archivo > Proyecto Nuevo
Aparece un pantalla donde nos pregunta la categoría y tipo de proyecto:
Categorías: Java Web
Proyectos: Web Application
y se hace click en "Siguiente". Después nos pregunta el nombre del proyecto:
Project Name: ServidorCalculadora
y hacemos click en "Siguiente".
Ahora nos pregunta el servidor web a utilizar, se dejan las opciones por default, y se hace click en "Siguiente".
Luego nos pregunta el Framework a utilizar, se dejan las opciones por default y se hace click en "Terminar".
NetBeans crea el proyecto y a continuación colocamos el cursor encima del proyecto "ServidorCalculadora" (parte izquierda de NetBeans) y ahí se hace click derecho encima del proyecto, aparece un conjunto de opciones y se selecciona:
Nuevo > Web Service
Aparece un pantalla donde nos pregunta la categoría y tipo de proyecto:
Nombre de Clase: Calculadora
Proyecto: ServidorCalculadora
Paquete: proyecto_calculadora
Las demás opciones las dejamos por default y hacemos click en "Terminar".
Aparece en la pantallan de NetBeans una nueva clase:
Calculadora.java
el cual genera el siguiente esqueleto:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package proyecto_calculadora;
import javax.jws.WebService;
/**
*
* @author rogelio
*/
@WebService()
public class Calculadora {
}
A continuación se le agregan los métodos que realizarán los servicios web, en este ejemplo, los métodos "suma", "resta", "multiplicacion" y "division". El programa queda de la siguiente manera:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package proyecto_calculadora;
import javax.jws.WebService;
/**
*
* @author rogelio
*/
@WebService()
public class Calculadora {
public int suma(int a, int b) {
return (a+b);
}
public int resta(int a, int b) {
return (a-b);
}
public int multiplicacion(int a, int b) {
return (a*b);
}
public int division(int a, int b) {
return (a/b);
}
}
A continuación se compila el proyecto haciendo click en el ícono del martillo y escoba que se llama:
Limpiar y generar Main Project
Después colocamos el cursor encima del proyecto "ServidorCalculadora" (parte izquierda de NetBeans) y ahí se hace click derecho encima del proyecto, aparece un conjunto de opciones y se selecciona:
Deploy
Esto se hace para que pueda arrancar nuestro web service, y a partir de este momento ya puede ser invocado por cualquier programa.
Para verificar el funcionamiento de nuestro web service hacemos lo siguiente: Dentro del proyecto de "ServidorCalculadora" existe una carpeta que se llama "Web Services", hacemos click en esta sección y aparecen los web services de este proyecto:
Calculadora
Se selecciona con el cursor el web service "Calculadora" y se pone el cursor encima, se hace click derecho y despliega varias opciones de las cuales se selecciona:
Test Web Service
y arranca el navegador que tenemos por default con una página web que tiene la dirección en la parte superior:
http://localhost:8080/ServidorCalculadora/CalculadoraService?Tester
Que es la localización del web service y en la página web ser observa lo siguiente:
CalculadoraService Web Service Tester
This form will allow you to test your web service implementation (WSDL File)
To invoke an operation, fill the method parameter(s) input boxes and click on the button labeled with the method name.
Methods :
public abstract int proyecto_calculadora.Calculadora.suma(int,int)
suma ( , )
public abstract int proyecto_calculadora.Calculadora.resta(int,int)
resta ( , )
public abstract int proyecto_calculadora.Calculadora.multiplicacion(int,int)
multiplicacion ( , )
public abstract int proyecto_calculadora.Calculadora.division(int,int)
division ( , )
En esta página se pueden enviar datos al web service para probar su funcionamiento, por ejemplo tecleamos 4 y 7 como parámetros del método suma:
suma ( 4, 7 )
y al hacer click en "suma" se envían los datos al web service, apareciendo en pantalla los datos que se envían, los datos que se regresan y las tramas del protocolo SOAP para el envío y recepción de los datos comprobando de esta manera el funcionamiento del web service.
Parte 2) Crear código en un cliente para accesar al Web Service
Se crea un proyecto nuevo:
Java -> Java Application
Hacer click en:
Siguiente
Nos pregunta el nombre del proyecto y tecleamos:
ClienteCalculadora
Y luego hacemos click en:
Terminar
Nos genera el programa ClienteCalculadora.java que contiene el siguiente codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clientecalculadora;
/**
*
* @author rogelio
*/
public class ClienteCalculadora {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
Hacemos click derecho encima del proyecto (ClienteCalculadora) y seleccionamos:
Nuevo -> Web Service Client
Ahora escribimos la direccion de donde se encuentra nuestro Web Service (Servidor):
WSDL URL: http://localhost:8080/ServidorCalculadora/Calculadora?WSDL
Y hacemos click en:
Terminar
Dentro de nuestro proyecto (ClienteCalculadora) aparecerá una nueva carpeta:
Web Services Referencias
Y dentro de ella aparecerá nuestra clase que hace referencia al Web Service:
Calculadora
Ahora posicionamos nuestro cursor dentro de nuestro programa java (ClienteCalculadora.java) antes del programa principal (main). En esa posición hacemos click derecho y seleccionamos:
Insertar código..
Aparece una ventana con opciones y seleccionamos:
Call web service operation
Aparece otra ventana con nuestros Web Services disponibles y hacemos click en:
Calculadora
Y se despliegan las clases disponibles, y hacemos click en:
Calculadora Port
Y se despliegan los métodos disponibles, y hacemos click en:
suma
Y luego hacemos click en:
Aceptar
Y nos inserta el siguiente método que implementa la llamada a nuestro Web Service:
private static int suma(int arg0, int arg1) {
proyecto_calculadora.Calculadora_Service service = new proyecto_calculadora.Calculadora_Service();
proyecto_calculadora.Calculadora port = service.getCalculadoraPort();
return port.suma(arg0, arg1);
}
Por último, agregamos al main una llamada al método que se acaba de agregar, enviándole 2 números para que sean procesados por el Web Service y que nos imprima lo que nos regresa, en este caso la suma de los 2 números. La línea que se agrega dentro de nuestro main es:
System.out.println("La suma es: "+suma(3,4));
Nuestro código final queda de la siguiente manera (ya sólo queda compilar y ejecutar nuestro ClienteCalculadora).
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clientecalculadora;
/**
*
* @author rogelio
*/
public class ClienteCalculadora {
/**
* @param args the command line arguments
*/
private static int suma(int arg0, int arg1) {
proyecto_calculadora.Calculadora_Service service = new proyecto_calculadora.Calculadora_Service();
proyecto_calculadora.Calculadora port = service.getCalculadoraPort();
return port.suma(arg0, arg1);
}
public static void main(String[] args) {
// TODO code application logic here
System.out.println("La suma es: "+suma(3,4));
}