Detalles de la aplicación Web de subastas

La aplicación Web de subastas (Auction Web) consta de varios componentes que se muestran en el diagrama siguiente. Esto no es una guía de aprendizaje para la construcción de toda la aplicación. Este documento resalta puntos importantes del desarrollo y el diseño que potencian distintas herramientas proporcionadas con el entorno de trabajo para que pueda aplicar ese conocimiento a sus propias aplicaciones Web.

Este diagrama muestra las relaciones entre datos, lógica empresarial, contenido Web y herramientas.
Tal como muestra el diagrama precedente, el contenido Web se desarrolló en paralelo a los datos y la lógica empresarial. Mientras que los diseñadores desarrollaron el estilo y el diseño de las páginas Web, los desarrolladores de servicios Java y Web codificaron la lógica empresarial para controlar esas páginas. Las secciones siguientes describen cómo se han creado estos componentes clave y su contribución a la aplicación Web de subastas:
  1. Correlacionar beans de entidad con tablas de base de datos con el Editor de correlaciones EJB
  2. Generar una fachada de sesión con objetos de datos SDO utilizando el asistente Fachada de bean de sesión
  3. Definir el diseño del sitio Web con el Diseñador de sitios Web
  4. Crear plantillas de páginas Web con Page Designer
  5. Añadir componentes JavaServer Faces a las páginas JSP con Page Designer
  6. Crear el servicio Web

Correlacionar beans de entidad con tablas de base de datos con el Editor de correlaciones EJB

Enterprise JavaBeans (EJB) ofrece una manera conveniente a las aplicaciones Java de acceder a los datos albergados en bases de datos relacionales. Los beans de entidad pueden desarrollarse utilizando la persistencia gestionada por bean (BMP) o la persistencia gestionada por contenedor (CMP). CMP permite más flexibilidad que BMP porque el contenedor EJB hace todas llamadas específicas de base de datos según indica el bean. El valor predeterminado es que las herramientas del entorno de trabajo de Rational generen beans de entidad utilizando CMP. El bean de entidad CMP no contiene código SQL de acceso. Esto permite desplegar el bean en otros servidores J2EE que utilizan bases de datos diferentes sin necesidad de reescribir el código.

Hay diferentes procedimientos para correlacionar objetos con bases de datos relacionales, como por ejemplo, descendente, ascendente y encuentro a medio camino. Un procedimiento descendente funciona a partir de objetos existentes, define capas cada vez más detalladas según sea necesario y diseña la base de datos como paso final. El procedimiento ascendente utiliza un esquema de base de datos existente y diseña las capas dependientes que definen los objetos. El procedimiento de encuentro a medio camino utiliza una base de datos y unos objetos existentes y después desarrolla las capas intermedias para emparejar los objetos con las tablas de la base de datos correspondientes.

En la aplicación de subastas se ha utilizado un procedimiento ascendente para desarrollar los EBJ de entidad. La base de datos Derby ya existía inicialmente y contenía tablas que coincidían con los EJB necesarios. Después de crear una conexión con la base de datos utilizando el asistente Conexión de base de datos, se ha utilizado el asistente Correlación de EJB a RDB para crear los EJB correlacionados con una o varias tablas con algunas excepciones. La figura siguiente muestra los EJB de entidad utilizados en la aplicación de subastas y las relaciones que los conectan.

Este diagrama muestra la relación entre varios beans de entidad.

A los beans de entidad de la aplicación de subastas no se accede directamente a través del cliente remoto. Todas las peticiones y respuestas se manejan a través de fachadas de sesión y los beans se utilizan para acceder a los datos de fondo. Esto permite un acceso compartido del lado del servidor al almacén de datos persistente. En la sección siguiente se tratan las fachadas con más profundidad.

Para obtener más información sobre la correlación de los beans de entidad, consulte el tema de ayuda Generar una correlación ascendente.

Generar una fachada de sesión con objetos de datos SDO utilizando el asistente Fachada de bean de sesión

La fachada de sesión es la interfaz entre el cliente y componente de fondo que proporciona comunicación con los componentes de Objeto de datos de servicio (SDO) y por último con la base de datos. Una fachada de sesión resulta útil cuando el cliente envía peticiones que requieren la ejecución de varios objetos. Al enviar estas peticiones individualmente a los objetos pueden aumentar el tráfico de red y la latencia. La fachada de sesión actúa como un almacenamiento intermedio entre ambos extremos, tomando una petición general del cliente y enviando peticiones específicas a los objetos necesarios. Esto reduce el tráfico y simplifica el desarrollo del cliente.

