You are on page 1of 47

Manual para Crear Web Service en NetBeans

6.8
MANUAL DE USUARIO PARA LA IMPLEMENTACION DE WEB SERVICE
SOA- ARQUITECTURA ORIENTADA A SERVICIOS

1. INTRODUCCION
La Arquitectura Orientada a Servicios (en ingls Service Oriented
Architecture), es un concepto de arquitectura de software que define la
utilizacin de servicios para dar soporte a los requisitos del negocio.
Permite la creacin de sistemas altamente escalables que reflejan el
negocio de la organizacin, a su vez brinda una forma bien definida de
exposicin

invocacin

de

servicios

(comnmente

pero

no

exclusivamente servicios web), lo cual facilita la interaccin entre


diferentes sistemas propios o de terceros.
SOA define las siguientes capas de software:

Aplicaciones bsicas - Sistemas desarrollados bajo cualquier


arquitectura o tecnologa, geogrficamente dispersos y bajo cualquier
figura de propiedad;

De exposicin de funcionalidades - Donde las funcionalidades de


la capa aplicativa son expuestas en forma de servicios (servicios
web);

De integracin de servicios - Facilitan el intercambio de datos entre


elementos de la capa aplicativa orientada a procesos empresariales
internos o en colaboracin;

De composicin de procesos - Que define el proceso en trminos


del negocio y sus necesidades, y que vara en funcin del negocio;

De entrega - donde los servicios son desplegados a los usuarios


finales.

SOA proporciona una metodologa y un marco de trabajo para


documentar las capacidades de negocio y puede dar soporte a las
actividades de integracin y consolidacin.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
2. DEFINICIONES PREVIAS A SOA
SERVICIO
Comportamiento definido y acordado que puede ser implementado y
provisto por un componente para ser usado por otro.
PARTES DE UN SERVICIO

SOA
Coleccin de servicios se que se comunican entre ellos.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8

3. DISEO Y DESARROLLO DE SOA

La metodologa de modelado y diseo para aplicaciones SOA se


conoce como anlisis y diseo orientado a servicios.

La arquitectura orientada a servicios es tanto un marco de trabajo


para el desarrollo de software como un marco de trabajo de
implementacin.

Para que un proyecto SOA tenga xito los desarrolladores de


software deben orientarse ellos mismos a esta mentalidad de crear
servicios comunes que son orquestados por clientes o middleware
para implementar los procesos de negocio. El desarrollo de sistemas
usando SOA requiere un compromiso con este modelo en trminos
de planificacin, herramientas e infraestructura.

En un ambiente SOA, los nodos de la red hacen disponibles sus


recursos

otros

participantes

en

la

red

como

servicios

independientes a los que tienen acceso de un modo estandarizado.

La mayora de las definiciones de SOA identifican la utilizacin de


Servicios Web (empleando SOAP y WSDL) en su implementacin, no
obstante se puede implementar SOA utilizando cualquier tecnologa
basada en servicios.

4. DIFERENCIAS CON OTRAS ARQUITECTURAS

Al contrario de las arquitecturas orientado a objetos, las SOAs estn


formadas por servicios de aplicacin dbilmente acoplados y
altamente interoperables.

Para comunicarse entre s, estos servicios se basan en una definicin


formal independiente de la plataforma subyacente y del lenguaje de
programacin (p.ej., WSDL).

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8

La definicin de la interfaz encapsula (oculta) las particularidades de


una implementacin, lo que la hace independiente del fabricante, del
lenguaje de programacin o de la tecnologa de desarrollo (como
Plataforma Java o Microsoft.NET). Con esta arquitectura, se pretende
que

los

componentes

de

software

desarrollados

sean

muy

reutilizables, ya que la interfaz se define siguiendo un estndar; as,


un servicio C# podra ser usado por una aplicacin Java. En este
sentido, ciertos autores definen SOA como una Sper-Abstraccin.
5. COMPONENTES DE SOA

Servicios: Entidades lgicas - Contratos definidos por una o ms


interfaces pblicas.

Service provider: Entidad de software que implementa una


especificacin de servicio.

Service consumer (o requestor): Entidad de software que llama a


un service provider. Tradicionalmente se lo llama cliente. Puede ser
una aplicacin final u otro servicio.

Service locator: Tipo especfico de service provider que acta como


registry y permite buscar interfaces de service providers y sus
ubicaciones.

Service broker: Tipo especfico de service provider que puede pasar


requerimientos de servicios a otros service providers.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8

DEMO APLICACIN WEB SERVICE CON NET BEANS


CONVERSOR DE TEMPERATURAS Y
UNIDADES DE LONGITUD
A continuacin explicaremos paso a paso la forma de crear servicios
Web.
1.- Supongamos que queremos implementar un Cliente Web Service
(ClientWebService) que nos permita la conversin de Grados Celcius a
Grados Farenheit y Grados Kelvin y viceversa, como tambin la
conversin de unidades de medida de metro a Km y viceversa, para ello
usaremos el WebServiceConversor.
Para

ello

implementaremos

el

Web

Service

Calculadora

(WebServiceCalculadora) que nos ofrezca las operaciones principales


de Suma, Resta, Multiplicacin y Divisin.
Y

tambin

implementaremos

el

(WebServiceConversor) el cual tendr

Web

Service

conversor

dos procesos de

lgica

covertLongitud con el cual haremos uso del WebServiceCalculadora y el

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
segundo mtodo ConvertTemperatura, este ultimo tendr su propio
desarrollo local.
Vamos a detallar cules son los requerimientos necesarios para la
implementacin de esta aplicacin:

NetBeans 6.8 IDE

jdk-7

GlassFish que viene incorporado en NetBeans.

Previos conocimientos de HTML y JSP.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
A continuacin se muestra un ejemplo de modelado UML para el
escenario presentado:
Diagrama de Clases

Service Conversion
Conv. Mt-Km
Conv. Km-Dec

<<web Service>>
Calculadora
Service Calculo
Suma
Resta
Division

Firewall

+Suma(int a, int b): int


+Resta(int a, int b): int
+Multiplicacion(int a, int b): int
+Dividir(int a, int b): float

<<Web Service>>
Conversor
+ConvertTemperatura(float tempreratura, byte escalaOrg, byte escalaDest): Float
+ConvertLongitud(float longitud, byte escalaorg, byte escalaDest): Float

Interne

Web Service Cliente


+index.jsp()
+procesar.jsp()
+calcular.jsp()

Cliente
Brows er
Movil
Aplicacion escritorio

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
Sin ms prembulos crearemos un Web Service para esto comenzaremos
iniciando NetBeans 6.8
1. En Window 7:
Inicio Todos los Programas NetBeans IDE6.8

2. Esperamos que cargue la aplicacin de NetBeans

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
3. Una vez que cargo NetBeans hacemos click sobre Archivo Proyecto
Nuevo

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
4. Se abrir una nueva ventana y hacemos click en:
java web web aplicationsiguiente

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
5. Ingresamos el nombre del WebService en este caso se llamara
WebServiceCalculadora

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
6. Ahora escogemos una ubicacin donde guardaremos nuestro
proyecto:
Project Location: D:\Arquitectura de software\proyecto\webservice
Luego damos click en siguiente

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
7. En esta ventana escogemos el servidor
Server Personal GlassFish v3 Domain Terminar

8. Luego sobre el proyecto realizamos las siguientes operaciones


WebServiceCalculadora clic derecho NuevoWebService

9. Ingresamos un nombre, en este caso calculadora


Nombre de Clase: calculadora

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
10. Luego definimos el package y colocaremos nosotros org.logica , esto
es independiente de cada programador
Package : org.logica terminar

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
11. Este es el resultado del anterior paso se creo nuestro WebService
calculadora, en el package org.logica
En esta pantalla le damos click en la pestaa Design

12. A continuacin deberemos agregar nuevas operaciones para


agregar nuevos servicios
dar click en Add Operation

13. En Name colocamos el nombre del servicio que corresponde a un


web method que en este caso es Resta, el cual retornar un dato de
tipo int y recibir dos parmetros que corresponde a los datos de
una Resta los cuales son de tipo int.
Del mismo modo se creara el web method Suma, multiplicacin y
divisin, los cuales recibirn sus respectivos parmetros.
Los metodos que adicionados son:
Suma(int a, int b): int
Resta (int a, int b): int
Muntiplicacion(float a, float b): float
Division(float a, float b):float
En este paso no olvidemos de modificar los return en el codigo fuente
con sus respectivas operaciones que corresponde a casa metodo.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8

13. En Name colocamos el nombre del servicio que corresponde a un web

method que en este caso es Resta, el cual retornar un dato de tipo int y
recibir dos parmetros que corresponde a los datos de una Resta los cuales
son de tipo int.
Del mismo modo se creara el web method Suma, multiplicacin y divisin, los
cuales recibirn sus respectivos parmetros.
Los metodos que adicionados son:
Suma(int a, int b): int
Resta (int a, int b): int
Muntiplicacion(float a, float b): float
Division(float a, float b):float
En este paso no olvidemos de modificar los return en el cdigo fuente con sus
respectivas operaciones que corresponde a cada mtodo.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
14. A continuacin la pantalla que mostrara luego de crearse los web
method
Seguidamente debemos ejecutar la aplicacin para levantar el servidor
GlassFish e implementar los mtodos que acabamos de crear esto de
acuerdo al servicio que se quiera ofrecer

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
15. Bueno ahora procedemos a testear los servicios
Sobre Calculadora le damos clic derecho Test Web
Service

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
16. Seguidamente aparecer una pantalla Web mostrando los servicios

