3. Desarrollo de Servicios Web en Netbeans.pdf

6

Click here to load reader

Transcript of 3. Desarrollo de Servicios Web en Netbeans.pdf

Page 1: 3. Desarrollo de Servicios Web en Netbeans.pdf

Gestión de Registros y Respaldos en el

Contexto Hospitalario.

Proyecto de grado

Edición 2009

Desarrollo de Servicios

Web en NetBeans 6.7

Supervisores: Responsables: Estudiantes:

María Eugenia Corti

Ariel Sabiguero Julio Carrau

Gustavo Perez Martín Calabria Gonzalo Perretti

Page 2: 3. Desarrollo de Servicios Web en Netbeans.pdf

Gestión de Registros y Respaldos en el Contexto Hospitalario

Desarrollo de Servicios Web en NetBeans 6.7 2

Contenido

1. Objetivo ....................................................................................................................................... 3

2. Servicio Web ............................................................................................................................... 3

3. Cliente del Servicio Web............................................................................................................ 5

Page 3: 3. Desarrollo de Servicios Web en Netbeans.pdf

Gestión de Registros y Respaldos en el Contexto Hospitalario

Desarrollo de Servicios Web en NetBeans 6.7 3

1. Objetivo

El presente documento tiene como objetivo describir brevemente los pasos necesarios para

construir servicios web utilizando la herramienta Netbeans 6.7. Se espera que sea de

utilidad a los desarrolladores del Hospital de Clínicas, tanto a la hora de crear nuevos

servicios web como crear clientes de los mismos.

2. Servicio Web

Para crear un ws primero hay que crear un proyecto web y luego new -> web-service

indicando el nombre y el paquete donde se guardará el .java. Esto crea una carpeta llamada

‘Web Service’ en donde aparece la definición del ws, y en ‘Source Packages’ encontramos

el paquete que contiene el .java para el ws. Este .java se tiene que modificar para agregar

las operaciones a exponer en el ws. El esqueleto de un ws es el siguiente:

package com.ws; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService() public class WSSumador { @WebMethod(operationName = "sumar", action = "sumar") public int sumar(@WebParam(name="a") int a, @WebParam(name="b") int b) { return a + b; } @WebMethod(operationName = "restar", action = "restar") public int restar(@WebParam(name="a") int a, @WebParam(name="b") int b) { return a - b; } /** Generado con el wizard **/ @WebMethod (operationName = "multiplicar") public int multiplicar (@WebParam(name="x") int a, @WebParam(name="b") int b) { return a * b; } }

Page 4: 3. Desarrollo de Servicios Web en Netbeans.pdf

Gestión de Registros y Respaldos en el Contexto Hospitalario

Desarrollo de Servicios Web en NetBeans 6.7 4

La anotación @Webservice() debe ponerse antes de declarar la clase.

La anotación @WebMethod debe anteceder a cada método que queremos exponer,

indicando el nombre del método y la acción. En general estos dos campos tienen el mismo

nombre.

La anotación @WebParam debe anteceder a cada parámetro de cada función que

queremos exponer indicando el nombre con el que será expuesto dicho parámetro. El

nombre puede ser distinto al nombre de la variable, como sucede en el primer parámetro del

método multiplicar.

Para agregar más ws al proyecto se deben seguir los mismos pasos.

En las propiedades del proyecto debemos indicar en qué servidor de aplicación va a correr

el ws (Tomcat, JBoss, etc…) y de acuerdo a esto se genera un wsdl con el puerto en el que

está disponible dicho servidor.

Page 5: 3. Desarrollo de Servicios Web en Netbeans.pdf

Gestión de Registros y Respaldos en el Contexto Hospitalario

Desarrollo de Servicios Web en NetBeans 6.7 5

3. Cliente del Servicio Web

Los clientes de un ws pueden ser varios, aquí se muestra como consumir un ws desde un

cliente web. Para implementarlo se debe crear un proyecto web. En la página jsp de

bienvenida se agrega el siguiente código para instanciar un Servlet cuando se pulsa el botón

‘Aceptar’:

<body>

<h1>Calculator Service</h1>

<form name="Submit" action="ClientServlet">&nbsp;

<input type="text" name="value1" value="2" size="3"/>+

<input type="text" name="value2" value="2" size="3"/>=

<input type="submit" value="Get Result" name="GetResult" />

</form>

</body>

Luego hay que agregar una referencia al ws que creamos anteriormente. Para ello, File ->

new -> Web Service Client. Aquí indicamos en que proyecto se encuentra el ws, en este

caso el ws está en el proyecto ‘WebService’. A continuación aparecerá en la carpeta ‘Web

Service References’ una nueva referencia a ‘WSSumador’. Resta consumir el ws desde el

Servlet, cuyo código es el siguiente:

package com.cliente; import com.ws.WSSumador; import com.ws.WSSumadorService; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.rpc.soap.SOAPFaultException; import javax.xml.ws.WebServiceRef; public class ClientServlet extends HttpServlet { @WebServiceRef(wsdlLocation = "http://localhost:8080/WebService/WSSumador?wsdl") public WSSumadorService service; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

Page 6: 3. Desarrollo de Servicios Web en Netbeans.pdf

Gestión de Registros y Respaldos en el Contexto Hospitalario

Desarrollo de Servicios Web en NetBeans 6.7 6

response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { WSSumador sumador = service.getWSSumadorPort(); int a = Integer.parseInt(request.getParameter("value1")); int b = Integer.parseInt(request.getParameter("value2")); String c = String.valueOf(sumador.sumar(a, b)); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet ClientServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>"); out.println("La suma es" + c); out.println("</body>"); out.println("</html>"); } catch (SOAPFaultException se) { out.println("Authentication failed!"); out.println(""); out.println(se); } catch (Exception e) { out.println(e); } finally { out.close(); } }

Con la anotación @WebServiceRef obtenemos la información del wsdl. Luego creamos una

variable de tipo WSSumadorService y luego invocamos el método getWSSumadorPort()

para obtener una instancia que contendrá los métodos definidos en el ws.