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