Traducir Blog

sábado, julio 19, 2008

Utilizando J2EE 5.O Parte III

En esta parte mostraré un poco el uso de la capa web integrandola con las capas de negocio y persistencia mostradas en las entradas anteriores, para conseguir este objetivo en Java puede hacerse uso de diferentes tecnologias, tales como Servlets, JSP o Frameworks como Struts o JSF, para este caso con el fin de seguir la continuidad de tecnologias ampliamente soportadas y adaptadas en J2EE 5.0 se hara uso de JSF (Java Server Faces).




JSF es un Framework que se caracteriza por contener elementos que le permiten a los desarrolladores adaptar soluciones de acuerdo a sus propias necesidades gracias al modelo de componentes que dicho framework maneja, cabe resaltar que JSF es una "evolución" de las tecnologias anteriormente mencionadas (Servlets, JSP y Struts), una de las premisas mas importantes que cada desarrollador de software que utilice JSF debe tener es pensar en cada objeto y en cada elemento de la capa web desarrollada como un Componente, el cual tiene atributos, propiedades y metodos de acción, y una de las cosas mas importantes, es reutilizable y puede emplearse en cualquier interfaz web desarrollada.
En JSF existen diferentes implementaciones, las cuales amplian las funcionalidades de los componentes estandar que vienen incluidos en la Implementación de Referencia de Sun, e inclusive contienen componentes que nuevos, gracias al modelo de componentes que implementa esta tecnologia, cualquier desarrollador con un conocimiento medio sobre tecnologia JSF puede desarrollar sus propios componente y emplearlos en sus propias creaciones, o compartilos con otros usuarios. Un ejemplo claro de esto se encuenta en las implementaciones de Apache sobre JSF llamada MyFaces la cual incluye componentes bastante robustos que en algunos casos implementan Ajax y uso avanzado de Toolkits basados en JavaScript. Tambien existen otras implementaciones como Rich Faces, ADF Faces, ICE Faces, entre otros.

Ahora comienza la integración propiamente dicha de acuerdo a lo anteriormente creado en las entradas de EJB y JPA respectivamente:

Primero que nada es necesario crear una aplicación Web como se hace normalmente, e incluir por lo menos la siguiente estructura de directorios:
MYAPP
|
|
-WEB-INF
|
-classes
-lib
-src (opcional esta ubicación, los fuentes pueden estar ubicados en cualquier sitio)

En este punto desde el directorio MYAPP pueden existir los directorios y paginas donde se contendran todos los recursos web, como en cualquer otra aplicación comun, en el directorio WEB-INF/classes se deberan contener todos los archivos .class que representan la versión compilada de los Managed Beans (clases planas que separan la logica de la aplicación y la presentación en un entorno JSF) y cualquier otra clase o recurso necesario.
En el directorio LIB se contendran las librerias necesarias para implementar JSF RI, en el caso de que se emplee un servidor de aplicaciones como Sun Application Server (Glassfish) este punto no se hace necesario, ya que Glassfish contiene todas las lbrerias necesarias para ejecutar las API de J2EE 5.0.

Ahora se asume los siguientes archivos de configuración que son necesarios para poner en marcha un contexto web con JSF en el directorio raiz de WEB-INF deben existir los siguientes archivos (pulsa en el enlace para ver su contenido):

faces-config.xml

Para este archivo se define solamente los recursos de los cuales dispondra JSF para su correcto funcionamiento en esta aplicación, en este archivo se pueden contener muchas instrucciones que son utiles para adicionar componentes personalizados, recursos de mensajes en diferentes idiomas (soporte para internacionalización), managed beans y otras opciones adicionales como reglas de navegación.

web.xml

En este archivo se especifica la forma en la cual será mapeada la configuración de JSF para ser empleada en el contexto de la aplicacioón, puede notarse que para la configuración de JSF, todas las paginas deberan preceder del conexto virtual faces/ y apartir de allí se podran ejecutar todas las paginas que contengan componentes y/o recursos basados en JSF.

Despues de tener estas opciones de configuración listas se procede a crear las paginas, para este caso se crea crearParte.jsp, si se aprecia que la extensión de la pagina es .JSP y no .JSF es debido a la configuración anteriormente definida en el fichero web.xml, mas explicitamente en las lineas donde se especifica el Faces Servlet, de esta forma la pagina inicial podria ser un simple formulario de registro de datos:

crearParte.jsp

Ahora bien, hasta este punto solamente tenemos la parte de la capa web creada, sin embargo podemos ver que se hace un uso notable de un Bean Manejado (JdaanialBean para este caso) este Managed Bean ha sido definido en el archivo de configuración faces-config donde se ha definido el paquete al que pertenece, en nombre con el que sera identificado y usado por los demas que recursos que accedan a él, y su extensión, que aunque para este caso es de session, puede ser usado en las extensiones habituales de cualquier variable en un contexto web normal, pudiendo emplearse Managed Beans a nivel de: session, application y request de esta forma se mantienen los datos guardados en el Managed Bean de acuerdo a su extensión.
aqui se puede obtener el codigo de este ManagedBean

BeanPruebas.java

Puede notarse que tanto en la pagina como en el Managed Bean se hace uso de una de las entidades definidas en la entrada anterior sobre JPA, para realizar esta integración entre estas capas de la aplicación se hace vital el uso de la anotación @EJB, dicha anotación tiene como atributo de referencia la interfaz remota o local que debe ser empleada para acceder al EJB propiamente dicho y que efectuara los metodos que se invoquen por los componentes que quieran usarlos, la anotación @EJB se encarga de localizar e instanciar todas las referencias necesarias del EJB para que se encuentre en estado consistente y pueda ser empleado en cada momento, dado que este EJB tiene como atributo la entidad Parte, esta entidad puede ser usada, y si que es usada como lo que realmente es, un objeto plano (POJO) que solamente almacena datos cuando se emplean los metodos setXXX y getXXX sobre sus atributos, lo cual es bastante util al momento de guardar directamente las entidades como registros en la base de datos al momento activar el manejador de persistencia para guardado de datos.

JDaanial.

[+/-] Continuar Leyendo...

No hay comentarios: