Entrevista a Jay Balunas lider del proyecto RichFaces

Tags: , , ,

Dzone estubo reunido con Jay Balunas, desarrollador core de Jboss y lider del proyecto Richfaces, el componente AJAX para Java Server Faces (JSF). Jay tambien es co-autor del reciente lanzamiento DZone RichFaces Refcard . En esta entrevista, Jay habla sobre los recientes cambios en el proyecto de RichFaces, asi como una nueva serie de caracteristicas de JSF 2.0 que se apoya en el reciente lanzamiento de RichFaces 4.0.

Algunos aspectos interesantes de la entrevista, habla sobre el nuevo logo de RichFaces, del cual ya hablamos en este blog meses atras, también toca el tema sobre que va pasar con las versiones anteriores a RichFaces 4, donde dijo que a partir de septiembre empieza el modo mantenimiento en el branch 3.3.x, asi obligando, a la mayoria a mudarse a RichFaces 4.0

Nos da unos tips a los que desean colaborar con el desarrollo en RichFaces, empezando por ayudar en los foros, probando las Alfas y aportando nuevas ideas.

Entrevista completa

Richfaces 4.0 ALPHA1 ya disponible

Tags: , , , ,

richfaces_logo_600px

Hace unos dias Exadel, libero el primer alfa de RichFaces 4.0, con integración completa a JSF2 , estas son las actualizaciones y nuevas características (lo dejo en ingles, porque pierde en la traducción ;) ).

  • Simplified Component Development Kit with annotations, faces-config extensions, advanced templates support and more..
  • Ajax framework improvements extending the JSF 2 specification.
  • Component review for consistency, usability, and redesign following semantic HTML principles where possible.
  • Both server-side and client-side performance optimization.
  • Strict code clean-up and review.

Parece que tuvieron algunos problemitas con el primer alfa, pero ya lo dejaron bien explicado aqui si tienes problemas para correr el war.

richfaces4

http://download.jboss.com/jboss-richfaces/richfaces-demo-4.0.0.ALPHA1-tomcat6.war

Dojo Toolkit y la implementación de Comet

Tags: , , ,

labsDojoToolkitTitle

DOJO Toolkit

Dojo es un framework que contiene APIs y widgets (controles) para facilitar el desarrollo de aplicaciones Web que utilicen tecnología AJAX. Cuentan con el apoyo económico de empresas (a través de su fundación) desde el año 2004. Dojo se parece a Java en algunas cosas pues tiene herencia y trabaja como paquetes.

Provee una serie de widgets que permiten hacer la vidamas fácil para el desarrollo web. Esta librería de widgets que provee Dojo recibe el nombre de Dijit ( short for “Dojo widget).

Los objetivos para desarrollar el modulo de dijit fue crear una tecnología que permitiera a los desarrolladores realizar componentes en forma rápida, estandardizada y que fueran los mas reutilizables y compatibles con todos los sabores de browser que existen en el mercado.

Puedes ver algunos ejemplos aquí y el siempre util hola mundo. Tal véz el mejor blog sobre Dojo Toolkit en español.  Dojo es el primer framework que implementa a Comet.

COMET

Comet es una técnica de programación Web muy similar a AJAX, que utiliza XMLHttpRequest, se utiliza para la entrega de datos entre cliente servidor a través del protocolo HTTP.

Esta ‘tecnologia’ llamada comet es capaz de crear conexiones permanentes y quedarse a la escucha, esperando que el server le envie informacion.

Para una mejor perspectiva de la actividad en las tranascciones,  se puede apreciar abajo una actividad de las llamadas en AJAX y en la figura posterior las llamadas con COMET. El cliente no sondea el servidor de vez en cuando, se trata de que el servidor abre una línea de comunicación y pasa información al cliente. Es especialmente interesante para aplicaciones colaborativas y multi-usuario. fuente.

Comet

  • Autor: admin
  • Publicado: Dic 7th, 2008
  • Categoria: Articulos
  • Comentarios: 1

La Seguridad Perfecta con Spring y el dropDownMenu de RichFaces

Tags: , , , , ,

Bueno, sigo con la seguridad de Spring 2.0 o el conocido como el antiguo Acegi Security, ahora voy a proponer una alternativa para generar una seguridad con un componente de RichFaces, el dropDownMenu. ToolBar y menuItem.

Primero te recomiendo sigas la configuración de Spring con JDBC, o con LDAP, como tu lo desees, porque de todas formas todos los Roles ( o Permisos) quedan almacenados en la misma variable de Spring. También si deseas integrarlo con Facelest, aqui tenes los pasos a seguir.

Lo primero que hay que hacer, es construir el menú, para eso usamos un Tool Bar:

<rich:toolBar>
 
<rich:dropDownMenu >
<f:facet name="label">
        <h:panelGroup>
<h:graphicImage value="#{initParam['rootimages']}/images/icons/contexthelp.png" />
	<h:outputText value="JotaDeveloper" />
	</h:panelGroup>
</f:facet>
	<rich:menuItem submitMode="ajax" value="Articulos"></rich:menuItem>
	<rich:menuItem submitMode="ajax" value="Tutoriales"></rich:menuItem>
	<rich:menuItem submitMode="ajax" value="Ayuda"></rich:menuItem>
</rich:dropDownMenu>
</rich:toolBar>

