Está en la página 1de 23

MODELOS DE

PROGRAMACIÓN II
Pedro Julián González

EJE 2
Analicemos la situación

Fuente: Shutterstock/510212359
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Framework y el modelo MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Tipos de frameworks web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

JavaServer Faces: tecnología de interfaz de usuario . . . . . . . . . . . . . . . . . . 7

Frameworks tipo RIA con base en el servidor . . . . . . . . . . . . . . . . . . . . . . . 8

Atributos de JSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

JavaServer Faces: beneficios tecnológicos . . . . . . . . . . . . . . . . . . . . . . . . . 15

Ciclo de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Creación de proyectos con JSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Creación de servicios web SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Servicios web desde la vista del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Modelo de programación JAX-WS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
ÍNDICE
Introducción

La industria del software se ha convertido en uno de los pilares para la


economía latinoamericana y en general del mundo entero. Solamente en
Colombia, para junio de 2016, el desarrollo de software ya representaba un
poco más del 1 % del PIB. Esto se traduce en que cada día más personas,
tanto independientes como grupos de desarrolladores, están invirtiendo
INTRODUCCIÓN

tiempo y dinero en pro de expandir la generación de aplicaciones que ayuden


a la solución de problemas al interior de las organizaciones y sobre todo a la
optimización y mejora de los procesos que allí se encuentran.

De allí la importancia de conocer más a fondo los elementos que com-


ponen las aplicaciones y sobre todo aquellas que están orientadas a la web,
teniendo en cuenta que gracias a la constante evolución y mejora de los dis-
positivos informáticos y la relevancia que internet ha sumado allí, hoy en día
la información puede analizarse, procesarse y apropiarse casi de inmediato.
Framework
El término framework se utiliza en dife- capaz de organizar la aplicación en tres
rentes escenarios del desarrollo de sistemas modelos definidos y separados. En pri-
de software, y no es exclusivo al de las apli- mera instancia se encuentra un modelo
caciones orientadas a la web. Se pueden que muestra los datos de la solución y los
encontrar frameworks para la generación correspondientes protocolos de negocio, de
de soluciones, por ejemplo, de tipo médico, igual forma hace referencia al conjunto de
de visión por computador, para videojuegos vistas utilizadas para la representación de
y en general para cualquier contexto que se los formularios para la respectiva entrada
quiera pensar. En general, framework hace y salida de información, por último, se
referencia a un componente de software, encuentra el tercer modelo, el cual es un
compuesto de elementos intercambiables y conjunto de componentes de tipo contro-
configurables que es utilizado puntualmente lador, que logran procesar las solicitudes de
en la generación de soluciones de software. los usuarios además de controlar el flujo de
Dicho de otra forma, un framework se con- ejecución del sistema.
sidera como un programa incompleto de
índole genérico y altamente parametrizable Los frameworks para web, en su mayo-
al que se le pueden ir añadiendo distintos ría, implementan dicho patrón. Utilizar
elementos para generar un producto total- MVC en entornos Java orientados a la web
mente terminado. se denomina comúnmente como arqui-
tectura modelo 2. Esta arquitectura hace
referencia a la definición y uso de servlets
orientados al procesamiento de peticiones
Un framework tiene como objetivos prin-
y páginas JSP, utilizadas para visualizar la
cipales la aceleración del proceso de desa-
interfaz de usuario, implementando la el
rrollo de software, la reutilización de código
modelo a través de JavaBeans, también
existente y la promoción de prácticas ópti-
mas de desarrollo, cabe mencionar, por
conocidos como POJO.
ejemplo, la definición y el uso de patrones.
Por tanto, un framework puede definirse
POJO
como el conjunto de componentes (cla- Son las iniciales de “Plain Old Java Object”, que puede inter-
ses en java o cualquier otro lenguaje de pretarse como “un objeto Java plano y antiguo”. Un POJO es
programación, archivos y descriptores de una instancia de una clase que no extiende ni implementa
nada en especial. Para los programadores Java sirve para
parametrización en XML) que construyen enfatizar el uso de clases simples y que no dependen de un
eficientemente un diseño reutilizable que framework en especial. Este concepto surge en oposición al
modelo planteado por los estándares EJB anteriores al 3.0, en
agiliza y, por ende, facilita el desarrollo de los que los Enterprise JavaBeans (EJB) debían implementar
soluciones de software orientados a la web. interfaces especiales (Pesquera, 2014).

Framework y el modelo MVC

MVC hace referencia a una guía bas-


tante relevante, enfocada en el diseño de
arquitecturas de soluciones de software
que permiten ofrecer una interactividad
constante con usuarios. Dicho patrón es

Modelos de Programación II - eje 2 analicemos la situación 5


Tipos de frameworks web

En el mundo del desarrollo, pueden encontrarse varios tipos de frameworks: aquellos


que son enmarcados en la interfaz de usuario, tales como Java Server Faces, los que están
orientados a aplicaciones para la publicación de documentos, como Cocoon, también
los Struts, los cuales se orientan al control de eventos y otros que pueden incluir varios
elementos como Tapestry. Por lo general, los frameworks se han de encargar del ofreci-
miento de una capa propia de controladores teniendo en cuenta MVC o el modelo donde
incluye JSP y servlets, brindando distintos mecanismos que faciliten integrarse con otras
herramientas definidas para la implementación de las respectivas capas de presentación
y negocio.

