|
El ejemplo de aplicación Web de subastas se desarrolló utilizando Software Development
Platform (SDP) Versión 6.0. En este documento se identifican los bloques de construcción clave de
la aplicación Web de subastas que se muestran en el diagrama siguiente.

Hay muchos componentes en la aplicación Web de subastas. Esto no es una guía de
aprendizaje para la construcción de toda la aplicación. Este documento resalta puntos importantes
de desarrollo y diseño que potencian distintas herramientas proporcionadas con el entorno de
trabajo, de forma que pueda aplicar ese conocimiento a sus propias aplicaciones Web.
Tal como muestra el diagrama precedente, el contenido Web se desarrolló en paralelo a la
lógica empresarial y a los datos. Mientras los diseñadores desarrollaron el estilo y el diseño de
las páginas Web, los desarrolladores de servicios Web y Java codificaron la lógica empresarial para
que controlara esas páginas. Las secciones siguientes describen cómo se crearon esos componentes
clave y su contribución a la aplicación Web de subastas:
- Correlacionar beans de entidad con tablas de base de datos con el
editor de correlaciones EJB
- Generar una fachada de sesión con objetos de datos SDO utilizando el asistente Fachada de bean de sesión
- Definir el diseño de sitio Web con Web Site Designer
- Crear plantillas de páginas Web con Page Designer
- Añadir componentes JavaServer Faces a páginas JSP con Page Designer
- Crear una interfaz de usuario Swing con el editor visual Java
- Crear el servicio Web
Correlacionar beans de entidad con tablas de base de datos con el editor de correlaciones EJB
Enterprise JavaBeans (EJB) ofrece a las aplicaciones Java una forma cómoda de acceder a
los datos mantenidos 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 las llamadas
específicas de base de datos, según indica el bean. Por omisión, las herramientas del entorno de
trabajo de Rational generan 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
distintas bases de datos sin necesidad de reescribir el código
Hay distintos métodos para correlacionar objetos en bases de datos relacionales como por
ejemplo descendente, ascendente y de encuentro en el medio. Un método 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 el paso final. El método ascendente utiliza un esquema de base de datos existente y
diseña las capas dependientes que definen los objetos. El método de encuentro en el medio utiliza
una base de datos existente y objetos existentes y después desarrolla las capas intermedias para
hacer coincidir los objetos con las tablas de base de datos.
En la aplicación de subastas se ha utilizado un método ascendente para desarrollar los
EJB de entidad. La base de datos Cloudscape existía inicialmente y contenía tablas que se ajustaban
bastante a los EJB necesarios. Después de crear una conexión con la base de datos mediante el
asistente Conexión de base de datos, se utilizó el asistente Correlación de EJB a RDB para crear
los EJB correlacionados de una o más tablas, con algunas excepciones. La figura siguiente muestra
los beans EJB de entidad utilizados en la aplicación Auction y las relaciones que los conectan.

El cliente remoto no accede directamente a los beans de entidad de la aplicación de
subastas. Todas las peticiones y respuestas se manejan mediante fachadas de sesión y los
beans se utilizan para acceder a los datos de componente de fondo. Esto permite el acceso
compartido del lado del servidor al almacén de datos persistente. En el apartado siguiente se
tratan más profundamente las fachadas de sesión.
Para obtener más información sobre la correlación de beans de entidad, consulte el tema
de ayuda
Generar
una correlación ascendente.
Generar una fachada de sesión con objetos de datos SDO que
utilizan el asistente Fachada de bean de sesión
La fachada de sesión es la interfaz entre el cliente y el componente de fondo que
proporciona comunicación con los componentes SDO (Objeto de datos de servicio) y en última
instancia con la base de datos. Una fachada de sesión resulta útil cuando el cliente envía
peticiones que necesitan varios objetos para ejecutarse. Al enviar estas peticiones individualmente
a los objetos, puede aumentar el tráfico de red y el periodo de 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 EJB 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 los EJB de componente de fondo, específicos del
sistema, como por ejemplo Category y Role.
- La fachada de usuario encapsula datos específicos del usuario, como por ejemplo Bid,
Item y Role.
Al agrupar los EJB y utilizar dos fachadas distintas, 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 en sí mismo como por ejemplo Category, están controlados por la
fachada del sistema.
Los EJB a los que hace referencia una fachada se eligen de uno en uno, utilizando el asistente
Crear fachada de bean de sesión, tal como se muestra en el diagrama siguiente. Si es necesario es
posible hacer referencia a un EJB en más de una fachada. 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 marcados como inactivos.
Encontrará más información sobre las fachadas de sesión en el documento "Design
Patterns: Session Facade", en el sitio Web
java.sun.com.
La vista Navegación de la herramienta Web Site Designer proporciona una representación visual de la
disposición del sitio. Muestra las páginas individuales y la 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 que se muestra 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. Web Site Designer genera automáticamente las pestañas por el
orden correcto en todas las páginas. Para hacer los cambios visibles en la aplicación que se
ejecuta, vuelva a guardar cada página que utilice la plantilla de navegación. 
Además de la vista Navegación descrita anteriormente, Web Site Designer proporciona una
vista Detalles que organiza artículos de página en una cómoda tabla editable, tal
como se muestra en la figura siguiente. Esta tabla facilita la actualización de propiedades de
página, como por ejemplo, título, autor y etiqueta de navegación.
Para obtener más información acerca de cómo utilizar Web Site Designer para gestionar el
diseño de sitios Web, consulte el tema
Crear
una estructura de sitios Web de la ayuda línea.
El entorno de trabajo viene con un diseñador visual para desarrollar plantillas de
página, así como las mismas páginas Web.
Las plantillas de página son partes reutilizables de código de contenido que
proporcionan un aspecto o un comportamiento común para partes de un sitio Web. Para compartir un
aspecto, las páginas Web solo tienen que 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 tiene que 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 un archivo de plantilla se reflejan automáticamente en cada página que hace
referencia a ese archivo. Por ejemplo, en la aplicación Web de subastas, la plantilla
maintemplate.jtpl, proporciona el diseño general para las páginas de subasta. Los artículos de
página Web pueden añadirse a la plantilla utilizando la paleta de Page Designer que permite
arrastrar y soltar artículos en la página Web. El código HTML necesario 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 artículos clave de la plantilla de subastas son los controles de navegación. La
barra de navegación de la aplicación Web de subastas utiliza dos formas de navegación:
- Pestañas de navegación: visualizan distintos apartados del sitio Web.
- Trayectorias de navegación o "desgloses": visualizan textualmente dónde
está el usuario en el sitio Web, por ejemplo Home > Browse > Listing.

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 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 basándose en los cometidos o las posibilidades de los usuarios o
insertando información específica del usuario en una página Web. El ejemplo de subastas utiliza las
plantillas dinámicas para proporcionar enlaces administrativos en la barra de navegación solo para
los usuarios que han iniciado la sesión como administradores y para cambiar el botón
"Login" por "Logout" una vez que el usuario ha iniciado la sesión
satisfactoriamente.
Para obtener más información acerca de la creación de plantillas de páginas Web,
consulte el tema de ayuda acerca de cómo
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 de JSF gestiona los estados de interfaz de usuario entre peticiones
de servidor y ofrece un modelo de desarrollo simple para manejar los sucesos del lado del servidor
activados por el cliente. Por ejemplo, un JSF puede tener un comportamiento especificado para
sucesos distintos, como por ejemplo una pulsación de botón. Page Designer tiene funciones
incorporadas visualizadas 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 artículos de creación
de scripts. Esto resulta útil no solo 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 habilita el
establecimiento de reglas de validación. En Page Designer, los controles de JSF pueden enlazarse
con los datos SDO asociados con cada página.
La paleta de Page Designer puede utilizarse para añadir funciones adicionales a páginas
JSF. Por ejemplo, puede añadirse un botón "Buy It Now" a la página de detalles del
artículo para permitir que un usuario compre el artículo por el valor que el vendedor ha
establecido.
La figura siguiente muestra los controles JSF para la página de detalles de subasta. El campo
newbid inputText está limitado para aceptar solamente enteros con el recuadro de selección Solo
entero, tal como se ve en la esquina inferior derecha de la figura. El campo inputText tiene
valores adicionales para Validación, Comportamiento y Accesibilidad, tal como se define en las
pestañas debajo de h:inputText, en la parte inferior izquierda de la figura. La pestaña Validación
es dónde se definen las reglas de validación específicas utilizando Java. Por ejemplo, la entrada
válida para el campo inputText newbid es un entero que no sea nulo, que sea mayor que la puja
inicial y mayor que la puja actual más uno. 
El código siguiente se ha generado para el campo inputText newbid 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 Faces, consulte el
tema de ayuda sobre
JavaServer
Faces.
Además de las páginas Web, la aplicación de subastas tiene un cliente Swing Java que
permite a los administradores mantener la información de usuario como por ejemplo nombres y
contraseñas. Al utilizar un cliente Swing, todo el proceso se realiza en el sistema cliente, lo que
reduce el tiempo de espera asociado a las aplicaciones Web. El cliente User Admin lista todos los
usuarios de la aplicación. El administrador puede interactuar con los datos del usuario y gestionar
los atributos específicos sin tener que esperar a recargar una página Web. Un cliente Swing también
proporciona una interfaz más transparente y orientada a la aplicación.
La aplicación del cliente Swing se desarrolló con el editor visual de Java, tal como se
muestra a continuación. Utilizando el editor visual, puede desarrollar visualmente la aplicación,
al tiempo que el código se genera automáticamente. Esto reduce la necesidad de escribir manualmente
código Swing complicado.
La figura anterior muestra la aplicación User Admin dentro del editor visual Java. Los bloques
de la derecha son las fachadas de sesión que utilizan objetos SDO para acceder a la lógica
empresarial. Las líneas sólidas que conectan estos bloques al diseño de interfaz se asocian a
eventos específicos en la interfaz de usuario. Las líneas trazadas muestran qué parámetros se pasan
a los objetos SDO y los valores que devuelven. Desarrollar esta aplicación visualmente es más
rápido que escribir un complicado código Swing Java y facilita los cambios en la interfaz de
usuario.
La interfaz User Admin se ha creado directamente en el editor visual Java. Puede
seleccionar componentes Swing nuevos en la paleta y añadirlos a la aplicación. Cualquier componente
puede personalizarse para satisfacer el aspecto deseado utilizando las herramientas, los
asistentes, los comentarios y las propiedades adecuados en la hoja de propiedades. Además, los
componentes que pueden mostrar el contenido, como por ejemplo las tablas y los campos de texto
pueden enlazarse para mostrar los datos proporcionados por un origen de datos.
Una vez desarrollada la aplicación User Admin, debe desplegarse en el sitio Web. La
aplicación User Admin completada se empaqueta en un archivo EAR y se coloca en la estructura de
directorios del sitio Web. Se crean scripts y recursos HTML adicionales para desplegar
correctamente la aplicación a través de WebStart, tal como se especifica en la documentación del
software de WebSphere Application Client incluido con el producto WebSphere Application Server. Los
recursos que se ejecutan en el lado del cliente se firman con un certificado por razones de
seguridad. Una vez se ha llevado a cabo toda la configuración necesaria en la documentación, la
aplicación está lista para desplegarse en un cliente que disponga solamente de un navegador y de
Java WebStart.
Después de crear los componentes de la aplicación Web, la aplicación Web de subastas se
despliega y se ejecuta en el servidor de aplicaciones. Hay componentes adicionales en la aplicación
de subastas disponibles en la Galería de ejemplos.
Para obtener más información, consulte el tema de ayuda
Editar
Java en el editor visual.
Crear el servicio Web
El servicio Web se ha desarrollado en paralelo con la aplicación Web porque no depende de
la aplicación Web; el servicio Web es otro medio de acceder a la lógica empresarial y no incluye
toda la funcionalidad de la aplicación Web. Consulte el apartado
Servicio Web para obtener una descripción más detallada de esta
parte de la aplicación de subastas. |