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