Características

En el siguiente cuadro, se enuncian un conjunto de atributos que pueden encontrarse


en la mayoría de los frameworks que existen en la actualidad.

Abstracción de sesiones No se hace necesario manipular las sesiones y las URL de forma
y URL directa, ya que el framework es quien se encarga de realizar esa tarea.
Incluye las interfaces y las herramientas necesarias para integrarse
Acceso a datos
con herramientas para el acceso a datos en XML, BBDD, entre otros.
Los frameworks, en su mayoría, implementan un conjunto de con-
troladores para la administración de eventos, la entrada de datos a
Controladores través de formularios o el acceso a una determinada página. Dichos
controladores se adaptan de manera fácil a las necesidades de un
proyecto en específico.
Integran mecanismos para la identificación de usuarios, a través de
Control y autenticación un login, password, los cuales permiten la restricción del acceso a
ciertas páginas a algunos usuarios.

View components Controller components

Struts configuration
File
(struts-config.xml)

View component Action


Request class
(HTML/JSP)
Struts
Action
Controller
class
View component Forward Servlet
(JSP) Action
class

Figura 1. Descripción del funcionamiento de un framework


Fuente: http://blog.burakkutbay.com/spring-mvc-dersleri-nedir.html/

Modelos de Programación II - eje 2 analicemos la situación 6


Se ha tomado como referencia el framework open-source
Struts, el cual está desarrollado en Java haciendo uso de ser- Open-source
vlets y se basa en el modelo 2, una variación de MVC. Es una expresión de la len-
gua inglesa que pertenece al
ámbito de la informática. Es
A diferencia de otros frameworks, Struts brinda su propio importante distinguir entre el
software open-source, que dis-
controlador y ofrece gran integración con otras tecnologías pone de la mencionada carac-
para la implementación del modelo, a través de tecnologías de terística de presentar su código
abierto, y el software libre (que
acceso a datos como Hibernate o JDBC y la vista, por medio puede descargarse y distribuir-
de JSP, XSLT o Velocity. Struts ofrece un sistema que permite de se de manera gratuita) (Defini-
ción.de, s.f.).
forma eficiente la comunicación entre las vistas que ofrecen
los datos y el modelo que los contiene.

Instrucción
Lo invitamos a la página principal del eje para ver
las videopreguntas.

JavaServer Faces: tecnología de interfaz de usuario

JavaServer Faces es un framework de interfaz de componentes de usuarios que se


ubica del lado del servidor para aplicaciones orientadas a la web, las cuales se basan en
Java. La tecnología JSF está compuesta principalmente por los siguientes componentes:

• Una API para la presentación de componentes de interfaz de usuario (UI) y admi-


nistrar su correspondiente estado.

• Utilización de eventos, validación en el servidor y la conversión de datos.

• Definición de parámetros para la correcta navegación de páginas y sitios.

• Soporte de accesibilidad e internacionalización.

• Uso de librerías de marcas JSP configurables para la muestra de distintos ele-


mentos en un sitio JSP y la generación de enlaces de componentes a objetos del
respectivo servidor.

Al definir correctamente las librerías de etiquetas y el modelo de programación, se


facilita la correspondiente construcción y mantenimiento de los programas con interfaces
de usuario de servidor. De igual manera, también es posible:

• Poner distintos componentes en una página a través del uso de etiquetas.

Modelos de Programación II - eje 2 analicemos la situación 7


• Enlazar directamente en el servidor eventos que se generan por componentes que
incluyen la programación de la aplicación.

• Lograr relacionar elementos de la interfaz de usuario en una página haciendo uso


de los datos del servidor.

• Desarrollar una interfaz de usuario compuesto por componentes extensibles y re-


utilizables.

• Guardar y restaurar los estados de la interfaz de usuario más allá de la duración


de las solicitudes.

Lectura recomendada
Lo invitamos a la página principal del eje
para realizar la lectura complementaria:

Introduction to JavaServer Faces (JSF)


Development

Elena Lowery, IBM Corporation

Frameworks tipo RIA con base en el servidor

Desde hace varios años se han vuelto populares las aplicaciones orientadas a la web
que manejan una única página, diferenciándose de las soluciones de software tradi-
cionales que se basan en la navegación de múltiples páginas. Las primeras intentan
simular el comportamiento del software de escritorio y se denominan RIA (Rich Internet
Applications).

Entre los pioneros en la promoción de este tipo de soluciones se encuentra Google,


con ejemplos puntuales como lo es Google Maps. Esa aplicación hace uso de JavaScript
intensivamente para seleccionar opciones como imprimir, enviar, o simplemente para
interactuar con el mapa. Dichas acciones, en su totalidad, se llevan a cabo en un sitio
único del navegador. Normalmente en los programas tradicionales, las solicitudes que
se hacen al servidor permiten la generación de un nuevo archivo HTML. A continuación,
en la parte izquierda, se describe el modelo.

Modelos de Programación II - eje 2 analicemos la situación 8


Figura 2. Descripción del funcionamiento de las aplicaciones RIA
Fuente: http://www.jtech.ua.es/j2ee/publico/jsf-2012-13/sesion01-apuntes.html

Posteriormente al servidor se le continúan realizando solicitudes de tipo HTTP, pero


el navegador no es quien realiza directamente esta tarea, sino conjuntos de funciones
JavaScript que residen en la página. Esas funciones hacen el envío de la solicitud y sus
correspondientes valores al servidor. Este retorna estos datos en un formato específico
(XML, JSON o un texto). Las funciones tipo JavaScript formatean estos datos en el nave-
gador y plasman en la pantalla los valores, modificando el debido árbol de naturaleza
DOM. Por ende, el servidor tiende a que no se genere un nuevo archivo de página, sola-
mente los datos. Al enfoque se le denomina asynchronous JavaScript and XML (Ajax).

Entre los frameworks tipo JavaScript más conocidos está jQuery, el cual facilita la
tarea ardua de hacer la correspondiente definición de la interfaz de usuario del software.
Sin embargo, el testeo y mantenimiento del código tiende a hacerse complicado. Aquí
participan varios componentes: en primera instancia las páginas con contenido HTML
en las que se encuentra inmerso el código JavaScript y la comunicación con el servidor.
También suele hacerse complicado reciclar y por ende compartir la programación que ha
sido escrita en JavaScript con diferentes sitios y comunidades de desarrolladores.

Modelos de Programación II - eje 2 analicemos la situación 9


Una opción eficiente a la generación de código en JavaScript son los llamados frameworks
RIA, los cuales se basan en el servidor y por tanto los desarrolladores no requieren escribir
directamente código JavaScript, ya que hacen uso de elementos de altísimo nivel (como
menús desplegables, paneles y combos), en los cuales el servidor incluye en los sitios resul-
tantes. Esos atributos son los componentes tipo framework, para el caso GWT (Google Web
Toolkit), JSF (JavaServer Faces) o ZK.

Es aquí entonces donde el desarrollador genera una interfaz de usuario haciendo uso de
un lenguaje de elementos específicos. El resultado se almacena en el servidor como una
página de texto. En el momento en el que el servidor recibe una solicitud, debe procesar la
página y generar otra que contenga aquellos componentes de la interfaz usando un formato
JavaScript y HTML, este es enviado al navegador como respuesta a la solicitud inicial.

Para que JSF2 defina la correspondiente interfaz, debe hacerlo con archivos de página
que tengan formato XHTML con diferentes tipos de marcas o etiquetas. Esas páginas son
denominadas sitios JSF o páginas. La siguiente figura muestra con simplicidad, como fun-
ciona JSF en la generación de un sitio o página por vez primera.

Figura 3. Descripción del funcionamiento de las peticiones en aplicaciones tipo RIA


Fuente: http://www.jtech.ua.es/j2ee/publico/jsf-2012-13/sesion01-apuntes.html

Modelos de Programación II - eje 2 analicemos la situación 10


El navegador lleva a cabo una solicitud a una clase de Java, de esta manera se define
una URL específica, en la cual se encuentra lo que comúnmente se conoce como bean
el sitio JSF que desea mostrarse. Un archivo gestionado.
tipo servlet denominado motor de JSF y que
se encuentra en el servidor, es el que logra En el momento en que el documento es
recibir la petición para encargase de cons- mostrado en el navegador, los usuarios tra-
truir un árbol de componentes teniendo bajan con ella (para el caso, escribiendo en
como referencia el archivo JSF que es soli- un campo el tipo texto, pulsando un botón,
citado. Dicho árbol es capaz de replicar la o seleccionando una opción de un menú
correspondiente composición del sitio JSF desplegable). Aquí es el momento de uti-
original, representando la estructura propia lizar el enfoque de Ajax. Sus componentes
del sitio que deberá retornarse al navega- están construidos con código JavaScript
dor, haciendo uso de Java Object. En caso que tiene como tarea administrar toda
de definirse un componente de tipo menú la interacción y enviar al servidor espe-
en la página JSF con la correspondiente cíficamente las solicitudes. Las solicitudes
etiqueta <h:selectOneMenu>. Al interior del no deben generar una página nueva. En
árbol deberá construirse un componente varias ocasiones basta con cambiar algún
tipo Java de la respectiva clase javax.faces. componente del DOM de la actual página,
component.html.HtmlSelectOneMenu. manteniendo un enfoque parecido al de
Ajax. A continuación, se muestra, la des-
cripción de cómo se lleva a cabo la actua-
lización de un sitio tipo JSF.
¡Recordemos que!
Al construirse dicho árbol, el código Java
debe ejecutarse en el servidor y de esta
manera completar los elementos del
árbol de componentes con los respecti-
vos valores de la solución. Finalmente, es
generada la página HTML que es enviada
nuevamente al navegador.

Los componentes deberían recoger y


mostrar datos obtenidos y enviados a la
aplicación. A este proceso se le conoce
como data binding o ligado de datos. En los
frameworks que se basan en el servidor, el
ligado es bastante sencillo ya que los datos
y la respectiva definición de la interfaz de
usuario se encuentran en un solo sitio.

Para JSF2 la manera de ligar datos aso-


ciada a la interfaz es por medio del uso de
la anotación @ManagedBean al interior de

Modelos de Programación II - eje 2 analicemos la situación 11


Figura 4. Actualización de un sitio tipo JSF
Fuente: http://www.jtech.ua.es/j2ee/publico/jsf-2012-13/sesion01-apuntes.html

El servidor se encarga de recoger la petición, procesarla y recuperar el árbol de compo-


nentes del sitio. Además, debe generar unos valores formateados en XML que son devuel-
tos al usuario (cliente). Ya en este punto, el código JavaScript es capaz de procesarlos para
posteriormente actualizar el DOM de la página. Algunas ventajas de este desarrollo, que
se basa en el servidor frente a la generación de código directo en JavaScript, se puede
destacar de la siguiente forma:

• Asume atributos de portabilidad para hacerse compatible de forma sencilla con


diferentes navegadores y plataformas (móviles).

• Más simple al utilizarse: es bastante sencillo acceder a los objetos de los datos y
negocio a partir de la presentación.

• Amplia seguridad y robustez.

• Al momento de realizar mantenimientos, pruebas o modificaciones se realizan de


manera más fácil.

Atributos de JSF

Es claro que JSF está dentro del marco de los framework MVC, el cual se basa en el
API de servlets y brinda distintos elementos en forma de marcas definidas al interior de
páginas con formato XHTML a través del framework Facelets. Este último se ha definido en
la especificación 2 de JSF como el componente principal que brinda atributos de plantillas
y de igual forma de creación de componentes más elaborados o compuestos. Antes de

Modelos de Programación II - eje 2 analicemos la situación 12


la especificación actual, era común utilizar filosofía de servlets y no necesita de servi-
JSP para estructurar las páginas JSF. cios adicionales, entonces para la correcta
ejecución de soluciones JSF solo es nece-
JSF hace uso de las Facelets Page como sario un contenedor de servlets tipo Jetty
objetos tipo JavaBean, modelos, vistas y o Tomcat.
también métodos de tipo controladores. Un
Faces Servlet se encarga de realizar todo el Comprender la forma como funciona JSF
procesamiento de solicitudes HTTP, recibir es bastante relevante ya que debe compa-
los valores de entrada, verificarlos, trans- rarse con JSP. Es importante recordar que
formarlos, ubicarlos en objetos del modelo los archivos de tipo JSP incluyen senten-
y llamar a las acciones que el controlador cias HTML que poseen marcas especiales
posee, así como también definir y mostrar al igual que sentencias propias de Java. La
la respectiva respuesta generada haciendo página es procesada en un solo paso de
uso del árbol de componentes. arriba hacia abajo y de esta forma logra
transformase en un servlet. Los componen-
JSF brinda las características descritas a tes JSP van procesándose a medida que van
continuación: apareciendo convirtiéndose en código Java,
el cual está incluido en el servlet. Posterior
• Definición de todo el conjunto de in- a la ejecución de la conversión, las solici-
terfaces de usuario a través del uso tudes a la página por parte de los usuarios
de vistas que asocian distintos ele- generan la respectiva ejecución del servlet.
mentos visuales.

• Conexión de los respectivos elemen- Servlets


Son pequeños programas escritos en Java que admiten
tos gráficos junto con los valores o peticiones a través del protocolo HTTP. Los servlets reci-
datos de la solución a través de los ben peticiones desde un navegador web, las procesan
y devuelven una respuesta al navegador, normalmente
cada vez más usados beans de tipo en HTML. Para realizar estas tareas podrán utilizar las
gestionado. clases incluidas en el lenguaje Java. Estos programas
son los intermediarios entre el cliente (casi siempre
navegador web) y los datos (BBDD) (Medium, 2017).
• Validación automática de la entrada JSP
del usuario, así como la conversión Es un acrónimo de Java Server Pages, que en castellano
de datos. vendría a ser algo como páginas del servidor Java. Es,
pues, una tecnología orientada a crear páginas web
con programación en Java (desarrolloweb.com, 2002).
• Interoperabilidad entre diferentes
vistas.
El funcionamiento en JSF es diferente. Un
• La internacionalización. archivo de este tipo (JSF), de igual forma
contiene un código HTML y marcas espe-
• Desde la especificación 2.0 existe ciales, sin embargo, su procesamiento se
una estructura básica o modelo de hace más complicado. Una marcada dife-
intercomunicación Ajax entre el ser- rencia con JSP son los valores resultantes
vidor y las vistas. de todo el procesamiento al interior del
servidor del sitio cuando se lleva a cabo la
Como se ha mencionado, JSF debe eje- solicitud. JSP colabora para que el sitio sea
cutarse sobre entornos dispuestos bajo la procesado y transformado en un servlet. Sin

Modelos de Programación II - eje 2 analicemos la situación 13


embargo, en JSF el proceso resultante es un tornado al navegador como el ele-
árbol que contiene Java Object que luego mento resultante de la solicitud.
se encarga de generar el respectivo HTML.
• El árbol de elementos JSF es guarda-
HTML do en un buffer, con el objetivo de
Es un lenguaje de programación que se utiliza para el que, en posteriores solicitudes a la
desarrollo de páginas de internet. Se trata de las siglas página, no haya necesidad de gene-
que corresponden a Hyper Text Markup Language, es
decir, lenguaje de marcas de hipertexto (códigofacilito. rarlo nuevamente, sino que se pueda
com, s.f.). utilizar el que ya existe.

