viernes, 21 de mayo de 2010

Algunos conceptos de Ajax

  • ajaxSingle -->Cuando le pones ajaxSingle="true" a un elemento a4j, estás indicando que en la petición Ajax sólo se enviará ese campo al servidor. El resto de campos del formulario no se enviarán.
  • ajaxRegion -->Y un a4j:region delimita un grupo de campos que se enviarán en la petición Ajax. Digamos que determina qué trozo de la web estará involucrada en la petición Ajax.Todo lo que quede fuera de la región, no contará para el tema Ajax.
  • immediate -->Cuando pones immediate="true" en un elemento JSF (no es un atributo exclusivo de A4J) estás indicando que ese elemento no pasará por la validación de JSF.

miércoles, 28 de abril de 2010

Quitar contraseña del SVN

Hace poco he tenido que quitar la contraseña de mi SVN y para ello he tenido que hacer los siguientes pasos:
  1. Desconectar el SVN (Discard location).
  2. Eliminar el archivo .keyring, yo lo tengo en la carpeta de eclipse/configuration/org.eclipse.core.runtime.
  3. Reiniciar Eclipse para que se haga efectivo el cambio.

martes, 30 de marzo de 2010

Spring Security

Es un subproyecto de Spring con el cual podemos gestionar la autenticación en las aplicaciones Java tanto a urls del proyecto como a clases Java o acceso a métodos.La gestión de usuario se puede realizar a través de roles en bases de datos.

Este subproyecto utiliza filtros para la seguridad de métodos o clases o las peticiones al servidor de la aplicación y la conflagración de la seguridad se encuentra dentro del war ear y otras de las ventajas que tienes es que soporta varios modelos de autenticación como LDAP, HTTP Digest etc... y podemos ampliar extendiendo nuestras clases del Spring Security.

Estos filtros se confirguran en el web.xml.

Con Spring Security podemos incluis seguridad en nuestras aplicaciones facilmente ya que apenas tenemos que escribir código para poder utilizarlo.

El jar que necesitamos el : spring-security-core.jar

viernes, 5 de marzo de 2010

Alterian

Alterian en un software cuyo funcionamiento es un motor de base de datos muy optimizado y nos permite realizar muchas operación en muy poco tiempo(estamos hablando entre 50 y 5000 veces más rápidas).

Para que esto ocurra lo que hace el sistema de gestión de bases de datos es indexar todas las columnas y traspone las filas de las tablas por columnas, de modo que se optimice el acceso.

LDAP

Es un protocolo ligero de acceso a directorios y también es considerado como base de datos ala cual se puede realizar consultar y la forma de almacenar puede ser diferente a las bases de datos habituales.

Habitualmente se utiliza para almacenar usuarios y contraseñas y se suele utilizar para la autenticación.
También es posible almacenar mas información como datos de contacto del usuario, permisos etc...

viernes, 26 de febrero de 2010

La mejor manera de tratar errores.

Ha pasado que al capturar alguna error con try/catch se ha puesto en el catch log.equals(e) lo mejor seria:
try{

//acciones

}catch(Error e){
log.error( "Se ha producido una excepción realizar las acciones. Parametro1: "+parametro+". Error: "+e)
}

miércoles, 24 de febrero de 2010

String vs StringBuffer vs StringBuilder

STRINGBUFFER Y STRINGBUILDER
Java provee distintas clases para el trabajo con cadenas de texto. La más básica, la clase String. Sin embargo existen otras clases como StringBuffer y StringBuilder que resultan de interés porque facilitan cierto tipo de trabajos y aportan mayor eficiencia en determinados contextos. Vamos a estudiarlas.

CLASE STRINGBUILDER
La clase StringBuilder es similar a la clase String en el sentido de que sirve para almacenar cadenas de caracteres. No obstante, presenta algunas diferencias relevantes. Señalaremos como características de StringBuilder a tener en cuenta:
- Su tamaño y contenido pueden modificarse. Los objetos de éste tipo son mutables. Esto es una diferencia con los String.
- Debe crearse con alguno de sus costructores asociados. No se permite instanciar directamente a una cadena como sí permiten los String.
- Un StringBuilder está indexado. Cada uno de sus caracteres tiene un índice: 0 para el primero,1 para el segundo, etc.
- Los métodos de StringBuilder no están sincronizados. Esto implica que es más eficiente que StringBuffer siempre que no se requiera trabajar con múltiples hilos (threads), que es lo más habitual.

