Loggeo JavaScript en el servidor mediante GET

Hace un tiempo se comentaba en este blog el framework log4javascript para el loggeo de eventos Javascript en el servidor.

El framework tiene todo lo que se le puede pedir a un log de eventos JavaScript no basado en Aspectos:

· Que funcione en todos los navegadores modernos:

Internet Explorer > 6, Firefox > 9, Chrome en sus distintas versiones, Safari…

· Distintas categorías de traceo:

o FATAL: se utiliza para mensajes críticos del sistema, generalmente después de guardar el mensaje el programa abortará.

o ERROR: se utiliza en mensajes de error de la aplicación que se desea guardar, estos eventos afectan al programa pero lo dejan seguir funcionando, como por ejemplo que algún parámetro de configuración no es correcto y se carga el parámetro por defecto.

o WARN: se utiliza para mensajes de alerta sobre eventos que se desea mantener constancia, pero que no afectan al correcto funcionamiento del programa.

o INFO: se utiliza para mensajes similares al modo “verbose” en otras aplicaciones.

o DEBUG: se utiliza para escribir mensajes de depuración, este log no debe estar activado cuando la aplicación se encuentre en producción.

o TRACE: se utiliza para mostrar mensajes con un mayor nivel de detalle que debug.

· Uso de Appenders

Si interesa que las peticiones Ajax de los eventos JavaScript que aterrizan en el servidor no vaya van vía POST si no vía GET, por eso de tener también una traza del log en el Servidor Web basta con modificar una línea de la librería javaScript La línea en cuestión está en el fichero /js/log4javascript.js

xmlHttp.open(“POST”,url,true);

Y hay que sustituirla por esta otra

xmlHttp.open(“GET”,url + “?”+ postData,true);

Hay que tener en cuenta que no es conveniente mandar mensajes muy grandes a través del GET ya que los navegadores e incluso los servidores web tienen limitado la cantidad de caracteres que se pueden enviar por GET aunque el protocolo HTTP no lo restringe: http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.15

Limitaciones del tamaño de la petición web mediante GET:

  • Microsoft Internet Explorer (Browser): 2,083 caracteres
  • Firefox 1.5.x : No se muestra en la caja de la URL por encima de los 65536 caracteres aunque permite más
  • Safari (Browser): Al menos permite 80000 caracteres
  • El Servidor Web de Apache limita a 8192 byte el tamaño del campo en una request
  • Y el servidor Microsoft Internet Information Server tiene una limitación de 16384 aunque es configurable

¿Qué es Uberfire?

UberFire es un framework Web inspirado por Eclipse Rich Client Platform (no sé si esto de por sí es una ventaja o un inconveniente :D)

Uberfire es un proyecto estratégico para el equipo de Drools y jBPM, y va a ser la tecnología base para la nueva generación de herramientas Web de Drools y jBPM (en las últimas versiones se basaba en GWT).

 

El proyecto maneja los conceptos de:

Perspectivas: como mecanismo para interacción con tareas

Layout flexible: de modo que usuarios puedan personalizarse su entorno.

El proyecto parece que tiene futuro!, aunque actualmente se encuentra en versión Alpha y aún necesita mejora, sobre todo en la parte de Look&Feel.

En este vídeo podéis ver como la nueva consola de jBPM está construida sobre Uberfire:

http://www.youtube.com/watch?v=WMUQKncH1S0&feature=player_embedded

FlotCharts: gráficas para jQuery

lot es una librería Javascript para JQuery para pintar gráficas, centrada en ofrecer un uso sencillo y permite interactuar con las gráficas.

Aunque muy de lejos aún de opciones como HighCharts tiene alguna funcionalidad interesante:

· Funciona sobre Internet Explorer 6+, Chrome, Firefox 2+, Safari 3+ and Opera 9.5+

· API muy sencilla

· Usada en varias webs como TusAcciones:

· Actualizaciones AJAX

· Actualizaciones en tiempo real

· Diversos tipos de gráficas:

O:

Podéis ver los ejemplos aquí.

Un poco de DWR: DWR is Easy Ajax for Java

DWR is Easy Ajax for Java

(Gracias Sergio :))

DWR es una librería Java que permite interactuar aplicaciones vía AJAX con aplicaciones Java en el Servidor de una forma muy sencilla.

DWR a partir de una clase Java disponibiliza en el Servidor Web es capaz de generar dinámicamente el JavaScript que permite a un navegador web llamar de una forma simple y segura el código de Java como si fuese una llamada local.

DWR soporta Ajax inverso y permite a la parte Java que se ejecuta en un servidor utilizar las API del lado del cliente para publicar las actualizaciones que suceden en el Servidor. Permite configurar el modelo: Comet, pollin y Piggyback

DWR también soporta cross-domain (verdad Mauro? :D)

DWR ofrece integraciones con otros frameworks como Spring para el que ofrece el espacio de nombres dwr:

Y que permite publicar un Bean de Spring con unas simples anotaciones: @RemoteProxy y @RemoteMethod

@RemoteProxy indicamos que queremos exponer el bean al cliente

@RemoteMethod Solo aquellos métodos que tengan esta anotación serán expuestos.

DWR permite el marshaling con una gran cantidad de tipos de datos: arrays, colecciones, file, enum, beans…

Para que DWR sepa transformar la clase TareaDTO que se usa como parámetro y resultado debo:

<dwr:convert type=”bean” class=”com.bbva.arq.front.spring.qdwr.ejemplodwr.TareaDTO />