En JSP el servlet es el encargado de gene-


En el momento en que el usuario lleva
rar el HTML a través de sentencias incrus-
a cabo la respectiva petición al sitio JSF,
tadas en su código, las cuales se encargan
se llevan a cabo las acciones descritas a
de escribir en el stream de salida. Para JSF,
continuación, teniendo en cuenta el orden
el documento HTML es generado como el
establecido:
resultante de las llamadas a métodos que
realiza el árbol. Una gran ventaja en el
En un modelo cliente-servidor, una petición
es un requerimiento o solicitud que le hace enfoque JSF es que el respectivo proceso
un cliente a un servidor. de renderización de la interfaz de usuario es
Por ejemplo, un servidor web se encarga de
mantener online un sitio web. Un cliente (el
mucho más flexible, ya que también existe
visitante a través de su navegador) solicita la posibilidad de generar con el mismo JSF
que dicho servidor le dé una página web
determinada. Esa solicitud es una peti-
diferentes sentencias de programación
ción (específicamente una petición HTTP) para varios dispositivos. Para el caso, se
(alegsa.com.ar, s.f.).
podría utilizar una misma aplicación JSF
que permita servir archivos de página a
dispositivos móviles y navegadores web.
• El sitio es procesado de arriba hacia
abajo y es generado el respectivo
árbol de elementos JSF que forma
objetos que se programan a partir
del uso de clases del correspondiente
framework.

• Se pueden obtener los datos que in-


trodujo el usuario y de igual manera
es posible modificar los beans que
han sido administrados con ellos.

• Se modifican los elementos con los


datos que provienen de los atributos
de los beans administrados.

• Se solicita a los elementos que sean


renderizados, generando el corres-
pondiente código HTML, que es re-

Modelos de Programación II - eje 2 analicemos la situación 14


JavaServer Faces: beneficios tecnológicos

Diversas ventajas hacen que JSF sea una tecnología que se ajusta al marco del desa-
rrollo de aplicaciones orientadas a la web, entre ellas pueden mencionarse:

Ofrece una muy bien definida separación entre la presentación


y el comportamiento. El software orientado a la web es construido HTTP
a partir del uso de tecnología JSP. Este consigue en cierta medida Facilita la definición de la
sintaxis y semántica que uti-
la separación. Aun así, una solución JSP no puede mapear solici- lizan los distintos softwares
tudes HTTP, manejar eventos puntuales de elementos o gestionar web (tanto clientes, como
servidores y proxis) para in-
componentes de tipo UI como objetos que tienen un estado al teractuar entre sí.
interior del servidor. Este protocolo opera por
petición y respuesta entre el
cliente y el servidor. A menu-
La separación que se da entre la presentación y la lógica tam- do las peticiones tienen que
bién le permite a cada desarrollador que hace parte del equipo de ver con archivos, ejecución
de un programa, consulta a
trabajo de un proyecto web enfocarse en su parte del proceso, y una base de datos, traduc-
brinda un modelo simple de desarrollo que facilite de manera fácil ción y otras funcionalidades.
Toda la información que
entrelazar las respectivas piezas. Para el caso, los autores de pági- opera en la web mediante
nas que no tienen gran experticia en programación pueden hacer este protocolo es identifi-
cada mediante el URL o di-
uso de las marcas de componentes UI que tiene la tecnología rección (definicionabc.com,
JavaServer Faces, lo cual ayuda a asociar el código de la aplicación s.f.).

desde el interior de la página sin tener que escribir script alguno.

¡Recordemos que!
Una meta clara de JavaServer Faces es la de mejorar los conceptos
familiares capa-web y disadvantage de componente-UI, sin limitar
a una tecnología particular de script o un lenguaje de etiquetas.
Aunque dicha tecnología incluye una librería de etiquetas o mar-
cas JSP personalizadas para representar elementos en un sitio JSP,
los correspondientes API de la tecnología JavaServer Faces se han
construido directamente sobre el API JavaServlet. Esto ayuda en la
realización de algunas cosas como usar una tecnología diferente
en el ámbito de presentación junto a JSP, generar componentes
propios y personalizados, desde las clases de componentes y, de
esta forma, generar salida para distintos dispositivos tipo cliente.
De esta forma, se podrán encapsular muchas otras tecnologías
como Ajax en componentes JSF, haciendo que su uso sea más
productivo y sencillo, ya que el programador ha sido aislado de
ellas (Junta de Andalucía, s.f.).

Modelos de Programación II - eje 2 analicemos la situación 15


