f) Un tipo defi nido por el usuario que se utilice en un servicio Web debe defi nir métodos 

get y set para cual-

quier propiedad que se vaya a serializar.

28.2

Complete los siguientes enunciados.

 

a) Cuando se envían mensajes entre una aplicación y un servicio Web mediante SOAP, cada mensaje se coloca 

en un(a) 

.

 

b) Un servicio Web en java es un 

; no necesita implementar ninguna interfaz o extender 

una clase.

 

c) Las peticiones a los servicios Web se transportan generalmente a través de Internet, mediante el protocolo 

.

 

d) Para establecer el nombre expuesto de un método Web, utilice el elemento 

 de la anota-

ción

@WebMethod

.

 

e) La 

 transforma a un objeto en un formato que se pueda enviar entre un servicio Web y 

un cliente.

Respuestas a los ejercicios de autoevaluación

28.1 

a) Falso. Sólo los métodos declarados con la anotación 

@WebMethod

 pueden ser invocados por los clientes del 

servicio Web.  b) Falso. Netbeans crea la clase proxy cuando agregamos un cliente de servicio Web a la aplicación.  
c) Verdadero.  d) Falso. En el marco de trabajo JAX-WS 2.0, el cliente debe indicar si desea permitir que el servicio 
Web mantenga información sobre la sesión. Primero hay que convertir el objeto proxy al tipo de la interfaz 

Bin-

dingProvider

, y después hay que usar el método 

getRequestContext

 de 

BindingProvider

 para obtener el objeto 

RequestContext

. Por último, hay que usar el método 

put

 del objeto 

RequestContext

 para establecer la propiedad 

BindingProvider.SESSION_MAINTAIN_PROPERTY

a

true

.  e) Verdadero.  f) Verdadero. 

28.2

a) mensaje SOAP o envoltura SOAP.

 

b) POJO (Objeto Java simple).  

 c) 

HTTP.

 d) 

operationName

.

 

e) Serialización en XML.

Ejercicios

28.3

(Servicio Web Libreta Telefónica)  Cree un servicio Web que almacene las entradas en una libreta telefónica, en 

la base de datos

LibretaDireccionesBD

, y una aplicación cliente Web que consuma este servicio. Use los pasos de la 

sección 28.7.1 para crear la base de datos 

LibretaTelefonica

. Esta base sólo debe contener una tabla 

(LibretaDi-

recciones)

 con tres columnas: 

ApellidoPaterno

,

PrimerNombre

 y 

NumeroTelefonico

, cada una de tipo 

VARCHAR

.

Las columnas 

ApellidoPaterno

 y 

PrimerNombre

 deben almacenar hasta 30 caracteres. La columna 

NumeroTelefoni-

co

 debe soportar números telefónicos de la forma 

(800) 555-1212

, que contienen 14 caracteres.

 

Dé al usuario cliente la capacidad de escribir un nuevo contacto (método Web 

agregarEntrada

) y buscar con-

tactos por apellido paterno (método Web 

getEntradas

). Pase sólo objetos 

String

 como argumentos para el servicio 

Web. El método Web 

getEntradas

 debe devolver un arreglo de objetos 

String

 que contenga las entradas que coinci-

dan en la libreta de direcciones. Cada objeto 

String

 en el arreglo debe consistir en el apellido paterno, primer nombre 

y número telefónico para una entrada en la libreta de direcciones. Estos valores deben separarse mediante comas.
 

La consulta SELECT para buscar una entrada en 

LibretaDirecciones

 por apellido paterno debería ser:

SELECT

 ApellidoPaterno, PrimerNombre, NumeroTelefonico

FROM

 LibretaDirecciones

WHERE

 (ApellidoPaterno = 

ApellidoPaterno

)

La instrucción 

INSERT

 para insertar una nueva entrada en la base de datos 

LibretaDirecciones

 debe ser:

INSERT INTO

 LibretaDirecciones (ApellidoPaterno, PrimerNombre, NumeroTelefonico)

VALUES

 (

ApellidoPaterno

,

 PrimerNombre

,

 NumeroTelefonico

)

28.4

(Modifi cación al servicio Web Libreta telefónica) Modifi que el ejercicio 28.3, de manera que utilice una clase 

llamada

EntradaLibretaTelefonica

 para representar a una fi la en la base de datos. Al agregar contactos, la aplicación 

cliente debe proporcionar objetos de tipo 

EntradaLibretaDirecciones

 al servicio Web, y debe recibir objetos de tipo 

EntradaLibretaDirecciones

 a la hora de buscar contactos.

Ejercicios

1273

28_MAQ_CAP_28_DEITEL.indd1273

5/8/084:19:53PM