El código es bien sencillo, no hace falta explicar mucho, solo que para poder colocar un dropDownMenu , es necesario el toolBar, y para el menuItem , debe estar dentro de un dropDownMenu.

Depues de esto, y espero que hayas leido los 3 articulos que sugerí anteriormente, vamos a crear un Bean, donde tendremos la logica de nuestra seguridad con el dropDownMenu.

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.Authentication;
import org.springframework.security.GrantedAuthority;
import org.springframework.security.context.SecurityContext;
import org.springframework.security.context.SecurityContextHolder;
import org.springframework.security.ui.WebAuthenticationDetails;
 
public class JotaDeveloperMenuBean {
 
	// Un objeto Booleano por cada elemento del Menu
	private Boolean rootJotaDeveloper;
	private Boolean rootTutoriales;
	private Boolean rootArticulos;
	private Boolean rootAyuda;
 
	// Objetos Spring Security
	private Object seguridadAcegi;
	// El GrantedAuthority es un Array con todos los Roles que recupera de la BD
	private GrantedAuthority[] listaAutoridades;
	private SecurityContext contexto;
	private Authentication autenticacion;
	private List<string> ListAutoridades = new ArrayList<string>();
	private String nombreUsuario;
	private Boolean estaAutenticado;
	private WebAuthenticationDetails webAu;
 
	/**
	 * Constructor que accede a toda la información de Spring Security
	 */
 
	public JotaDeveloperMenuBean() {
		this.seguridadAcegi = SecurityContextHolder.getContext()
				.getAuthentication().getPrincipal();
		this.contexto = SecurityContextHolder.getContext();
		this.autenticacion = SecurityContextHolder.getContext()
				.getAuthentication();
		this.listaAutoridades = SecurityContextHolder.getContext()
				.getAuthentication().getAuthorities();
		convertirArrayAuthoritiesToListAuthorities();
		this.nombreUsuario = this.autenticacion.getName();
		this.estaAutenticado = this.autenticacion.isAuthenticated();
	}
 
	/**
	 * Este metodo convierte el Array de Roles poco manejable en un List
	 */
	private void convertirArrayAuthoritiesToListAuthorities() {
		int it_cont;
		for (it_cont = 0; it_cont < listaAutoridades.length; it_cont++) {
			String ROL = listaAutoridades[it_cont].toString();
			ListAutoridades.add(ROL);
		}
	}
 
	/**
	 * Comprueba si existe determinado Rol en la Lista de Autoridades del
	 * Usuario Logeado
	 *
	 * @param cadena
	 *            ROL
	 * @return El resultado de la Busqueda
	 */
	private Boolean comprobarRol(String cadena) {
		Integer id = ListAutoridades.indexOf(cadena);
		// Si el Id es -1, el valor no fue encontrado.
		if (id != -1) {
			return false;
		} else {
			return true;
		}
	}
 
	/**
	 * Los Getters que va leer cada elemento del Menu
	 */
 
	public Boolean getRootJotaDeveloper() {
		return rootJotaDeveloper = comprobarRol("ROLE_ROOT_JOTADEVELOPER");
	}
 
	public Boolean getRootTutoriales() {
		return rootTutoriales = comprobarRol("ROLE_ROOT_TUTORIALES");
	}
 
	public Boolean getRootAyuda() {
		return rootArticulos = comprobarRol("ROLE_ROOT_AYUDA");
	}
 
	public Boolean getRootArticulos() {
		return rootAyuda = comprobarRol("ROLE_ROOT_ARTICULOS");
	}
 
}

Despues de esto y incluir el Bean el el ManageBean de faces-config.xml, solo agregamos a la propiedad disabled del MenuItem el get del Bean.

<rich:toolBar>
<acegijsf:authorize ifAllGranted="ROLE_ROOT_JOTADEVELOPER">
<rich:dropDownMenu >
<f:facet name="label">
        <h:panelGroup>
<h:graphicImage value="#{initParam['rootimages']}/images/icons/contexthelp.png" />
	<h:outputText value="JotaDeveloper" />
	</h:panelGroup>
</f:facet>
	<rich:menuItem submitMode="ajax" value="Articulos" disabled="#{jotaDeveloperMenuBean.rootArticulos}"></rich:menuItem>
	<rich:menuItem submitMode="ajax" value="Tutoriales" disabled="#{jotaDeveloperMenuBean.rootTutoriales}"></rich:menuItem>
	<rich:menuItem submitMode="ajax" value="Ayuda" disabled="#{jotaDeveloperMenuBean.rootAyuda}"></rich:menuItem>
</rich:dropDownMenu>
</acegijsf:authorize>
</rich:toolBar>

El resultado de todo esto, es que cuando inices sesión, el GrantedAuthority que genera en la sesión del usuario Spring Security, lo convertimos en un List, luego cada elemente del menu que tu crees, va preguntarle al List si existe, si Existe, regresa True, sino, False, y apareceran los menus cuales el usuario no tenga permiso desactivados, ademas de eso, no podra acceder via URL, si has configurado correctamente el security.xml del Spring Security.

© 2009 Jotadeveloper Blog. Nuestros contenidos están bajo licencia Creative Commons mientras no se indique lo contrario,
y pueden reproducirse libremente sin más que mencionar la fuente ("JotaDeveloper") y la URL concreta del artículo original. .

This blog is powered by Wordpress and JotaDeveloperTheme.