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