implementados.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
17. Cuando ejecutamos algn mtodo, generamos un cdigo que se
muestra, El nombre del mtodo invocado, los datos o parmetros utilizados,
y un codigo xml, solo es visible en el testeo.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
AHORA VAMOS A CREAR EL SERVIDOR
WEBSERVICECONVERSOR
1. Seguimos los pasos del anterior servicio del 3 al 7 con la creacin del
proyecto WebServiceConversor
2. en este paso crearemos el Web Service Cliente para comunicarnos con en
WebServiceCalculadora
Clic Derecho en ClientWebService Nuevo Web Service Client

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
3. En este paso nos pide que busquemos la localizacion de WSDL , para lo
cual daremos un clic en Browse

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
4. En este caso nosotros tenemos disponible el WebServiceCalculadora para
lo cual escogemos la clase que vamos a necesitar.

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
5. En este paso tenemos las Fuentes generadas del WebServiceCalculadora
como tambin Web Service References

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
6. Continuamos el paso 8 al 13 del WebServiceCalculadora creando los
siguientes WebMethod con sus respectivos parmetros en el
WebServiceConversor.
- ConvertLongitud(flota longitud, byte escalaOrg, byte escalaDest)
- ConvertTemperature (flota longitud, byte escalaOrg, byte escalaDest)
Lo cual nos quedara de la siguiente manera

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
La Implementacin en el mtodo convertLongitud es la siguiente
@WebMethod(operationName = "convertLongitud")
public float convertLongitud(@WebParam(name = "longitud")
float longitud, @WebParam(name = "escalaOrg")
byte escalaOrg, @WebParam(name = "escalaDest")
byte escalaDest) {
//TODO write your implementation code here:
// desde aqui enpieza la programacion del metodo lo anterior es
generado
//comunicacion con el WebServiceCalculadora
//Son las llamadas que hacemos a la implementacion del
WebServiceCalculadora
//Esta parte es generico, es la misma manera de construir en todos los casos
que se
//invoque a un Web Service
org.logica.CalculadoraService service = new
org.logica.CalculadoraService();
org.logica.Calculadora calculadora = service.getCalculadoraPort();
switch(escalaOrg){
case METRO:{
switch (escalaDest) {
case KILOMETRO:
return calculadora.dividir(longitud, 1000f);
}
}break;
case KILOMETRO:{
switch (escalaDest) {
case METRO:
return calculadora.multiplicar(longitud, 1000f);
}
}break;
}
return longitud;
}

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
La Implementacin en el mtodo convertTemperatura, tiene su
logica local y es la siguiente
@WebMethod(operationName = "convertTemperature")
public float convertTemperature(@WebParam(name = "temperatura")
float temperatura, @WebParam(name = "escalaOrg")
byte escalaOrg, @WebParam(name = "escalaDest")
byte escalaDest) {
//TODO write your implementation code here:
//Este proceso no esta imprementado con WebServiceCalculadora
//Su implementacion es local
switch (escalaOrg) {
case CELSIUS: {
switch (escalaDest) {
case FARENHEIT:
return ((180 * (temperatura / 100)) + 32);
case KELVIN:
return (temperatura + 273);
}
}
break;
case FARENHEIT: {
switch (escalaDest) {
case CELSIUS:
return (((temperatura - 32) / 180) * 100);
case KELVIN:
return ((100 * ((temperatura - 32) / 180)) + 273);
}
}
break;
default: {
switch (escalaDest) {
case CELSIUS:
return (temperatura - 273);
case FARENHEIT:
return ((180 * ((temperatura - 273) / 100)) + 32);
}
}
}
return temperatura;
}

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
7. El testeo de los mtodos serian vistos de la siguiente manera:

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
AHORA VAMOS A CREAR EL SERVIDOR CLIENTE
1. Archivoproyecto Nuevo

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
2. En este paso escogemos Java Web Web Application

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
3. Colocamos el nombre del proyecto
Project Name: ClientWebService
Project Location: Direccion donde se creara el web service en nuestro caso
ser D:\Arquitectura de software\proyecto\webservice

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
4. EN este paso escogemos el servidor Personal Glassfish v3 Domain que lo
trae por defecto Netbeans

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
5. esta es la pantalla que nos mostrara despus de crear el proyecto

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
6. en este paso crearemos el Web Service Cliente para comunicarnos con en
WebServiceConversor
Clic Derecho en ClientWebService Nuevo Web Service Client

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8

