Problemas

Ramiro Lago (Marzo 2008)

Veremos algunos ejemplos y problemas de programación Java, realizados con Eclipse 3.2. En todos los casos tienes la opción de descargar el proyecto e importarlo con Eclipse.

  1. En este ejercicio se plantea un servlet que accede a un objeto remoto usando RMI. El objeto remoto lee un archivo que contiene valores bursatiles. Dicho objeto lee el archivo al crearse y ofrece dos servicios, el primero es devolver un vector de objetos de la clase Valor; el segundo es devolver el precio de un valor buscado. El servlet contiene un formulario, cuyo action llama al propio servlet.

    El ejemplo contiene dos proyectos:

    • Un proyecto sirve para implementar el servidor RMI (ServidorRMI.java) con su objeto remoto (GestorValoresImpl.java)). Este proyecto contiene dos archivos bat, uno nos sirve para el uso de rmic, arrancar rmiregistry y ejecutar el servidor, evidentemente deberás adaptar este archivo a tu estructura de directorios. El segundo archivo bat (CrearJar.bat) crea un jar (ejerRMI_Properties.jar) que contiene las clases del objeto remoto y la clase Valor.java. Este jar es necesario para el proyecto que contiene el servlet.


    • El segundo proyecto contiene el servlet que consulta por medio de RMI al objeto remoto. Para que funcione se debe incluir en WEB-INF/lib la libreria jar del proyecto RMI. El servicio RMI y el bean Valor está en ejerRMI_Properties.jar. En Project-Properties-Java Build Path-Add JAR se ha añadido dicha libreria.



  2. En este ejemplo tenemos un servlet que solicita información de un EJB. El servlet crea un vector del tipo Producto, se lo manda al EJB y solicita información sobre mínimo, máximo, etc.
    • El primer proyecto sirve para implementar el EJB (InfProductosBean.java). Este proyecto tiene un archivo bat (desplegarJar.bat) para crear el archivo jar (InfProductos.jar) y copiarlo (desplegarlo ) en el directorio de JBoss correspondiente. Tendrá que adaptar este archivo bat a su estructura de directorios. En el jar se incluye:
      • El paquete del EJB: ejerEJB_Properties.ejb_informador.*
      • El paquete del bean: ejerEJB_Properties.bean.Producto
      • ejerEJB_Properties/src/META-INF/*


    • Este proyecto contiene el servlet. En WEB-INF/lib tenemos la libreria de cliente EJB (jbossall-client.jar) y la libreria creada con el proyecto EJB (InfProductos.jar). En Project-Properties-Java Build Path-Add JAR se añaden las librerías al proyecto. Para probar la búsqueda de producto pruebe a poner 'clavo' en el campo de texto y después pulse 'Buscar'.



  3. Se trata de un servlet que lee un archivo XML por medio de SAX. El archivo XML contiene una serie de libros, cada uno con su autor y título:

    
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <libros xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'	
    		xsi:noNamespaceSchemaLocation="file:C:\ruta_del_archivo_del_esquema\libreria.xsd">
        <libro>
            <titulo>El fin de una odisea</titulo>
            <autor>Pedro Gomez</autor>
        </libro>
        ...
    </libros>
    

    La estructura de la aplicación es:

    • Una página HTML con un formulario en el que hay un campo de texto para escribir un autor. El formulario realizará una llamada POST al servlet.
    • El servlet recoge el autor de la página y la ruta del archivo XML de un parámetro de inicialización. Llamará a un parser XML para buscar los libros del autor. Si los encuentra, muestra por pantalla el título; si no lo encuentra o hay un error, muestra el mensaje correspondiente.
    • Un manejador SAX, que es invocado por el parser.
    Código del proyecto. Para adaptar el ejercicio a su ordenador debe modificar el init-param del web.xml, ya que en este parámetro se indica la ruta del archivo xml. Además tendrá que mofificar en el archivo xml la referencia al esquema (archivo xsd) y la URI del form.


  4. Usamos RMI para definir un objeto remoto que implementa una factoria. La factoria devuelve objetos del supertipo Dispositivo. Es una aplicación Java sencilla (stand-alone)


Volver al índice