Download Examen Septiembre 2006

Document related concepts
no text concepts found
Transcript
EXAMEN SERVIDORES INFORMACIÓN - TEORÍA
Curso 2005-2006
Septiembre 2006
La duración de esta parte del examen es de 60 minutos.
No se permiten libros ni apuntes ni calculadoras
La puntuación de esta parte del examen es de 8 puntos
Problema 1. (1 punto)
Escribir un DTD interno que haga válido el siguiente documento XML:
<?xml version=”1.0”?>
<!DOCTYPE ... [
…
]>
<pelicula>
<director>Ing Telemática</director>
<titulo>Servidores de Información</titulo>
<actor>Mario Muñoz</actor>
<actor>Pedro Muñoz</actor>
</pelicula>
Problema 2. (1 punto)
La siguiente interfaz remota RMI presenta 2 errores. Encontrarlos y comentarlos.
import java.rmi.*;
public interface ReceiveMessageInterface
{
void receiveMessage(String x);
}
Problema 3. (1 puntos)
Los métodos doGet y doPost de un Servlet reciben un objeto que implementa la interfaz
HttpServletRequest. Comentar algunos métodos (al menos 5) de dicha interfaz
especificando para qué sirven.
1
Problema 4. (2 puntos)
a) Explicar los siguientes conceptos referents a EJBs (1 punto)
-
Home interface
EJBObject
FinderException
Local view
EntityContext
b) Definir las interfaces Home y Componente para el siguiente Entity Bean (1
punto)
public abstract class AccountBean implements EntityBean {
private EntityContext myEntityCtx;
public void setEntityContext(EntityContext ctx) {
myEntityCtx = ctx;
}
public javax.ejb.EntityContext getEntityContext() {
return myEntityCtx;
}
public void unsetEntityContext() {
myEntityCtx = null;
}
public java.lang.Integer ejbCreate(Integer number)
throws javax.ejb.CreateException {
setNumber(number);
return null;
}
public void ejbPostCreate(Integer number) {}
public void ejbActivate() {}
public void ejbLoad() {}
public void ejbPassivate() {}
public void ejbRemove() {}
public void ejbStore() {}
public abstract Integer getNumber();
public abstract void setNumber(Integer newNumber);
public abstract float getBalance();
public abstract void setBalance(float newBalance);
public void deposit(float amount) {
setBalance(getBalance() + amount);
}
public void withdraw(float amount) {
setBalance(getBalance() - amount);
}
}
2
Pregunta 5. (1 punto)
En un programa cliente en Java vemos la siguiente línea de código
Account acc2 = home.findByPrimaryKey(12345);
Nos encontramos ante el acceso a un:
 Session bean sin estado
 Session bean con estado
 Entity bean con BMP
 Entity bean cuya interfaz componente se llama Account
Problema 6. (1 punto)
Comente el ciclo de vida de un MIDlet. Comente los métodos y su funcionalidad.
Pregunta 7. (1 punto)
Comente el siguiente extracto de un fichero XML y comente de qué fichero se trata.
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
3
EXÁMEN DE PRÁCTICAS: SERVIDORES DE
INFORMACIÓN
Curso 2005-2006
Septiembre 2006
La duración de esta parte del examen es de 60 minutos.
No se permiten libros ni apuntes ni calculadoras
La puntuación de esta parte del examen es de 2 puntos
Contestar en el espacio reservado (no se podrán entregar folios adicionales).
NOMBRE y APELLIDOS:
1.- Servicios Web (2.5 puntos)
Las herramientas de AXIS AdminClient (org.apache.axis.client.AdminClient) y
Java2WSDL (org.apache.axis.wsdl.Java2WSDL) fueron introducidas en la práctica de
Servicios Web ¿Para qué sirven dichas herramientas? Ponga diferentes ejemplos de las
formas en que se debían ejecutar en dicha práctica y explique todos los detalles
(posibles opciones posibles y su descripción, descripción de los posibles ficheros a
pasarle, etc.).
5
2.- EJB (2.5 puntos)
Enumere las diferencias entre todos los interfaces Home de los cuatro EJB de ejemplo
que se presentaron en la práctica de EJB y justifique dichas diferencias.
6
3.- RMI (2.5 puntos)
En la PARTE PRIMERA de la práctica sobre RMI, se pedía reflexionar sobre el código
de una aplicación de servidor remoto que es un motor potente de cálculo. Explique
como se logra en ese ejemplo estudiado que este motor permita que un determinado
cliente invoque un método del servidor al que le pasará un objeto que tiene un método
de una tarea cliente arbitraria y que puede variar (en el caso concreto estudiado era el
cálculo del número pi) y que el servidor ejecuta. Incluya en la explicación referencias a
los diferentes ficheros de la aplicación estudiada.
7
4.- J2ME (2.5 puntos)
A continuación se proporciona una parte de código de un MIDlet que representa una
aplicación cliente J2ME que se podrá conectar con un servicio web con AXIS mediante
JWS
que
se
haya
disponible
en
la
dirección
http://teclado.it.uc3m.es:8080/axis/Datos.jws. Este servicio web es el mismo que se dejó
disponible en la práctica de J2ME, pero con la diferencia de que aquí sólo se considera
el método get y no hay un método set. En este ejercicio deberá completar el código
proporcionado para realizar un MIDlet que sea un cliente que se puede comunicar con el
servicio especificado (se le ofrecerá al usuario cliente dos opciones por pantalla: 1) La
posibilidad de realizar una operación get presionando un botón 2) La posibilidad de salir
de la aplicación presionando un botón diferente). Es obligatorio usar el esqueleto básico
que se os proporciona rellenando sólo los huecos donde viene marcado en negrita con
Rellenar. A continuación se muestra el esqueleto del código cliente a rellenar:
import
import
import
import
import
import
javax.microedition.midlet.*;
javax.microedition.lcdui.*;
java.io.*;
javax.microedition.io.*;
org.ksoap.*;
org.ksoap.transport.*;
public class DatosClient extends MIDlet implements CommandListener {
//Rellenar
public DatosClient() {
//Rellenar
}
public void startApp () {
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mainForm);
}
8
public void pauseApp () {
}
public void destroyApp (boolean unconditional) {
}
public void commandAction (Command c, Displayable d) {
//Rellenar
} //fin de commandAction
private void get () {
try {
String url = getAppProperty("SERVWEB.URL");
String parametro = parameter.getString ();
String clave=key.getString ();
resultItem.setLabel (clave);
SoapObject rpc = new SoapObject("urn:Datos", "get");
rpc.addProperty ("clave", clave );
resultItem.setLabel (parametro);
rpc.addProperty ("parametro", parametro);
resultItem.setText (""+new HttpTransport (url,
"urn:Datos#get").call (rpc));
Display.getDisplay(this).setCurrent(mainForm);
}
catch (Exception e) {
e.printStackTrace ();
resultItem.setLabel ("Error:");
resultItem.setText (e.toString ());
}//fin de get
}//fin de la clase DatosClient
9