Download Examen Septiembre 2008

Document related concepts
no text concepts found
Transcript
EXAMEN SERVIDORES INFORMACIÓN - TEORÍA
Curso 2007-2008
Septiembre 2008
La duración de esta parte del examen es de 50 minutos.
No se permiten libros ni apuntes ni calculadoras
La puntuación de esta parte del examen es de 7 puntos
Problema 1. (1 punto)
Dada la siguiente instancia de documento XML.
<?xml version="1.0"?>
<note xmlns="http://www.us.com"
xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance"
xsi:schemaLocation="http://www.us.com
http://www.us.com/schema/note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>
Don't forget me this weekend!
</body>
</note>
Proponer el contenido de note.xsd para que el documento anterior sea válido
Pregunta 2. (0,5 puntos)
Comentar brevemente los métodos de la interfaz javax.servlet.Servlet
Problema 3. (1 punto)
a) Comentar el código de la siguiente página JSP (0,5 puntos):
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<html>
<head>
<title>JSP siempre cae en los examines de SI</title>
</head>
<body>
<h1>JSP es super chulo</h1>
<tags:helloWorld/>
</body>
</html>
b) ¿Qué métodos encontraremos en una clase que extienda a TagSupport y para qué
sirven? (0,5 puntos)
1
Problema 4. (1 punto)
Dada la siguiente descripción de un servicio Web simple:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="HelloService"
targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="SayHelloRequest"/>
<output message="SayHelloResponse"/>
</operation>
</portType>
<binding name="Hello_Binding" type="tns:Hello_PortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="sayHello"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name="Hello_Port">
<soap:address
location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
Comentar:
a) La versión de WSDL (0,1 puntos)
b) ¿Qué significa y qué implicaciones tiene para los mensajes enviados el estilo
RPC en el binding? (0,3 puntos)
c) ¿Qué significa el uso “encoded” para el cuerpo de los mensajes SOAP? (0,3
puntos)
d) ¿Qué error/es hay en la definición del portType? (0,3 puntos)
2
Pregunta 5. (0,5 puntos)
Comentar el siguiente código:
@Stateful
public class ShoppingCartClass implements ShoppingCart
{
@MethodPermission(…)
public void purchase(Product product, int quantity) {...}
@Remove void emptyCart() {...}
}
Pregunta 6. (1 punto)
Comente los métodos que recuerde de la interfaz EntityContext (tanto los propios
como los heredados de EBJContext)
Pregunta 7. (1 punto)
Comente dónde encontraría, y cuál es su misión, las siguientes palabras reservadas en
una aplicación J2EE:
a)
b)
c)
d)
cmp-field (0,25 puntos)
EjbLocalHome (0,25 puntos)
doGet (0,25 puntos)
EJBException (0,25 puntos)
Problema 8. (1 punto)
a) Comente cómo puede hacer un programador de EJBs para controlar el acceso de
los diferentes usuarios a los métodos de un determinado EJB. (0,5 puntos)
b) ¿Y cómo lo podría hacer el ensamblador de la aplicación basada en EJBs? (0,5
puntos)
3
4
EXAMEN PRÁCTICAS SERVIDORES DE
INFORMACIÓN SEPTIEMBRE 2007/08
PARTE II: PREGUNTAS TEST SOBRE LAS PRÁCTICAS
La duración de esta parte del examen es de 20 minutos.
No se permiten libros ni apuntes ni calculadoras
La puntuación de esta parte del examen es de 1,5 puntos
NOMBRE:
APELLIDOS:
A continuación se le presentan 10 preguntas, cada una con 4 opciones de la que
sólo 1 opción es correcta. Cada respuesta correcta cuenta como +0.15 puntos y
cada respuesta incorrecta cuenta como -0.04 puntos, mientras que si no se
responde a una pregunta cuenta como cero puntos.
1.-¿En qué técnica de desarrollo de Servicios Web con AXIS se usaba un objeto de la
clase DatosSoapBindingStub?:
a)
b)
c)
d)
Con JWS
Con WSDD
Con WSDL
En ninguna de ellas
2.- Si ejecutamos la herramienta Java2WSDL de la siguiente forma (suponiendo que
todos los parámetros de la llamada están correctos acorde a un desarrollo exitoso de la
práctica donde se utilizó):
java org.apache.axis.wsdl.Java2WSDL -o datos.wsdl -l"http://localhost:8080/axis/services/Datos" -n
"urn:Datos" -p"ejercico4.Datos" "urn:Datos" ejercicio4.Datos
a) Con la opción -o se describe el namespace del fichero WSDL
b) El nombre de la clase o interfaz que tiene los métodos para realizar el fichero
WSDL a generar se llama Datos
c) datos.wsdl representa un mensaje SOAP intercambiado entre cliente y servidor
d) Con la opción –l se pone en relación el paquete en cuestión con el namespace
3.- En la práctica de RMI, si queremos realizar una tarea diferente al cálculo del número
pi, ¿sobre qué ficheros deberemos modificar su código para tal fin?
a)
b)
c)
d)
Sólo el fichero Pi.java
Sólo el fichero ComputePi.java
Sólo los ficheros Pi.java y ComputePi.java
Todos los ficheros de la aplicación
5
4.- ¿Qué sucede si se ejecuta la aplicación cliente o servidora de la práctica de RMI
desde un directorio donde no se encuentra el fichero java.policy, con la opción
siguiente: '-Djava.security.policy=java.policy' ?
a) Se ejecutará correctamente al no haber ninguna restricción de seguridad
b) No se ejecutará debido a que en java.policy se deben habilitar los permisos
adecuados
c) Se ejecutará siempre que el fichero java.policy se encuentre en un directorio
incluido en el CLASSPATH
d) Se ejecutará siempre que el fichero java.policy se encuentre en un directorio
incluido en el PATH
5.- En una aplicación web en el servidor Web Tomcat utilizando servlets, el fichero de
configuración que mapea una URL al nombre del servlet, es
a)
b)
c)
d)
config.xml
web.xml
XMLbinding.xml
servlets.java
6.- ¿Cuál de las siguientes técnicas es confiable y está recomendado su uso para hacer
los servlets thread-safe?:
a) Usar variables de método para información específica de la petición en lugar de
variables de instancia
b) Implementar el interfaz SingleThreadModel
c) Usar un objeto session (siendo session un objeto de la clase HttpSession)
d) Sincronizar los métodos doGet y doPost
7.- ¿Cuál de los siguientes métodos NO puede ser aplicado a un objeto request de la
clase HttpServletRequest?
a)
b)
c)
d)
getProtocol
getHeaderNames
getSession
setResponse
6
8.- En relación con la aplicación del carrito de la compra recogida en el libro
“Desarrollo Web con JSP”, que se vio como uno de los ejercicios de la práctica sobre
“Servlets y JSPs”, indique la afirmación que sea correcta
a) La aplicación sigue el patrón de diseño MVC (Modelo Vista Controlador)
b) No hay ningún objeto de ámbito de sesión
c) El JSP llamado CheckOut.jsp utiliza la etiqueta include para incluir al JSP
ShoppingCartSummary.jsp
d) El JSP WroxShopControler.jsp utiliza la etiqueta forward para enviar al JSP
CheckOut.jsp o bien al JSP Catalog.jsp
9.- ¿Cuál de las siguientes sentencias es verdadera sobre la implementación con EJBs de
la aplicación de actividades deportivas vista en el laboratorio?
a)
b)
c)
d)
Un servlet llama a los métodos de un bean de sesión sin estado
Al menos un JSP llama a los métodos de algún entity bean
Un bean de sesión sin estado llama a los métodos de los beans de entidad
Un bean de sesión sin estado llama a los métodos de otro bean de sesión sin
estado
10.- Indique cuál de las siguientes sentencias sobre un fichero EAR (enterprise
application resource) es verdadera:
a) Puede contener otros ficheros JAR con componentes de aplicación cliente y su
información de despliegue
b) La creación de los ficheros EAR debe ser realizada después de hacerse el
despliegue de la aplicación en el servidor J2EE
c) Sólo se pueden crear mediante la herramienta deploytool
d) Puede contener otros ficheros JAR con EJB pero sin su información de
despliegue
7
8
EXAMEN PRÁCTICAS SERVIDORES DE
INFORMACIÓN SEPTIEMBRE 2007/08
PARTE III: Problema Prácticas
La duración de esta parte del examen es de 90 minutos.
No se permiten libros ni apuntes ni calculadoras
La puntuación de esta parte del examen es de 1,5 puntos
PROBLEMA: En este problema se debe implementar un servicio Web con JWS y un
cliente en lenguaje JAVA mediante la librería AXIS que sea capaz de usar sus métodos
en todas las combinaciones posibles según la descripción del servicio web a
implementar que a continuación se describe. El servicio Web descrito es exactamente el
mismo que se describió en la práctica sobre Servicios Web con AXIS de la asignatura.
El servicio Web tendrá disponible una serie de parámetros a los que podrá acceder por
parte de los clientes para leer o/y escribir sobre ellos. Hay que señalar que una de las
posibles formas de modelar esto es mediante una base de datos donde residan estos
parámetros. No obstante en este problema no se debe hacer uso de bases de datos y se
deberá realizar mediante el uso apropiado de la clase HashMap.
Algunos de esos parámetros sólo será posible su lectura y serán exactamente con estos
nombres: "OS" (Indica el sistema operativo de la máquina), "IP" (dirección IP del
equipo), "Name" (nombre del equipo), "Phone" (teléfono de contacto).
El resto de parámetros que tendremos serán tanto de lectura como de escritura y
representarán zonas de memoria, donde podrá almacenarse cualquier string.
Exactamente deberán tener los nombres "M1", "M2", "M3" y "M4"
Además el servicio tendrá diferentes claves de acceso que distinguirán diferentes
perfiles de acceso. Distinguiremos entre dos tipos de clave que definirán
respectivamente dos perfiles: Una de lectura y otra de escritura. Mediante la clave de
lectura se tendrá permiso de lectura de todos los parámetros. Mediante la clave de
escritura tendremos permiso de lectura de todos los parámetros y además permiso de
escritura en aquellos parámetros que son a la vez de lectura y escritura (es decir todos
aquellos parámetros que representan strings de la zona de memoria). El servicio deberá
comprobar que la clave suministrada por el cliente (cuando llama a algún método) es
adecuada y en caso de que no sea ninguna de las permitidas no le dejará ni leer ni
escribir ninguno de los parámetros. Si por el contrario la clave es la de lectura (por
convenio su valor será "lectura") entonces tendrá el perfil de lectura y si la clave es la
de escritura (por convenio su valor será "escritura") entonces tendrá el perfil de escritura.
En concreto los métodos que debe dejar accesible el servicio Web serán dos: get y set.
A continuación se detallan estos métodos: su funcionamiento, parámetros, etc.
Al método get se le pasarán dos argumentos: el primero será la clave de acceso y el
segundo será el nombre del parámetro que queremos conseguir. Si introduce una clave
incorrecta el servicio deberá notificar el mensaje de error correspondiente
independientemente de todo lo demás. Cuando se pida uno de esos parámetros estándar
el servidor web dará la respuesta al cliente indicándole el valor actual, en caso de que
9
haya introducido una clave válida. En caso de introducir una clave válida, pero pedir un
parámetro que no se encuentre en la lista que anteriormente se ha citado, entonces
deberá devolverle algo que le indique que ese parámetro no existe.
Al método set se le pasarán tres argumentos. El primero de ellos será la clave de acceso.
El segundo de los argumentos será el nombre del parámetro que queremos cambiar su
valor y el tercero será el valor que toma dicho parámetro (el valor que queremos
escribir). Si la clave suministrada es incorrecta o es la clave de lectura entonces el
servicio debe notificar el mensaje de error correspondiente independientemente de todo
lo demás. Es importante remarcar que tan sólo los parámetros de zonas de memoria
podrán cambiarse puesto que el resto son valores fijos que sólo se pueden leer. Por ello
la aplicación debe tener en cuenta que si un cliente accede con la clave de escritura y
pide un parámetro que existe pero diferente a los de las zonas de memoria, entonces
debe indicarse al usuario que ese parámetro "es de sólo lectura" y no se cambiará su
valor. En caso de que el cliente acceda con clave de escritura pero el parámetro no esté
en la lista como uno de los parámetros estándar, entonces debe devolverse al usuario
algo que le indique que ese parámetro no existe.
Remarcar que en caso de que un determinado cliente A cambie un determinado
parámetro mediante una operación set, entonces otro cliente B que acceda después
mediante una operación get, deberá de ver el nuevo valor del parámetro que ha puesto el
cliente A, siempre que entre medias de estas dos operaciones no haya habido ninguna
otra operación set por parte de nadie.
El servicio Web deberá ser capaz de implementar los métodos get y set. Se debe realizar
una clase Java llamada Datos.jws que implemente estos dos métodos y los ponga a
disposición de los clientes para que puedan acceder a ellos.
Así mismo se deberá implementar el programa cliente adecuado que se pueda conectar
al servicio web indicado, realizando las operaciones get y set que han sido especificadas
con los parámetros oportunos. La operación a realizar así como los parámetros deben
ser introducidos como entrada por teclado al ejecutar el programa cliente. El fichero que
modele la parte cliente se llamará DatosClient.jws.
1) En relación con este servicio Web se pide lo siguiente:
1a) (0,6 puntos) Codificar una clase Java llamada Datos.jws que implemente estos dos
métodos del servicio Web (get y set) utilizando JWS y los ponga a disposición de los
clientes para que puedan acceder a ellos.
Ayuda: Para el programa servidor del Servicio Web es necesario importar lo siguiente:
import java.util.HashMap;
import java.util.Map;
1b) (0.15 puntos) Indicar donde se debe ubicar el fichero Datos.jws en el servidor Web
Tomcat utilizando JWS para hacer accesibles sus métodos a través de servicios Web
gracias a AXIS. Explicar también como funciona AXIS en el servidor Web Tomcat
mediante JWS.
10
1c) (0.75 puntos) Implementar un programa cliente JAVA adecuado (que llamaremos
DatosClient.java) que se pueda conectar al servicio Web indicado utilizando AXIS
mediante JWS, realizando las operaciones get y set que han sido especificadas con los
parámetros oportunos. La operación a realizar así como los parámetros deben ser
introducidos como entrada por teclado al ejecutar el programa cliente.
Ayuda: Para el programa cliente es necesario importar lo siguiente:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import javax.xml.rpc.ParameterMode;
11