JavaServer Faces brinda una gran varie- correspondiente ciclo, generando y usando
dad de componentes de tipo open-source los objetos Java que representan los respec-
para diferentes funcionalidades que se tivos componentes JSF y, de igual forma, los
lleguen a necesitar. Tomahawk de MyFa- beans administrados. Existe una marcada
ces y ADF Faces de Oracle son un ejemplo relación entre la generación de sentencias
de dichos componentes. De igual forma, HTML y estos objetos, la cual es dada a par-
también existe una cantidad amplia de tir del árbol y se constituyen en la base del
herramientas para el desarrollo IDE en JSF, funcionamiento eficiente del framework.
esto debido a que tiene el estándar de Java.
JavaServer Faces brinda una enriquecida A continuación, se describen las fases del
arquitectura enfocada a la administración ciclo de vida:
del estado de los elementos que lo com-
ponen, el proceso de los datos, manejar 1. Restaurar la vista (restore view). Aquí
eventos y validar la entrada del usuario. se obtiene el árbol que corresponde
a la vista JSF de la solicitud. Si ya se
IDE ha podido generar con anterioridad,
Es un entorno de programación es posible que se recupere, pero si el
que ha sido empaquetado como
un programa de aplicación, o sea, usuario está visitando por primera
consiste en un editor de código, vez la página, se genera teniendo en
un compilador, un depurador y un
constructor de interfaz gráfica. cuenta la descripción dada en JSF.
Los IDE pueden ser aplicaciones
por sí solas o pueden ser parte de
aplicaciones existentes (Ecured, 2. Añadir los datos de la solicitud (apply
s.f.). request values). Posterior a la obten-
ción del árbol de componentes, de-
De igual forma, ofrece una adaptación ben procesarse todos los valores que
eficiente para desarrolladores que estén están asociados. Los datos de la soli-
hasta ahora incursionando en el mundo citud son convertidos a tipos de da-
de la programación. No obstante, usar tos Java; sin embargo, para los ele-
JavaServer Faces también genera una gran mentos que tienen el atributo true,
desventaja: su naturaleza como estándar se validan, pasando a la siguiente
hace que JSF no evolucione de manera fase.
rápida como suele suceder en otros entor-
nos como Wicket, WebWork o Spring. 3. Procesar las validaciones (process
validations). Deben validarse todos
Ciclo de vida los datos. Si existiesen errores, debe
ponerse un mensaje de error y debe
En JSF se le conoce como ciclo de vida al terminarse el ciclo de vida, pasando
conjunto secuencial de fases a través de las a la renderización de la respectiva
cuales debe pasar una solicitud JSF, desde respuesta.
el momento en que se recibe en el servidor
hasta que es generado el documento HTML 4. Actualizar los valores del modelo
en forma de página. (update model values). Al llegar a
esta etapa, los valores ya se han de-
El servlet implementado por el fra- bido procesar y de igual manera han
mework recibe la solicitud y se encarga del debido validarse. Los atributos se ac-

Modelos de Programación II - eje 2 analicemos la situación 16


tualizan de los beans administrados que se encuentran en asocio con los compo-
nentes.

5. Invocar a la aplicación (invoke application). En esta fase, los atributos de los beans
que se encuentran asociados a componentes de entrada (input) ya han debido
actualizarse. Se hace un llamado a la acción que ha seleccionado el usuario.

6. Renderizar la respuesta (render response).

Figura 5
Fuente: http://www.jtech.ua.es/j2ee/publico/jsf-2012-13/sesion03-apuntes.html

Al culminar una a una las fases, se debe comprobar si existe cualquier evento que
deba procesarse en esa fase y deberá llamarse a su correspondiente administrador; son
llamados los manejadores de los eventos, quienes deben ser procesados en cualquier
fase. De igual manera, los manejadores pueden pasar a la última fase del ciclo. Esto
con el objetivo de renderizar de forma eficiente el árbol de componentes, haciendo un
llamado al método Render Response que hace parte del FacesContext. También puede
renderizarse el componente que está asociado con el evento y establecer una llamada al
método Response del FacesContext y de esta forma culminar el ciclo de vida.

JSF genera un evento (PhaseListener) al principio y al finalizar cada etapa del ciclo de
vida de la solicitud. Si lo que se busca es capturar el evento, debe definirse la clase que
logre implementar la interfaz PhaseListener y los correspondientes métodos afterPhase
y beforePhase.

Modelos de Programación II - eje 2 analicemos la situación 17


Creación de servicios web SOAP
Instrucción
Pueden crearse servicios web que
Lo invitamos a la página principal del ofrezcan un conjunto de métodos a los
eje para observar la infografía. que puedan llamarse a través de RPC, es
decir, desde cualquier lugar que tenga un
acceso a internet haciendo uso de proto-
colos estándar (conocidos como mensajes
SOAP).
Creación de proyectos con JSF
Por esto se debe estar en capacidad de
Las soluciones de software de tipo JSF interpretar las aplicaciones en donde se
hacen uso de servlets que pueden ejecu- desarrollen los mensajes SOAP entrantes
tarse, por lo general, en un contenedor de ya que de esta forma facilitará el correcto
aplicaciones web sin importar su natura- uso de un método. Luego, deberá utilizarse
leza. Puede mencionarse como de los más el método que se solicitó, y con el respec-
conocidos el Tomcat 6.0.x, por ejemplo. No tivo resultado que sea retornado, se deberá
hace falta un servidor de aplicaciones que establecer un mensaje tipo SOAP de res-
sea compatible con toda la definición Java puesta para asimismo retornarlo al cliente.
EE 5 o 6.

Una aplicación web JSF debe contener ¡Recordemos que!


los siguientes elementos:
Si el desarrollador tuviese que incluir el código
• Librerías de implementación de JSF. para la interpretación de los mensajes de
entrada, y tener que generar manualmente
• Páginas JSF. los mensajes de respuesta, la tarea de desa-
rrollo de servicios web no sería una actividad
• Directivas en el fichero web.xml. asequible.