Los constructores de StringBuilder se resumen en la siguiente tabla:
Constructor
Descripción
Ejemplo
StringBuilder() Construye un StringBuilder vacío y con una capacidad por defecto de 16 carácteres. StringBuilder s = new StringBuilder();
StringBuilder(int capacidad) Se le pasa la capacidad (número de caracteres) como argumento. StringBuilder s = new StringBuilder(55);
StringBuilder(String str) Construye un StringBuilder en base al String que se le pasa como argumento. StringBuilder s = new StringBuilder("hola");
Los métodos principales de StringBuilder se resumen en la siguiente tabla:
Retorno
Método
Explicación
StringBuilder append(...) Añade al final del StringBuilder a la que se aplica, un String o la representación en forma de String de un dato asociado a una variable primitiva
int capacity() Devuelve la capacidad del StringBuilder
int length() Devuelve el número de caracteres del StringBuilder
StringBuilder reverse() Invierte el orden de los caracteres del StringBuilder
void setCharAt(int indice,char ch) Cambia el carácter indicado en el primer argumento por el carácter que se le pasa en el segundo
char charAt(int indice) Devuelve el carácter asociado a la posición que se le indica en el argumento
void setLength(int nuevaLongitud) Modifica la longitud. La nueva longitud no puede ser menor
String toString() Convierte un StringBuilder en un String
StringBuilder insert(int indiceIni,String cadena) Añade la cadena del segundo argumento a partir de la posición indicada en el primero
StringBuilder delete(int indiceIni,int indiceFin) Borra la cadena de caracteres incluidos entre los dos indices indicados en los argumentos
StringBuilder deleteChar(int indice) Borra el carácter indicado en el índice
StringBuilder replace(int indiceIni, int indiceFin,String str) Reemplaza los caracteres comprendidos entre los dos indices por la cadena que se le pasa en el argumento
int indexOf (String str) Analiza los caracteres de la cadena y encuentra el primer índice que coincide con el valor deseado
String subString(int indiceIni,int indiceFin) Devuelve una cadena comprendida entre los dos índices
El método append será probablemente el más utilizado cuando trabajemos con esta clase.


CLASE STRINGBUFFER
La clase StringBuffer es similar a la clase StringBuilder, siendo la principal diferencia que sus métodos están sincronizados, lo cual permite trabajar con múltiples hilos de ejecución (threads).
Los constructores y métodos de StringBuffer son los mismos que los de StringBuilder.


DIFERENCIAS ENTRE STRING, STRINGBUILDER Y STRINGBUFFER
Vamos a enumerar las principales diferencias entre estas tres clases:
- StringBuffer y StringBuilder son mutables, mientras que String es inmutable. Cada vez que modificamos un String se crea un objeto nuevo. Esto no ocurre con StringBuffer y StringBuilder.
- Los objetos String se almacenan en el Constant String Pool que es un repositorio o almacén de cadenas, de valores de Strings. Esto se hace  con el fin de que si creamos otro String, con el mismo valor, no se cree un nuevo objeto sino que se use el mismo y se asigne una referencia al objeto ya creado. Los objetos StringBuffer y StringBuilder se almacenan en el heap que es otro espacio de memoria usado en tiempo de ejecución para almacenar las instancias de clases, objetos y arrays. Realmente no nos interesa entrar a nivel de detalle en estas diferencias: simplemente, recordar que los objetos String tienen diferente tratamiento que los StringBuffer y StringBuilder.
- La  implementación de la clase StringBuffer  es synchronized (sincronizada) mientras StringBuilder no.
- El operador de concatenación “+” es implementado internamente por Java usando StringBuilder.

Texto obtenido de StringBuffer, StringBuilder Java. Ejemplo. Diferencias entre clases. Criterios para elegir. Métodos. (CU00914C)