En este post vamos a construir un Servicio Web bajo el protocolo SOAP (Simple Object Access Protocol) el cual básicamente se define cómo la comunicación de dos objetos en diferentes procesos por medio de intercambio de datos XML. Nuestro Web Service contara con una sola operación para convertir números decimales a binarios por lo que contara con un parámetro de entrada y uno de salida.
Necesitamos
Nivel: Intermedio – Avanzado
Tiempo: 30 minutos
Paso 1. Crear el proyecto
Archivo → Nuevo proyecto… → Categoría: Java Web → Proyecto: Aplicación Web → presionamos [Siguiente] para continuar.
A continuación en Nombre de Proyecto, escribimos «WSConversion«, presionamos [Siguiente]. Como servidor, seleccionamos «GlashFish Server«, no utilizamos ningún tipo de framework así que presionamos [Terminar] para crear el proyecto web.
Paso 2. Servicio Web
Clic derecho sobre el proyecto → new → otros.. → en categoría seleccionamos «Web Service» → en FileTypes seleccionamos «Web Service» y después presionamos [Siguiente]
En nombre del servicio web, escribimos el mismo que el del proyecto «WSConversion«, escribimos también la estructura de paquetes «org.demo.soap«, como utilizamos el servidor GlassFish, debemos activar la opción «Implement Web Service as a Stateless Session Bean«, para finalizar presionamos el botón [Terminar]
Nuestro proyecto queda de la siguiente forma:
Paso 3. Agregar operaciones
Por defecto al crear el Servicio Web, se agrega una operación llamada Hello (el que podemos borrar en cualquier momento).
Presiona la pestaña «Design» para entrar en modo diseño, aqui podemos observar también la operación Hello pero de un modo gráfico, para eliminarla, solo debemos hacer clic derecho sobre este y elegir «Remove Operation«.
Para agregar una nueva operación, clic en [Add Operation…], en la ventana que aparece, escribimos el nombre de la operación «DecToBin«, escribimos el tipo de valor de retorno, en este caso es un String, así que dejamos como esta. Presionando el boton [Add] podemos agregar parámetros de entrada, para esta operación, solo necesitamos un parámetro llamado «numero» de tipo entero «int«, presionamos [Aceptar] para crear la operación.
Presionamos [Source] para poder ver el código generado, nuestra operación se creo pero esta vacío. debemos escribir el código necesario para su funcionamiento.
package org.demo.soap; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.ejb.Stateless; @WebService(serviceName = "WSConversion") @Stateless() public class WSConversion { /** * Web service operation */ @WebMethod(operationName = "DecToBin") public String DecToBin(@WebParam(name = "numero") int numero) { //TODO write your implementation code here: return null; } }
Nuestra operación DecToBin queda de la siguiente forma:
@WebMethod(operationName = "DecToBin") public String DecToBin(@WebParam(name = "numero") int numero) { String binario = ""; while (numero > 0) { binario = numero % 2 + binario; numero /= 2; } return binario; }
Paso 4. Test
Nuestro Servicio Web esta listo y debemos probar su funcionamiento. Lo primero que debemos hacer es levantar el Servidor GlassFish, para ello, clic derecho sobre el proyecto → deploy.
Para probar el Web Service, clic derecho sobre nuestro Servicio Web → «Test Web Service», este iniciara en el navegador que tengamos configurado en nuestra PC.
Si escribimos un numero (Ej.: 234) y presionamos el botón «decToBin» tendremos como resultado
Pero no solo nos muestra el resultado de la operación, sino también nos muestra en formato XML como realizar una consulta y como retorna el resultado.
SOAP Request
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <S:Body> <ns2:DecToBin xmlns:ns2="http://soap.demo.org/"> <numero>234</numero> </ns2:DecToBin> </S:Body> </S:Envelope>
SOAP Response
<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <S:Body> <ns2:DecToBinResponse xmlns:ns2="http://soap.demo.org/"> <return>11101010</return> </ns2:DecToBinResponse> </S:Body> </S:Envelope>
En posteriores post implementaremos proyectos para consumir este servicio web ya sea en java o c#
Enjoy!!!
Para quienes hayan trabajado con JMF saben que es una librería de Java desarrollada por Sun Microsystems para facilitar[...]
Un servicio web (Web Services) es un sistema de software en la web que nos ofrece la posibilidad de realizar una o múlti[...]
Primero que nada Studio Ghibli es un estudio de animación japonés fundado en 1985 por Hayao Miyazaki, Isao Takahata y To[...]
En este post crearemos un swing Label personalizado que tendrá la forma circular en su borde, con esto obtendremos un bo[...]
Zoom es un software de videollamadas y reuniones virtuales, accesible desde computadoras de escritorio, computadoras por[...]
A continuación tenemos una clase que nos permite arrastrar un archivo de Excel (*.xlsx) y cargar su contenido en una tab[...]