1238
Capítulo 28 Servicios Web JAX-WS, Web 2.0 y Mash-ups
77
// divide la mano en cartas
78
String[] cartas = mano.split(
"\t"
);
79
int
total =
0
;
// valor total de las cartas en la mano
80
int
cara;
// cara de la carta actual
81
int
cuentaAses =
0
;
// número de ases en la mano
82
83
for
(
int
i =
0
; i < cartas.length; i++ )
84
{
85
// analiza la cadena y obtiene el primer int en el objeto String
86
cara = Integer.parseInt(
87
cartas[ i ].substring(
0
, cartas[ i ].indexOf(
" "
) ) );
88
89
switch
( cara )
90
{
91
case
1:
// en as, incrementa cuentaAses
92
++cuentaAses;
93
break
;
94
case
11
:
// joto
95
case
12
:
// reina
96
case
13
:
// rey
97
total +=
10
;
98
break
;
99
default
:
// en cualquier otro caso, suma la cara
100
total += cara;
101
break
;
102
}
// fin de switch
103
}
// fin de for
104
105
// calcula el uso óptimo de los ases
106
if
( cuentaAses >
0
)
107
{
108
// si es posible, cuenta un as como 11
109
if
( total +
11
+ cuentaAses -
1
<=
21
)
110
total +=
11
+ cuentaAses -
1
;
111
else
// en cualquier otro caso, cuenta todos los ases como 1
112
total += cuentaAses;
113
}
// fin de if
114
115
return
total;
116
}
// fin del Método Web obtenerValorMano
117
}
// fin de la clase Blackjack
Figura 28.13
| Servicio Web
Blackjack
que reparte cartas y evalúa manos. (Parte 3 de 3).
Rastreo de sesiones en servicios Web
El cliente del servicio Web
Blackjack
llama primero al método
barajar
(líneas 40 a 71) para barajar el mazo de
cartas. Este método también coloca el mazo de cartas en un objeto
HttpSession
que es específi co para el cliente
que llamó a
barajar
. Para usar el rastreo de sesiones en un servicio Web, debemos incluir código para los recur-
sos que mantienen la información de estado de la sesión. Anteriormente, había que escribir el código, que algunas
veces era tedioso, para crear estos recursos. Sin embargo, JAX-WS se encarga de esto por nosotros mediante la
anotación
@Resource
. Esta anotación permite a herramientas como Netbeans “inyectar” el código complejo de
soporte en nuestra clase, con lo cual nos podemos enfocar en la lógica de negocios, en vez de hacerlo en el código
de soporte. El concepto de usar anotaciones para agregar código que de soporte a nuestras clases se conoce como
inyección de dependencias
. Las anotaciones como
@WebService
,
@WebMethod
y
@Webparam
también realizan
la inyección de dependencias.
En la línea 20 se inyecta un objeto
WebServiceContext
en nuestra clase. Un objeto
WebServiceContext
permite a un servicio Web acceder a la información para una petición específi ca y darle mantenimiento, como el
28_MAQ_CAP_28_DEITEL.indd1238
5/8/084:19:33PM