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.
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.
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.
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.
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.
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./.
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.
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.
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.
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.
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.
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.
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.
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.