Primero demos una definición dada por la W3C (Permitanme en ingles)
"A web service is a software application identified by a URI, whose interfaces and binding are capable of being defined, described and discovered by XML artifacts and supports direct interactions with other
software applications using XML based messages via internet-based protocols"
Un WS esta compuesto por tres componentes principales:
1.- Búsqueda y localización de servicios
UDDI (Universal Discovery, Description and Integration)
2.- Descripción del servicio
WSDL (Web Service Description Language)
3.- Codificación de datos y mensajes
SOAP (Simple Object Access Protocol)
Manos a la obra.
Primero obtenemos el Ide (herramienta) NetBeans de la pagina http://www.netbeans.org/ de forma gratuita además de una versión CD que se puede pedir.
Netbeans vienen con Tomcat 5, nosotros necesitamos un contenedor j2ee . Usaremos uno de Sun:
Sun Java System Application Server Enterprise Edition con licencia o
Sun Java System Application Server Platform Edition 9 bajo licencia GlassFish.
Una vez instalado estos procedemos a crear nuestro primer Web Service.
Paso 1:
Primero debemos adicionar la referencia de Sun Application Server en Netbeans, para ello nos vamos a la opción Tools del menu principal luego a Server Manager ahí con el botón add Server nos muestra una pantalla donde podemos es coger un servidor, escogemos Sun Java System Application Server, luego presionamos el botón Next nos despliega una pantalla donde debemos establecer donde esta instalado el servidor en Platform Location haciendo correctamente esto nos muestra el dominio a usar por defecto, luego el botón Next y nos muestra una pantalla para registrar el login y password que usamos en la instalación del servidor de aplicaciones y con eso finalizamos.

Paso2:
Creamos un nuevo proyecto File/New Proyect luego escogemos categoria Web y Web Apliaction, luego el botón Next, luego nos desplegara una pantalla donde le damos el nombre al proyecto escribamos "PrimerWS" y luego escogemos con que servidor trabajaremos en la opción Server escogemos Sun Java System Application Server, luego el botón Next y el botón Finish.

Paso 3:
Ya tenemos creado nuestro proyecto ahora botón derecho del mouse en el nombre del proyecto escogemos la opción New luego Web Service…. Nos desplegara una pantalla donde debemos dar el nombre a nuestro WS escribamos “WS_Suma” luego debemos escribir el nombre de nuestro paquete de programas en la opción Package escribimos “pk_para_sumar” luego el botón Finish.
Paso 4:
Ya tenemos creado nuestro WS ahora dentro del proyecto nos vamos a la carpeta de Web Service extendiendo vemos nuestro Ws que creamos, en nuestro caso WS_Suma, sobre este con botón derecho del mouse escogemos la opción Add operation… donde nos despliega una pantalla donde registramos el método que usaremos en nuestro WS es decir creamos el procedimiento que se llamará en nuestro WS cuando lo publiquemos. . Para ello escribimos el nombre de nuestro método “sumar” en name luego en return type escogemos el valor que retornara nuestro método en nuestro caso escogemos int.
Luego necesitamos introducir dos parámetros, para ello presionamos el botón add donde nos desplegara una pantalla ahí escogemos tipo de valor del primer parámetro escogemos int y luego escribimos el nombre “valor1”. Presionando el botón Ok ya tenemos nuestro primer parámetro.
De la misma forma creamos el segundo parámetro con el nombre de “valor2”.

Y finalmente presionado el boton OK ya tenemos nuestro procedimiento creado
public int sumar(int valor1, int valor2) throws java.rmi.RemoteException {
// TODO implement operation
return 0;
}
Si no lo pueden ver. Se van en el proyecto a la carpeta Source Packages
en el paquete pk_para_sumar en la clase WS_SumaImpl.java
Ahora lo modificamos de la siguiente forma:
public int sumar(int valor1, int valor2) throws java.rmi.RemoteException {
// TODO implement operation
int resultado = valor1+valor2;
return resultado;
}
Y listo creado nuestro WS para sumar dos números enteros.
Paso 5:
Antes de hacer correr presionamos botón derecho del mouse en el nombre del proyecto y escogemos la opción properties nos desplegara un pantalla nos vamos ala opción run y ahí en la opción Relative URL: escribimos “/WS_Suma?WSDL” es decir el nombre de nuestro WS y ?WSDL para que nos despliegue el archivo xml WSDL que describe nuestro WS.

Ahora si hacemos correr el proyecto.
Se ejecutara dentro de un browser con unURL http://localhost:8080/PrimerWS/WS_Suma?WSDL

CLIENTE WS.
Paso1.-
Creamos un nuevo proyecto File/New Proyect luego escogemos categoría General y Java Application, luego el botón Next, luego nos desplegara una pantalla donde le damos el nombre al proyecto escribamos " ClienteWS" y luego el botón Finish.
Paso2.-
Nos posicionamos en el nombre del proyecto ClienteWS, botón derecho del mouse la opción New y luego Web Service Client… se despliega un pantalla donde escribimos el URL del WSDL que deseamos consumir es decir http://localhost:8080/PrimerWS/WS_Suma?WSDL luego presionamos el botón Retrieve WSDL para verificar el mismo. Luego en la opción Package escribimos el nombre de un nuevo paquete “consumo_suma” y finalmente el botón Finish.

Paso3.-
Ya tenemos creado nuestra referencia de cliente del WS. Para hacer una prueba nos vamos a la carpeta Web Service Referentes del proyecto, expandiendo vemos que existe WS_Suma expandiendo nuevamente vemos WS_SumaSEIPort y luego el método sumar en este nos posicionamos y presionando el botón derecho del Mouse tenemos la opción Test Operation la cual nos desplegara una pantalla Test Web Service Operation en donde vemos los parámetros del WS, introduciendo los valores luego presionado el botón Submit vemos que nos da el resultado consumiendo el WS según los parámetros que le dimos.


Paso4.-
Como vemos que funciona ahora adicionamos código para llamar al WS, para ello nos vamos al programa Main.java en la parte donde se visualiza
// TODO code application logic here
Presionando botón derecho del Mouse escogiendo la opción
Web Service Client Resources luego Call Web Service Operation se desplegara una pantalla donde se puede seleccionar el método que se codificara en nuestro caso sumar luego el botón Ok
Vemos que se creo el código para llamar al WS.
Hacemos unos ajustes al código y tenemos:
public static void main(String[] args) {
try {
// This code block invokes the WS_SumaSEIPort:sumar operation on web service
consumo_suma.WS_Suma wS_Suma = new consumo_suma.WS_Suma_Impl();
consumo_suma.WS_SumaSEI wS_SumaSEIPort = wS_Suma.getWS_SumaSEIPort();
//wS_SumaSEIPort.sumar(/* TODO enter operation arguments*/);
int resultado = wS_SumaSEIPort.sumar(10,11);
System.out.println("Invocando al SW el resultado es "+Integer.toString(resultado));
} catch(javax.xml.rpc.ServiceException ex) {
// TODO handle ServiceException
} catch(java.rmi.RemoteException ex) {
// TODO handle remote exception } catch(Exception ex) {
// TODO handle custom exceptions here }
}
Luego hacemos correr el programa.
1 comentario:
Excelente, muy concreto y facil de segur paso a paso
Publicar un comentario