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: <[email protected]>
From: <[email protected]>
Reply-To: <[email protected]>
Date: Tue, 15 Nov 2001 23:27:00 -0700
Message-Id: <[email protected]>
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: <[email protected]>
From: <[email protected]>
Date: Tue, 13 Nov 2001 23:27:00 -0700
In-Reply-To: <[email protected]>
Message-Id: <[email protected]>
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