7. En este paso nos pide buscar el WSDL le damos al Browser

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
8. Escogemos el WebServiceConversor y la clase que vamos a utilizar en
nuestro caso es Conversor le damos aceptar y luego terminar

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
9. Tenemos las fuentes generadas y los web Service References

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
10. En este paso empezamos creando las Web jsp, dentro de directorio
Web->WEB-INF le damos clic derecho nuevo-> jsp este procedimiento
hacemos para Calcular.jsp y Procesar.jsp, la implementacion de detallamos
a continuacin.
No olvidemos que tenemos las siguientes web a implementar index.jsp,
procesar.jsp y calcular.jsp

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
Empezaremos detallando calcular.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<link rel="stylesheet" type="text/css" href="cake.generic.css">
<title>Cliente Web</title>
</head>
<body>
<div id="header">
<h1>Unidades de Longitud</h1>
</div>
<div id="content">
<%
String longitud = request.getParameter("longitud");
if (longitud.matches("\\d+")){
byte escalaOrg =
Byte.parseByte(request.getParameter("escalaOrg"));
byte escalaDest =
Byte.parseByte(request.getParameter("escalaDest"));
try {
org.logica.ConversorService service = new
org.logica.ConversorService();
org.logica.Conversor port = service.getConversorPort();
// TODO initialize WS operation arguments here
float temp = Float.parseFloat(longitud);
// TODO process result here
float result =
port.convertLongitud(temp,escalaOrg,escalaDest);
out.println("Resultado = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
}
else{
%>
<p>Ingrese una temperatura v&aacute;lida</p>
<a href="index.jsp">Volver</a>
<% } %>
</div>
<div id="footer">
Arquitectura de Software
</div>
</body>
</html>

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
procesar.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<link rel="stylesheet" type="text/css" href="cake.generic.css">
<title>Cliente Web</title>
</head>
<body>
<div id="header">
<h1>Unidades de temperatura</h1>
</div>
<div id="content">
<%
String temperatura = request.getParameter("temperatura");
if (temperatura.matches("\\d+")){
byte escalaOrg =
Byte.parseByte(request.getParameter("escalaOrg"));
byte escalaDest =
Byte.parseByte(request.getParameter("escalaDest"));
try {
org.logica.ConversorService service = new
org.logica.ConversorService();
org.logica.Conversor port = service.getConversorPort();
// TODO initialize WS operation arguments here
float temp = Float.parseFloat(temperatura);
// TODO process result here
float result =
port.convertTemperature(temp,escalaOrg,escalaDest);
out.println("Resultado = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
}
else{
%>
<p>Ingrese una temperatura v&aacute;lida</p>
<a href="index.jsp">Volver</a>
<% } %>
</div>
<div id="footer">
<a href="index.jsp">Volver</a>
Arquitectura de Software
</div>
</body>
</html>

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
y por ultimo detallaremos la implementacion de index.jsp
Se agrego el archivo cake.generic.css para los estilos de las paginas dentro
del directorio donde se encuentras las web en proceso de implementacion
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<link rel="stylesheet" type="text/css" href="cake.generic.css">
<title>Cliente Web "Web Service"</title>
</head>
<body>
<div id="header">
<h1>Unidades de Temperatura</h1>
</div>
<div id="content">
<form action="procesar.jsp" method="get">
<fieldset>
<legend>Par&aacute;metros</legend>
<div>
<label>Temperatura</label>
<input name="temperatura" type="text" value="">
<label style="text-align: right">De</label>
<select name="escalaOrg" size="1">
<option value="0">Celsius</option>
<option value="1">Farenheit</option>
<option value="2">Kelvin</option>
</select>
<label style="text-align: right">A</label>
<select name="escalaDest" size="1">
<option value="0">Celsius</option>
<option value="1">Farenheit</option>
<option value="2">Kelvin</option>
</select>
</div>
<div>
<input type="submit" value="Convertir">
</div>
</fieldset>
</form>
<form action="calcular.jsp" method="get">
<fieldset>
<legend>Par&aacute;metros</legend>
<div>
<label>Longitud</label>
<input name="longitud" type="text" value="">
<label style="text-align: right">De</label>
<select name="escalaOrg" size="1">
<option value="0">Metro</option>
<option value="1">Km</option>

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
</select>
<label style="text-align: right">A</label>
<select name="escalaDest" size="1">
<option value="0">Metro</option>
<option value="1">Km</option>
</select>
</div>
<div>
<input type="submit" value="Convertir">
</div>
</fieldset>
</form>
</div>
<div id="footer">
Arquitectura de Software
</div>
</body>
</html>

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
11. para lo cual tenemos la siguente pantalla

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
12. Haciendo correr nuestra aplicacin tendremos la pgina de la siguiente
manera con el convertidor de temperatura y de Longitud

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
14. El resultado se emitir en una formato de pagina como se muestra en la
siguiente imagen

Arquitectura de Software

Manual para Crear Web Service en NetBeans


6.8
15. En hora buena ya hemos creado un Web Service listo para usarse.

Arquitectura de Software

You might also like