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