Download Ejercicios temas 1 a 10
Document related concepts
no text concepts found
Transcript
COLECCIÓN DE PROBLEMAS Y CUESTIONES SERVIDORES DE INFORMACIÓN Curso 2004-2005 Temas 1 a 10 Problema 1. Dada la siguiente descripción de datos en XDR: const MAXUSERNAME = 32; const MAXFILELEN = 65535; const MAXNAMELEN = 255; /* max length of a user name */ /* max length of a file */ /* max length of a file name */ /* Types of files: */ enum filekind { TEXT = 0, /* ascii data */ DATA = 1, /* raw data */ EXEC = 2 /* executable */ }; /* File information, per kind of file: */ union filetype switch (filekind kind) { case TEXT: void; /* no extra information */ case DATA: string creator<MAXNAMELEN>; /* data creator */ case EXEC: string interpretor<MAXNAMELEN>;/*program interpretor */ }; /* A complete file: */ struct file { string filename<MAXNAMELEN>; filetype type; string owner<MAXUSERNAME>; opaque data<MAXFILELEN>; }; /* /* /* /* name of file */ info about file */ owner of file */ file data */ comentar como se enviaría por la red el nombre de fichero dentro de la estructura que describe al fichero. 1 Problema 2. Proponer un DTD para el siguiente documento XML <?xml version="1.0" encoding="ISO-8859-1" ?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Sol: <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT body (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT note (body | from | heading | to)*> <!ELEMENT to (#PCDATA)> No os lo pido pero si alguno se anima a generar un possible XML Schema podría ser: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="body" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="note"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="body"/> <xs:element ref="from"/> <xs:element ref="heading"/> <xs:element ref="to"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="to" type="xs:string"/> </xs:schema> 2 Problema 3. Vamos a jugar al juego de los 5 errores. El siguiente documento XML contine 5 errores. ¿Cuáles son? ¿Podrías identificarlos? <?xml version="5.0" encoding="ISO-8859-1" ?> <breakfast_menu titulo=menú> <food> <name>Belgian Waffles</name> <price>$5.95</price> <description>Una descripción en griego: </description> <calories>650</calories> <food> <food> <name>Strawberry Belgian Waffles</name> <price>$7.95</price> <description>Otra descripción</description> <calories>900</calories> </food> Sol: 12345- No existe la versión 5 de XML El elemento breacfast no se cierra La codificación ISO-8859-1 no soporta caracteres griegos A la etiqueta de cierre del primer food le falta el caracter / El atributo titulo del elemento menú no va entrecomillado. 3 Problema 4. Proponer una interfaz Java “equivalente” al siguiente fragmento de una descripción en WSDL: <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="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType> Sol: public interface Hello { String sayHello(String firstName); } 4 Problema 5. Espiando las comunicaciones contra la máquina smtp.uc3m.es hemos capturado un mensaje como el siguiente: To: <soap@example.org> From: <soap@client.com> Reply-To: <soap@client.com> Date: Tue, 15 Nov 2001 23:27:00 -0700 Message-Id: <1F75D4D515C3EC3F34FEAB51237675B5@client.com> MIME-Version: 1.0 Content-Type: text/xml; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE <?xml version=3D"1.0" encoding=3D"UTF-8"?> <SOAP-ENV:Envelope ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoString xmlns:m="http://soapinterop.org/"> <inputString>get your SOAP over SMTP here !</inputString> </m:echoString> </SOAP-ENV:Body> </SOAP-ENV:Envelope> SOAP- Proponer un possible mensaje de respuesta. Sol: To: <soap@client.com> From: <soap@example.org> Date: Tue, 13 Nov 2001 23:27:00 -0700 In-Reply-To: <1F75D4D515C3EC3F34FEAB51237675B5@client.com> Message-Id: <FF75D4D515C3EC3F34FEAB51237675B5@soap.example.org> MIME-Version: 1.0 Content-Type: TEXT/XML; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoStringResponse xmlns:m="http://soapinterop.org/"> 5 SOAP- <return>get your SOAP over SMTP here !</return> </m:echoStringResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Problema 6. Describir algunos de los servicios típicos que proporcionan los servidores de aplicaciones. Pregunta 7. ¿Cuál es el “patito feo” entre las siguientes tecnologías? Remote Procedure Calls (RPC). Microsoft Component Object Model (COM) Java Remote Method Invocation (RMI) Common Object Request Broker Architecture (CORBA) Servicios Web Sol: La segunda, COM, no es una tecnología middleware distribuida al igual que el resto. Pregunta 8. Indicar cómo sería posible hacer que todas las peticiones a un método remoto usando CORBA se ejecutaran por un mismo hilo. Sol: Mediante las políticas del POA 6 Problema 9. Hemos decidido migrar una aplicación CORBA a RMI. Proponer una interfaz RMI equivalente a la siguiente: module ArithApp { interface Add { const unsigned short SIZE=10; typedef int array[]; void addArrays(in array a, in array b, out array result); }; }; package ArithApp; public interface Add extends java.rmi.Remote { public static final short SIZE = (short)(10); int[]addArrays(int a[], int b[]) throw java.rmi.RemoteException; } Pregunta 10. Comentar las posibilidades de paso de parámetros a través de RMI. Sol: Por valor (usando objetos serializables) y por referencia (usando interfaces remotas) Pregunta 11. Tras haber intentado usar un servicio remoto a través de RMI obtenemos una excepción de seguridad. ¿Qué sentido puede tener usar el siguiente fichero? grant { permission java.net.SocketPermission "*:1024-65535", "connect,accept"; permission java.io.FilePermission ".\\classes\\-", "read"; }; 7 Problema 12. Implementar un Servlet que devuelva una página HTML que muestre el texto “Hola compis” cuando se reciba una petición tipo GET. Sol: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); res.setHeader("Content-Language", "es"); out.println("<HTML><HEAD><TITLE>Hola compis</TITLE></HEAD>"); out.println("<BODY>"); out.println("<p>Hola compis"); out.println("</BODY></HTML>"); } } Problema 13. Aumentar la funcionalidad del servlet anterior para que cuando reciba un GET invoque el método saludar() de un SessionBean sin estado cuyo interfaz componente es: public interface Saludo extends javax.ejb.EJBObject { public String saludar() throws java.rmi.RemoteException; } Pregunta 14. Describir como se puede particularizar la ejecución de un método de negocio en un EJB en función del role de quién lo ejecute. Comentar cómo se definen estos roles y las referencias a los mismos para un EJB. 8 Problema 15. Crear una página JSP que devuelva la fecha actual. Pregunta 16. Comentar cómo manejaría el estado de un EJB de sesión con estado que participa en una transacción cuándo a esta se le hace un commit. 9