Java Enterprise

J2EE, MVC, JSF, Struts, Hibernate, Spring, EJB's, Ant.

Introducción a SLF4J

Escribo esto porque hace poco hice unas pruebas para comparar el performance de SLF4J contra Jakarta Commons Logging.

Llevaba ya tiempo usando JCL, un framework para logging que tiene la ventaja de ser una capa de abstracción sobre otros frameworks; es decir, se puede programar usando el API de JCL y en deployment se utiliza Log4J por ejemplo para hacer realmente el trabajo de los logs, o bien usar java.util.logging sin tener que cambiar una sola línea de código (JCL auto-detecta Log4J y si no está, se usa java.util.logging). Se pueden hacer interfaces para usar otros frameworks de logging.

SLF4J (Simple Logging Framework for Java) es muy similar: es simplemente una API que en tiempo de ejecución se apoya en algún framework de logging como Log4J, java.util.logging, etc. Su arquitectura interna es distinta en la manera que usa el framework real para logging: debe tenerse en el classpath el JAR que define el API junto con una sola implementación de backend, por ejemplo para Log4J.

La odisea ingresando a Java en la facultad (2)

De regreso por estos lugares!
Esta vez continuando con la odisea de "aprender" a programar en Java.

Querido Blog:
- Pues el curso sige su marcha, es divertido ver la cara de algunos compañeros que no entendieron nada, ver como otros progresan bastante bien, ver como el maestro se divierto hablando de cosas muy tecnicas, despues rie y nos ve con su cara de "jaja los pille".
El maestro nos compartio una documentacion, bastante buena, de lectura pesada pero muy util. (proximamente lo subire y les paso la ligua)
El curso se basa en programacion de servlets, elementos por demas interesantes.

Que en resumen los definia como:
- La parte ejecutable del servidor que se encarga de regresar cierta respuesta ante una llamada HTML.

Su funcionamiento es bastante basico, solo agrega la parte del metodo de envio HTML.

Este es un ejemplo simple de un servlet:

/**
 *  Autor:    ISI
 *  Fecha:    Agosto 2009
 *  Descripción: Servlet que despliega un mensaje de bienvenida.
 */

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HtmlWelcome extends HttpServlet {
    public void doPost(HttpServletRequest request,

Tapestry 5, parte 5 - Sesiones, validaciones, AJAX

Una parte importante de cualquier aplicación web seria, es la manera en que se almacenan variables de sesión. Por ejemplo, una aplicación que requiere login y se crea una sesión para el usuario; se requiere validar el usuario/password y cuando es un usuario válido, guardar sus datos en la sesión y las páginas que solamente son para usuarios válidos necesitan redirigir al usuario al login para que solamente usuarios registrados puedan ver la página.

Otro ejemplo es un simple blog como éste, en el que solamente los usuarios registrados pueden dejar comentarios. Vamos ver este ejemplo. Primero, supongamos que ya tenemos la página que muestra el blog y los comentarios, y tenemos un componente para dejar un nuevo comentario pero solamente a los usuarios ya registrados.

Tapestry 5, parte 4 – Integración con Spring

Al principio de esta serie, mencioné que Tapestry trae su propio manejador para inyección de dependencias. Sin embargo, muchos de nosotros ya estamos familiarizados con Spring, y en el caso de integración adicional con Hibernate y cosas así, ya tenemos configuraciones algo complejas en un ApplicationContext y queremos conservarlas. Así que es importante poder usar Spring con Tapestry.

Pues bien, es muy sencillo. Primero que nada, integramos la parte de Spring como en cualquier aplicación web. Suponiendo que tenemos un solo archivo de configuración spring.xml dentro de WEB-INF:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/spring.xml</param-value>
</context-param>
...
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Tapestry 5, parte 3 - Componentes, inyección, internacionalización

Continuando con la cátedra de Tapestry 5, vamos a ver ahora tres cosas sencillas pero bastante ilustrativas del poder de este framework: cómo funcionan los componentes (unidades funcionales que pueden ir contenidas en páginas o dentro de otros componentes); inyección de objetos en páginas y componentes, y cómo internacionalizar una página o componente.

Los componentes son fragmentos de páginas que van dentro de otros componentes o dentro de páginas. Un ejemplo muy típico es este: queremos dar a nuestro sitio una apariencia uniforme, con hojas de estilos, una serie de ligas en la parte superior, algunos datos de copyright y demás en la parte inferior, etc. Todas las páginas deben salir igual. Esto en Tapestry se resuelve muy fácil con un solo componente que podemos llamar Marco, que además va a tener la peculiaridad de que va a envolver a su componente o página padre:

<!-- Marco.tml -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
  xmlns:p="tapestry:parameter">

Tapestry 5, parte 2 - Introducción Funcional

Pues bien, después de un largo recorrido histórico por el nacimiento de las herramientas para desarrollo de aplicaciones web, finalmente aquí pongo una introducción a mi framework favorito para web, Tapestry.

Cabe mencionar que voy a enfocarme solamente en la versión 5, que cambió radicalmente de la 3 y la 4. Reescribieron el framework por completo y se perdió toda compatibilidad con versiones anteriores, lo cual puede ser muy problemático para quienes tengan desarrollos en producción en esas versiones, pero para comenzar aplicaciones nuevas, hay muchísimas ventajas. No voy a mencionar las diferencias con versiones anteriores, solamente detallaré las características de esta nueva versión.

Tapestry 5, parte 1 - Introducción Histórica

Este es un primer intento de explicar las diferencias entre Tapestry y JSP. De hecho no solamente con JSP sino con los otros frameworks que son basados en el esquema de JSP. Esta vez voy a empezar con algo de historia, para ponernos en contexto de por qué Tapestry funciona como funciona (aunque tal vez no llegue a esa parte en este post).

En tiempos inmemoriales, a mediados de los 90's, cuando empiezan a popularizarse los web servers, solamente sirven contenido estático. Los primeros contenidos dinámicos fueron por medio de programas llamados CGI's, Common Gateway Interface, que consistía en que el web server le pasaba la URL y datos de la petición HTTP a un programa en UNIX, que lo leía del STDIN, y podía imprimir a STDOUT cualquier salida; ésta era devuelva por el web server al navegador. Esto es muy ineficiente porque cada petición ejecuta un programa y un programa medio complejo puede tardar bastante en ejecutarse, utilizar recursos, etc (por ejemplo cuando el CGI ya hacía conexiones a base de datos, etc).

Encriptacion con Open SSL

Hola a todos. Estoy buscando informacion de encriptacion con seguridad usando Open SSL, de seguro existe alguna API o Libreria para Java, la cuestion es esta necesito encriptar un archivo de texto plano y de igual manera poder desencriptarlo usando Open SSL, si alguien tiene informacion o sabe de algo se lo agradeceria mucho ademas prometo agregar algun post con un ejemplo.

GlassFish + Eclipse

Para los usuarios de Eclipse, una nota interesante.

En alguno de los posts anteriores comentaba que una de las principales características que tiene Glassfish es su integración directa con Netbeans, su proyecto hermano...

Y a pesar que desde hace mucho tiempo existe un plugin de Glassfish para que pueda ser usado con Eclipse, las veces que lo probé simplemente quedé decepcionado, muy lento, muy inestable, muy pobre... de hecho creo que fue uno de los motivos que me fueron inclinando más hacía el uso de Netbeans.

Bueno, pues ahora me encuentro con una "grata" sorpresa. La gente de glassfish está distribuyendo un combo Eclipse + Glassfish :)

GlassFish Tools Bundle for Eclipse v1.1 (August 17, 2009)

     * Eclipse 3.4.2 IDE with WTP Java EE support
     * GlassFish v2.1 pre-registered and configured
     * GlassFish v3 Prelude pre-registered and configured
     * JavaDB sample database pre-registered and configured
     * GlassFish Plugin (1.0.29)
     * MySQL JDBC driver registered to the IDE
     * Maven m2 plugins
     * JAX-WS Metro plugin
     * GlassFish documentation
     * And optionally, a JDK 1.6.

Reportes en JSP

Practico manual que muestra como crear un reporte con Ireport e invocarlo desde una pagina JSP

Distribuir contenido