Que configura un conversor responsable del marshaling de los datos entre el cliente y el servidor.

Al arrancar la aplicación tendré acceso al Servicio publicado:

http://localhost:8080/<mi_aplicacion>/dwr/test/ServicioDWR

Si tengo habilitado el debug DWR habrá generado una página como esta para poder invocar a los métodos de mi Servicio DWR:

La forma de invocar a este Servicio desde Javascript es tan simple como esta:

Que puedo usar en mi JSP:

Publicado en AJAX, Java, Librerías, Web. 1 Comment »

Dojo 1.7 y Dojo Mobile

Dojo es un framework Javascript para crear aplicaciones aplicaciones HTML.

Dojo se distribuye bajo una licencia BSD license (o Academic Free License version 2.1).

La nueva versión de Dojo, la 1.7 es la actualización más importante desde Dojo 1.0:

· Se ha realizado un refactorizado completo sobre un kernel más ligero y modular con menos dependencias

· Mantiene la compatibilidad con versiones anteriores.

· Soporta

· Más Widgets

· Más Data Grids:

Ofrece una versión Dojo Mobile:

· Soporta

· Temas: con L&F nativos

· Soporta Touch&Gestures

· Soporta PhoneGAP

Podéis acceder a su Getting started aquí.

Plugins JQuery: Editores ricos de texto

Si necesitamos un editor rico de textos seguro que uno de los plugins de JQuery tiene la respuesta :D

A ver si adivináis con cuál me quedo! (no os fiéis del orden, la respuesta al final)

Query RTE:

· Tan sencillo que su código cabe aquí (claro no esperéis mucho más :))

jWysiwyg

· Ofrece doble licencia (MIT y GPL)

· Ofrece un manual más que suficiente y bastantes ejemplos

Aloha Editor

· Probablemente el más avanzado y configurable de todos, podéis ver las demos.

· Con mucha documentación

· Con una barra contextual estilo Windows

· Desde mi punto de vista poco intuitivo en muchos casos

CLEditor

· Open source

· Sencillo, potente y extensible

· Poca documentación

· Con varios plugins (iconos, tablas,…)

NicEdit

· Documentación, ejemplos

· Configurable

CKEditor

· Sucesor de FCKEditor

· Tiene todo lo necesario y más!

· Usado por los grandes

· Extensible

· Licencia: El único de pago (aunque 850$ por compañía o 350$ por web creo que no es un problema, no?)

· Barra configurable, Skins, añadir Flash, subir imágenes

TinyMCE

· Open source

· MCImagenManager:

· Muy completo

jHtmlArea

· Funcional, poca documentación, funcional!

·

Markitup

· No es exactamente un editor rico de texto, si no un editor HTML/Wiki/…

· Documentación escueta pero suficiente y ejemplos

· Soporta atajos de teclado

· Skins

· Menús configurables

· Preview

· Licencia MIT/GPL (si queréis colaborar basta con que colaboréis en pagarle una cerveza al autor :))

Sí, CKEditor…siempre y cada vez más pienso que en muchas ocasiones perdemos el norte (además del tiempo y el dinero) intentando usar un producto gratuito (que no open-source) cuando hay otra opción de pago que nos habría ahorrado horas o días de trabajo!

Integrando Spring MVC, Servicios REST, JSON y jqGrid

Este post ofrece un tutorial muy completo de cómo usar Spring MVC con AJAX, REST, JSON y jqGrid (el plugin de JQuery para tablas)

Publicado en AJAX, Java, Web. Leave a Comment »

Ejemplo para integrar Flex o JavaFX con JSF 2.0

Ejemplo para integrar Flex o JavaFX con JSF 2.0 (http://www.oracle.com/technetwork/java/lai-flex-javafx-jsf-301278.html?msgid=3-3822972114), mediante algunas opciones como:
- Paso de parámetros a Flex mediante flashVars
- Comunicacion entre el cliente (e.g. Flex) y la sesion JSF mediante AJAX con JSF 2.0

RichFaces 4 release

A finales de marzo, salió la versión 4 de RichFaces (http://www.jboss.org/richfaces), la cual se basa al 100% en JSF 2.

Algunas nuevas características:

Client Side Validation based on JSR-303 Bean Validation specification:

Object Validation for easy cross-field validation implementation:

Push feature based on the Atmosphere framework:

Aptana Studio 2: IDE/plugin Eclipse para desarrollo Web

es un IDE (plugin de Eclipse) para el desarrollo de aplicaciones Web.

Tiene unas características que lo convierten en una elección muy interesante:

· Debug de Javascript: sobre Mozilla en la versión gratuita y sobre IE en la versión Pro

· Soporte para librerías Javascript: para cada librería ofrece asistente de código, ejemplos, ayuda,…

· El inevitable asistente de código

· Preview

· Transferencia y sincronización FTP: al estilo Ultraedit

· Plugin para Adobe AIR: este plugin permite hacer Profiling

Podéis instalar el Aptana Studio como:

· Plugin Eclipse (3.5 o 3.6): http://www.aptana.com/products/studio2/download

· Standalone: http://download.aptana.org/tools/studio/standalone/win/Aptana_Studio_Setup_2.0.5.exe

Podéis acceder a la ayuda online del Aptana Studio aquí: http://docs.aptana.com/docs/index.php/Main_Page

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 406 seguidores

%d personas les gusta esto: