Está en la página 1de 6

Gestin de Registros y Respaldos en el

Contexto Hospitalario.
Proyecto de grado
Edicin 2009
Desarrollo de Servicios
Web en NetBeans 6.7

Supervisores: Responsables: Estudiantes:
Mara Eugenia Corti
Ariel Sabiguero
Julio Carrau
Gustavo Perez
Martn Calabria
Gonzalo Perretti
Gestin 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




















Gestin 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 Clnicas, 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 definicin 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;
}
}
Gestin de Registros y Respaldos en el Contexto Hospitalario
Desarrollo de Servicios Web en NetBeans 6.7 4

La anotacin @Webservice() debe ponerse antes de declarar la clase.
La anotacin @WebMethod debe anteceder a cada mtodo que queremos exponer,
indicando el nombre del mtodo y la accin. En general estos dos campos tienen el mismo
nombre.
La anotacin @WebParam debe anteceder a cada parmetro de cada funcin que
queremos exponer indicando el nombre con el que ser expuesto dicho parmetro. El
nombre puede ser distinto al nombre de la variable, como sucede en el primer parmetro del
mtodo multiplicar.
Para agregar ms ws al proyecto se deben seguir los mismos pasos.
En las propiedades del proyecto debemos indicar en qu servidor de aplicacin 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.
Gestin 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 pgina jsp de
bienvenida se agrega el siguiente cdigo para instanciar un Servlet cuando se pulsa el botn
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 continuacin aparecer en la carpeta Web
Service References una nueva referencia a WSSumador. Resta consumir el ws desde el
Servlet, cuyo cdigo 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 {
Gestin 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 anotacin @WebServiceRef obtenemos la informacin del wsdl. Luego creamos una
variable de tipo WSSumadorService y luego invocamos el mtodo getWSSumadorPort()
para obtener una instancia que contendr los mtodos definidos en el ws.

También podría gustarte