• Fichero de faces-config.xml.

• Clases de Java con los beans gestio-


nados. En este punto, si se tuviera que forzar al
desarrollador a construir el mensaje SOAP
de forma manual cada vez que elabore
un servicio web, probablemente cometerá
algún error y no podrá respetar con preci-
sión el estándar SOAP. Aquí, este aspecto se
volvería un gran problema para las tareas
de interoperación de los respectivos servi-
cios web, siendo uno de los atributos que
se persiguen con el uso de esta tecnología.

Modelos de Programación II - eje 2 analicemos la situación 18


Para no incurrir en problemas de este
tipo, deben usarse librerías que faciliten Lectura recomendada
la lectura y/o la generación de mensajes Lo invitamos a la página principal del eje
SOAP para el llamado de métodos de tipo para realizar la lectura:
remoto, para este caso puede usarse la API
JAX-WS. Web 2.0: Arquitectura orientada a servicios
en Java (pp. 69-78)
Si lo que se busca es simplificar la acti-
Pablo García, Miguel López, Pedro Castillo,
vidad de desarrollo de servicios orientados
Jesús González y María García
a la web, se cuenta con múltiples herra-
mientas que a partir de la generación de
las clases implementan un servicio que
automáticamente despliega todo el código
necesario para la lectura del mensaje SOAP Servicios web desde la vista del
de entrada, para luego llevar a cabo la servidor
invocación del método, posteriormente
lograr escribir el mensaje SOAP de salida y Como ya se ha revisado, un elemento
retornarlo al cliente. WSDL establece las operaciones al interior
de los servicios web y establece compo-
Por esto el desarrollador debe siempre nentes alrededor del formato de los datos
centrarse exclusivamente en si se quiere y requerimientos de transporte haciendo
denominar “tedioso” el trabajo de pro- uso de la red. Por lo general un WSDL no
gramar las funcionalidades que involucran impone requerimiento alguno alrededor
los servicios, olvidando los mecanismos de del modelo de programación del servidor y
estos. mucho menos del cliente.

JAX-WS es la librería basada en un pro- La definición de servicios web por ejem-


tocolo de Sun Microsystems, sin embargo, plo para Java EE (JSR-109) establece tres
no todos los servidores de aplicaciones diferentes maneras de implementar la
hacen uso de este recurso para la gestión correspondiente lógica de negocio de un
de los correspondientes servicios web. Para servicio web:
el caso de Weblogic, que se encuentra defi-
nido a partir de JAX-WS, logra mantener • Como un bean de sesión sin esta-
varias extensiones de tipo propietario sobre do: al implementar un servicio web
esta API. Es importante entonces centrarse (componente port) debe hacerse a
en el desarrollo de servicios con Glassfish y través de la creación de un bean de
Netbeans, siendo el primero el que incor- sesión que no posea estado, el cual
pora las versiones más actualizadas de las incluye los métodos del SEI (Service
librerías estándar. Endpoint Interface) de la misma for-
ma como está descrito en la especi-
ficación de EJB 3.0.

• Como una clase Java: para esta si-


tuación debe implementarse el port
como un servlet JAX-WS.

Modelos de Programación II - eje 2 analicemos la situación 19


• Como un Singleton Session Bean: aquí debe crearse un Singleton Session Bean el
cual implementa todos los métodos de un SEI teniendo en cuenta lo especificado
en EJB 3.1.

Los componentes de tipo port establecen la vista del servidor de un servicio web. El
port brinda un servicio, el cual está asignado a una dirección física particular establecida
por las características tipo address de la definición <port> de un WSDL.

Un componente Port genera una solicitud de operación establecida en un <portType>


de un WSDL. La correcta implementación del servicio (Service Implementation Bean)
dependerá del repositorio donde se encuentre el componente port, sin embargo, debe
tenerse en cuenta que es una clase Java que logra implementar las correspondientes ope-
raciones o métodos que han sido definidos al interior del SEI (Service Endpoint Interface).

SEI, puede definirse como el mapeado java del <portType> y <binding>, el cual se ha
asociado a un <port> de un WSDL. Los servicios web pueden definirse como el conjunto
de elementos tipo Port que se distinguen particularmente por su dirección física, los
cuales deben mapear en componentes port de manera separada, cada uno con sus
atributos exclusivos, aunque probablemente compartidos, entre estos se encuentra el
Service Implementation Bean. A continuación, se puede ver una vista del servidor el cual
se hace partícipe de un servicio web.

Container

Port Port

Service Service
Endpoint Service Endpoint Service
Interface Impl Interface Impl

Port

Service
Endpoint Service
Interface Impl

Figura 6. Vista del servidor que se hace partícipe de un servicio web


Fuente: propia

Modelos de Programación II - eje 2 analicemos la situación 20


Un port y propiamente su ciclo de vida
se controla en completitud por el conte- Instrucción
nedor, sin embargo, mantiene el mismo
ciclo que el contenedor tiene. Los ports se Lo invitamos a la página principal del
crean e inicializan a través del contenedor eje para revisar la nube de palabras.
previo a que la llamada inicial, sea reci-
bida en la dirección del <port> del WSDL.
Los ports se destruyen en el momento en
que el contenedor asume que es necesario
Modelo de programación JAX-WS
realizarlo, por ejemplo, si el mismo conte-
nedor es apagado. Implementar un servicio
Construir la correcta implementación
Web JAX-WS se basa principalmente en un
de uno o varios servicios web (web service
contenedor tipo Web, y por tanto deberá
endpoint) dependerá del punto de partida
poder desplegarse al interior de un servi-
el cual podrá definirse por dos puntos de
dor de aplicaciones o en un servidor Web,
inicio: una clase de Java que logra imple-
mientras que las implementaciones EJB,
mentar el servicio web o simplemente un
residen en un objeto EJB y podrá generarse
fichero de tipo WSDL. Al iniciar con una
el respectivo despliegue únicamente en ser-
clase Java, deberán utilizarse herramien-
vidores de aplicaciones.
tas para la generación de los artefactos
necesarios, entre ellos el WSDL del servicio.
Los componentes port establecen aso-
Ahora, si el punto de partida es un fichero
ciaciones a una dirección de puerto (port
WSDL, deberán utilizarse diversas herra-
address por lo general de un WSDL) a través
mientas que permitan generar el SEI (Ser-
de la implementación del servicio (Service
vice Endpoint Interface)
Implementation Bean). Por lo general, el
insumo port “pospone” el establecimiento
Si se inicia con una clase de Java, habrá
de aquellos requerimientos que tiene el
tranquilidad de que la clase que está imple-
contenedor del servicio y que lleva a la fase
mentando el servicio posee los tipos de
de despliegue, logrando indicar los reque-
datos que se requieren. Aun así, el desa-
rimientos en el descriptor del respectivo
rrollador posee menos control sobre la
componente. Un contenedor brinda un
estructura XML que se genera. Si se inicia
objeto de escucha (listener), en la dirección
por WSDL y el uso de esquemas, el desa-
del puerto (port address de un WSDL) y una
rrollador mantiene un total control sobre el
tarea que le permita “enviar” la solicitud
esquema que se está usando, sin embargo,
a la implementación del correspondiente
tendrá menos control sobre el end-point del
servicio web. El contenedor debe propor-
servicio que se ha generado y por ende de
cionar servicios en el mismo instante en
las clases que se utilizan.
que son ejecutados, ya sean mapeados de
referencias lógicas a referencias de índole
Cuando el punto de partida es una clase
físicas de objetos distribuidos y recursos y
de Java, deben tenerse en cuenta cier-
restricciones de seguridad.
tas restricciones en el momento en que
se implemente un servicio. Una correcta
implementación de un servicio web, hace
referencia a una clase java que tiene en
cuenta las siguientes limitaciones:

Modelos de Programación II - eje 2 analicemos la situación 21


• La clase deberá estar escrita con javax.jws.Webservice.

• Los métodos pueden anotarse con javax.jws.WebMethod.

• Todos los métodos pueden lanzar excepciones de tipo java.rmi.RemoteException


adicional a las excepciones propias del servicio.

• Los parámetros y atributos de los métodos y tipos de retorno deben ser compati-
bles con JAXB.

• Los parámetros o tipos de retorno deben implementar la interfaz java.rmi.Remote


ni indirecta y mucho menos directamente.

Hasta aquí es importante recordar que la generación de aplicaciones en Java es una


tarea que obliga al desarrollador no solo a entender el lenguaje en sí, sino a atender
otros criterios de la tecnología y la informática. Es importante siempre tener presente el
concepto de integralidad y ver las aplicaciones como un conjunto de componentes que
se desarrollan con el propósito de suplir una necesidad o minimizar el impacto de ciertas
situaciones adversas al interior de las organizaciones.

Instrucción

Finalmente, lo invitamos a la página principal del


eje para ver el videorresumen y realizar la prueba
objetiva.

Modelos de Programación II - eje 2 analicemos la situación 22


Bibliografía

Azpitarte, R., et ál. (2009). Introducción a la Programación Orientada


a Objetos con Java. Departamento de Sistemas Informáticos y
Computación. Valencia: España: Universidad Politécnica de Valencia.

Carcedo, C. (2013). Tutorial de instalación y configuración de


NetBeans. Recuperado de http://www.migadepan.es/wp-content/
uploads/2012/09/Tutorial_PROGRAMACION01.pdf

Deitel, P., y Deitel., H. (2008). Java. Cómo programar. Recuperado de


BIBLIOGRAFÍA

https://docs.google.com/file/d/0B1znxPN5ACgSbHhVU1RaVFh0cVU/
edit

Junta de Andalucía. (s.f.). JavaServer Faces(JSF). Recuperado de http://


www.juntadeandalucia.es/servicios/madeja/contenido/recurso/101

Polo, M., y Villafranca, D. (2015). Introducción a las aplicaciones web


con Java. Recuperado de http://www.inf-cr.uclm.es/www/mpolo/
asig/0708/tutorJavaWeb.pdf

Universidad de Alicante. (2014). Título de Experto Universitario en Desarrollo


de Aplicaciones y Servicios con Java EE. Recuperado de http://www.
jtech.ua.es/j2ee/publico/jsf-2012-13/sesion01-apuntes.html

También podría gustarte