Una vez creada la fachada, puede seleccionar los EJB que gestiona seleccionando Correlacionar EJBs en el menú de la herramienta. La fachada genera los componentes SDO necesarios a partir de los beans de entidad. En la aplicación de subastas hay dos fachadas basadas en los dos grupos funcionales siguientes:
  • La fachada del sistema interactúa con el componente de fondo, los EJB específicos del sistema como por ejemplo Category y Role.
  • La fachada del usuario encapsula datos específicos del usuario, como por ejemplo Bid, Item y Role.

Agrupando los EJB y utilizando dos fachadas diferentes puede aumentar el rendimiento de la aplicación porque los usuarios solo acceden a los EJB que necesitan. Los beans de entidad que controlan la función del sitio Web, como por ejemplo Category, están controlados por la fachada del sistema.

Los EJB a los que hace referencia una fachada se eligen uno por uno utilizando el asistente Crear fachada de bean de sesión tal como se muestra en el diagrama siguiente. Es posible hacer referencia a un EJB en más de una fachada si es necesario. Esto no se ha hecho en la aplicación de subastas.

Este diagrama muestra la interfaz de usuario Crear fachada de bean de sesión.

Puede añadir funciones adicionales añadiendo métodos a las fachadas. Por ejemplo, en la fachada de usuario, hay un método que devuelve una lista de usuarios y otro método que devuelve una lista de los usuarios activos. Utilizando estos métodos como un ejemplo, puede añadirse otro método a la fachada de usuario que devuelve una lista de todos los usuarios que están marcados como inactivos.

Encontrará más información acerca de las fachadas de sesión en el documento de trabajo "Design Patterns: Session Facade", en http://java.sun.com./.

Definir el diseño del sitio Web con el Diseñador de sitios Web

La vista Navegación de la herramienta Diseñador de sitios Web proporciona una representación visual del diseño del sitio. Muestra las páginas individuales y su organización jerárquica y resulta útil para mantener el diseño y la organización de las páginas en el sitio. Cuando arrastra y suelta páginas en el editor, los controles de navegación de las plantillas de página se actualizan automáticamente. Por ejemplo, con la estructura de navegación de subastas mostrada en el diagrama siguiente, puede cambiar el orden de las pestañas de navegación moviendo la página Sell antes de la página Browse. El Diseñador de sitios Web genera automáticamente las pestañas en el orden correcto en todas las páginas. Para que los cambios sean visibles en la aplicación que esté ejecutándose, vuelva a guardar cada página que utilice la plantilla de navegación.

Este diagrama muestra los JSP de subastas que aparecen en el Diseñador de sitios Web.

Además de la vista Navegación descrita, el Diseñador de sitios Web proporciona una vista Detalle que organiza elementos de página adicionales en una tabla cómodamente, tal como se muestra en la figura siguiente. Esta tabla facilita la actualización de las propiedades de página, como por ejemplo el título, el autor y la etiqueta de navegación.

Este diagrama muestra la vista de detalles del Diseñador de sitios Web.

Para obtener más información acerca de cómo utilizar El Diseñador de sitios Web para gestionar el diseño de sitios Web, consulte el tema Crear una estructura de sitio Web en la ayuda en línea.

Crear plantillas de página Web con Page Designer

El entorno de trabajo incluye un diseñador visual para el desarrollo de plantillas de página así como de las mismas páginas Web.

Las plantillas de página son partes reutilizables del código de contenido que proporcionan una apariencia o un comportamiento comunes para partes de un sitio Web. Para compartir un aspecto común, las páginas Web solo necesitan hacer referencia a las plantillas. La utilización de plantillas beneficia tanto al usuario, que puede navegar fácilmente por el sitio Web, como al desarrollador, que solo necesita escribir código específico de una página determinada.

Las plantillas de página también permiten mantener fácilmente el contenido del sitio Web. Los cambios en el archivo de plantilla se reflejan automáticamente en cada página que haga referencia a la plantilla. Por ejemplo, en la aplicación Web de subastas, la plantilla maintemplate.jtpl proporciona el diseño general para las páginas de subastas. Es posible añadir elementos de página Web a la plantilla utilizando la paleta de Page Designer, que permite arrastrar y soltar elementos en la página Web. El código HTML se genera automáticamente. La plantilla de subastas puede modificarse fácilmente de esta forma para incluir, por ejemplo, la fecha y la hora actuales en el pie de página.

Los elementos clave de la plantilla de subastas son los controles de navegación. La barra de navegación de la aplicación Web utiliza dos formas de navegación:
  • Pestañas de navegación: muestran diferentes secciones del sitio Web.
  • Caminos de navegación o "migas de pan": muestran textualmente dónde está el usuario en el sitio Web, por ejemplo Home > Browse > Listing.
Este diagrama muestra las pestañas de navegación que aparecen en las páginas del ejemplo de subastas.

Insertando un código que llama a la plantilla en lugar de codificando la navegación, puede incluir la misma barra de navegación en todas las páginas del sitio. El editor de Correlación de plantillas inserta referencias a la plantilla en una página Web.

Las plantillas dinámicas llevan esta tecnología un paso más allá, por ejemplo alterando el contenido de la página Web basado en los cometidos o las posibilidades de los usuarios o insertando información específica en una página Web. El ejemplo de subastas utiliza plantillas dinámicas para proporcionar enlaces administrativos en la barra de navegación solamente para los usuarios que hayan iniciado la sesión como administradores y para cambiar el botón "Login" por "Logout" una vez que el usuario haya iniciado la sesión satisfactoriamente.

Para obtener más información acerca de la creación de plantillas de página Web, consulte el tema de ayuda Crear una plantilla de página.

Añadir componentes JavaServer Faces a archivos JSP con Page Designer

JavaServer Faces (JSF) es una tecnología que ayuda a construir interfaces de usuario para aplicaciones Web dinámicas que se ejecutan en un servidor de aplicaciones. JSF es un lenguaje estándar abierto y utiliza una biblioteca de códigos estándar de JavaServer Faces. Los códigos se insertan en el código HTML para crear páginas Web dinámicas.

La infraestructura JSF gestiona estados de interfaz de usuario a través de peticiones de servidor y ofrece un modelo de desarrollo simple para manejar los eventos del lado del servidor activados por el cliente. Por ejemplo, un JSF puede tener un comportamiento especificado para eventos distintos, como la pulsación de un botón. Page Designer tiene funciones incorporadas, mostradas en la paleta, que puede arrastrar y soltar en la página Web. Estas funciones de arrastrar y soltar facilitan la utilización de JSF, HTML y otros elementos de creación de scripts. Esto no solo resulta útil para controlar las funciones básicas de un campo, como por ejemplo el tipo de valor de un campo de texto (entero, alfanumérico), sino que también permite establecer reglas de validación. En Page Designer, los controles de JSF pueden enlazarse a los datos SDO asociados a cada página.

La paleta de Page Designer puede utilizarse para añadir funciones adicionales a páginas de JSF. Por ejemplo, podría añadirse botón "Buy It Now" a la página de detalles de artículo para permitir que un usuario comprara el artículo por el valor establecido por el vendedor.

La figura siguiente muestra los controles de JSF para la página de detalles de subastas. El campo newbid inputText está restringido para aceptar solamente enteros mediante el recuadro de selección Solo entero, tal como se muestra en la esquina inferior derecha de la figura. El campo inputText tiene valores adicionales para Validation, Behavior y Accessibility, definidos en las pestañas situadas bajo h:inputText en la esquina inferior izquierda de la figura. En la pestaña Validación es donde se definen las reglas específicas de validación, utilizando Java. Por ejemplo, la entrada válida para el campo newbid inputText es un entero no nulo, mayor que la puja inicial y mayor que la puja actual más uno.

Este diagrama muestra los controles de JSF utilizados en la página de detalles de subastas.

El código siguiente se ha generado para el campo newbid inputText en la página itemdetails de la aplicación de subastas.

<h:inputText styleClass="inputText" id="newbid" required="true" size="14">
    <f:convertNumber integerOnly="true" />
    <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ?
        pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid :
        pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}">
    </f:validateLongRange>
</h:inputText>

Para obtener más información acerca del desarrollo de archivos JSP de Faces, consulte el tema de ayuda acerca de JavaServer Faces.

Crear el servicio Web

El servicio Web se desarrolló paralelamente a la aplicación Web porque no depende de la aplicación Web; el servicio Web es otra manera de acceder a la lógica empresarial y no incluye toda la funcionalidad de la aplicación Web. Consulte la sección del servicio Web para obtener una descripción más detallada de esta parte de la aplicación de subastas.

Organización de proyectos de subastas

La aplicación Web de subastas tiene varios proyectos. Cada proyecto tiene un objetivo específico. La lista siguiente describe cada proyecto y cómo se utiliza éste en el ejemplo de subastas:
  • El proyecto AuctionV60EAR es el archivo archivador de empresa (EAR) principal que se despliega en el servidor de aplicaciones. Este proyecto es necesario para el entorno de tiempo de ejecución.
  • El proyecto AuctionV60EJB contiene los EJB y las clases de fachada.
  • El proyecto AuctionV60EJBClient mantiene el código generado, incluyendo las clases de SDO y se despliega en el cliente.
  • El proyecto AuctionV60Web contiene todos los archivos JSF, la plantilla y la lógica empresarial para ejecutar los archivos JSF.
  • El proyecto AuctionV60WebService tiene los archivos WSDL del servicio Web y el código fuente Java del servicio Web.
  • El OIDGenerator proyecto y OIDGeneratorClient son necesarios para crear las claves nuevas para las inserciones de base de datos.
Tema principal: Aplicación Web de subastas

Comentarios