jueves, 31 de mayo de 2012

Software Libre, “CARTA ABIERTA” a la Presidenta Cristina KIRCHNER

Leyendo las noticias me encuentro con esto:

"Ayer nos enteramos a través de los medios de comunicación [1] que la empresa Microsoft presentó ante Usted un plan de “desarrollo sustentable”. Desde nuestra joven organización: “Software Libre con CFK” [2] leímos con mucho pesar los detalles de la reunión que mantuvo con Brian Kevin Turner, Director de operaciones de la compañía.

Entendemos que desde el 25 de Mayo de 2003 vivimos un proceso de transformación, donde la profundización de nuestra soberanía y la lucha contra los monopolios de la comunicación han sido ejes centrales de este proyecto nacional y popular.

El Software Libre va exactamente en la misma dirección que esas políticas tan valientemente implementadas primero por el compañero Néstor Kirchner y luego por Usted, ya que nos da la posibilidad de obtener la soberanía tecnológica necesaria para encarar este período de desarrollo nacional. Adicionalmente, evita la proliferación de monopolios, tan nocivos para nuestra sociedad, y permite ejercer soberanamente el derecho a la información no siendo simples consumidores sino productores de tecnología. Todo esto no es posible con el Software Privativo que promueve Microsoft. ..."



Más allá de mis apreciaciones políticas, creo que sería muy interesante que desde el gobierno se utilice y se desarrolle software libre. Nos da como pueblo la posibilidad de elegir, la tecnología que vamos a utilizar, como, donde y porque...


Dejo el link de la noticia:

http://www.cioal.com/2012/05/26/el-software-libre-escribe-una-carta-abierta-a-la-presidente-argentina/

miércoles, 30 de mayo de 2012

¿Que es Ubuntu?


Dentro del gran universo de distribuciones Linux, Ubuntu ocupa hoy la gran distinción de ser la más utilizada y elegidas entre todas las opciones. Es una distribución de origen africana apadrinada por la Fundación Canonical y su mayor representante y fundador, Mark Shuttleword quien es desde hace algún tiempo es la cara visible de Ubuntu en todo el mundo, por lo que recorre el planeta difundiendo su proyecto y dando charlas y seminarios sobre Software Libre y Ubuntu.

Ubuntu es, hoy en día y desde hace ya algunos años, la distribución Linux más utilizada, y no solamente eso, sino que durante mucho tiempo, en el universo del Software Libre, los usuarios nos quejábamos por falta de un estándar, lo cual era muy bien aprovechado por la competencia ya que no solamente era una falencia palpable sino que también realmente cierta. Cabe destacar que no hablamos de un tiempo pasado en el que debemos retrotraernos décadas, sino que es una historia muy actual de solo un par de años de antigüedad, en ese entonces las distribuciones trabajaban en forma independiente y no había un referente, que sirva de guía y sea la cabeza del proyecto Linux en relación a los demás sistemas operativos. Todo esto generaba una gran incertidumbre en los usuarios que deseaban acercarse al software libre y migrar de sistema operativo, ya que no encontraban la gran puerta de entrada que hoy está abierta gracias a Ubuntu.

Ubuntu es un sistema operativo fácil, muy sencillo de utilizar y de instalar, y muchas de sus innovaciones en materia de software y usabilidad son luego tomadas para desarrollar o incorporar en otros proyectos de distribuciones, por lo que es sin duda, el estándar que estábamos esperando en el universo de las distribuciones Linux.

jueves, 24 de mayo de 2012

AeroGear, desarrollo movile con Jboss


AeroGear es un proyecto para desarrollo movile de todo tipo utilizando JBoss; se puede desarrollar  para plataformas nativas y también con HTML 5. Su documentación es amplia pero un poco desordenada; se integra con varios proyectos de JBoss, como Arquillian, QUnit, TorqueBox, DeltaSpike y también esta integrado a OpenShift.

Las formas de desarrollar son HTML 5, nativas y también híbridas.  Se puede desarrollar aplicaciones moviles basadas en HTML 5 con Ruby on Rails escrita en JRuby sobre JBoss gracias a TorqueBox. Además esta totalmente integrado con Maven.

Además define POH5 (Plain Old HTML5) Applications; que es POH5 Applications? La revolución de HTML5 hace pensar diferente acerca de su estructura general, con más de JavaScript y CSS del lado del cliente y REST del lado del servidor. Sin embargo, la web no ha cambiado sólo ha conseguido ser mejor y más abierta.



Y es open source!!

Dejo Links:
http://www.jboss.org/aerogear
https://community.jboss.org/en/aerogear
https://community.jboss.org/wiki/GetStartedWithTheMobileWeb

Dejo un video:



TorqueBox



TorqueBox es una plataforma para desarrollo con JRuby que integra tecnologías populares en Ruby como Ruby on Rails con JBoss proveyendo mensajes asíncronos,  caching, scheduled jobs, clustering, daemons y más y más!!

TorqueBox provee un entorno todo en uno, construyendo aplicaciones bajo la plataforma JBoss AS.

Como deciamos entre las caracteristica encontramos:


  • Rack: TorqueBox soporta Rack, incluyendo Rails 2.3.x, Rails 3.x, Sinatra, y otros.
  •  JDBC
  • Daemons
  • Scheduled Jobs
  • Messaging
  • Asynchronous Tasks


Veamos el gráfico:

Para más info dejo el link:
http://torquebox.org/



Immutant

Immutant es una aplicación servidora para Clojure que integra este a la plataforma JBoss 7 proveyendo mensajes asíncronos,  caching, scheduled jobs, clustering, daemons y más y más!!



Dejo el link:
http://immutant.org/
http://immutant.org/documentation/

miércoles, 23 de mayo de 2012

Linux Mint 13 'Maya' released

Salio a la luz una nueva versión de mi Linux favorito Linux Mint, entre las novedades tenemos:
MATE 1.2, es el popular escritorio de Mint, muy estable y desarrollado sobre Gnome 2


y el nuevo Cinnamon 1.4 el cual esta desarrollado sobre Gnome 3, más moderno y elegante. Pero no tan estable como MATE.

Entre otras novedades trae también un nuevo Display Manager llamado MDM,

Estas son algunas de las nuevas características de Mint 13, para más info:

http://linuxmint.com/rel_maya_whatsnew.php

 y para bajar:

http://www.linuxmint.com/download.php



lunes, 21 de mayo de 2012

Utilizar maven en proyectos Android!



Maven provee soporte para una amplia gama de tecnologías en la que Android esta incluida. Cuando hacemos mvn archetype:generate de forma interactiva podemos elegir el arquetipo:  de.akquinet.android.archetypes:android-quickstart el cual es una aplicación android. Luego de generar nuestro proyecto y de hacer mvn install podemos ejecutar:

mvn android:deploy

Con este comando nos muestra la aplicación en el avd de android.

Para que funcione este plugin necesitamos solamente el sdk de android y confugurada una variable de entorno ANDROID_HOME que contenga el path al sdk de android.

Para integrarlo con eclipse se debe instalar un connector de m2e y luego importar el proyecto así:




El plugin lo pueden buscar del Marketplace como Android Configurator for M2E

sábado, 19 de mayo de 2012

CouchDB vs Couchbase

InfoQ publico una comparativa muy interesante entre Apache CouchDB y Couchbase.

Recuerden que Apache CouchDB es una base de dato NoSQL que esta empezando a pisar fuerte. CouchDB es una base documental que utiliza JSON para exponer los datos. Y tiene licencia Apache.


Couchbase es una base NoSQL de codigo abierto, la cual surge por la combinación de Membase y parte de CouchDB. Dado que en Febrero del 2011, CouchOne y Membase; la combinación de estas empresas se llamo Couchbase. Couchbase creo un nuevo producto combinando Membase y CouchDB y lo llamo Couchbase.


Dejo el link de la comparativa:
http://www.infoq.com/news/2012/05/couchdb-vs-couchbase-membase


Y dejo la tabla comparativa:



miércoles, 16 de mayo de 2012

10 años de Red Hat!


Red Hat celebra sus 10 añitos. En el 2002 se abría una de las más grandes empresas que trabaja con Linux.

Feliz cumple!

martes, 15 de mayo de 2012

Manual de Synfony en español


Symfony es un completo framework diseñado para optimizar el desarrollo de las aplicaciones web mediante algunas de sus principales características. Dejo un manual de Synfony en español para el que lo necesita o le interesa: http://gitnacho.github.com/symfony-docs-es/index.html

sábado, 12 de mayo de 2012

Dalvik, la maquina virtual de Android


Dalvik es la máquina virtual que utiliza la plataforma para dispositivos móviles

Dalvik está optimizada para requerir poca memoria y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente, delegando en el sistema operativo subyacente el soporte de aislamiento de procesos, gestión de memoria e hilos.

A menudo Dalvik es nombrada como una máquina virtual Java, pero esto no es estrictamente correcto, ya que el bytecode con el que opera no es Java bytecode. Sin embargo, la herramienta dx incluida en el SDK de Android permite transformar los archivos Class de Java compilados por un compilador Java al formato de archivos Dex.

El nombre de Dalvik fue elegido por Bornstein en honor a Dalvík, un pueblo de Eyjafjörður, Islandia, donde vivieron antepasados suyos.

En este ultimo tiempo se hizo famosa esta maquina virtual porque ser capaz de compilar código java a otra plataforma. Con lo que utiliza el lenguaje java plataforma de Android dañando algunas patentes de Oracle. Pero sobre todo esta en el centro de la discusión de si un lenguaje de programación puede ser copyrighteable. Ustedes que piensan? Un lenguaje de programación puede ser copyrighteable?

Dejo link:
http://www.dalvikvm.com/

Eucalyptus Systems y Nebula, nubes libres!!


Imaginen que tienen una empresa, muchas pcs toda una infraestructura armada y decean aprobechar las ventajas de la nube (que ahora todos hablan de la nube) Pero les da cosita poner todos sus datos en manos del proveedor. Que pueden hacer?? Una nube privada!! Tenes todas las ventajas de la nube pero lo tenes en tu casa (también tenes que mantenerlo vos)

Existen software libre para hacer nubes privadas, como Eucalyptus Systems y Nebula.


Eucalyptus Systems - dirigida por Marten Mickos, antiguo consejero delegado de MySQL AB - proporciona una auto-organizada Infraestructura-as-a-Service usando servidores Linux.

Eucalyptus (eucalipto) es una infraestructura (plataforma) open source para la implementación de computación en nube privada en clústers de ordenadores. Su nombre hace referencia al acrónimo "Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems" que puede traducirse como "Utilidad de arquitectura informática elástica para confiar sus programas a sistemas funcionales". Eucalyptus es compatible con Amazon Web Services (Amazon EC2 y S3). Está integrado con la distribución GNU/Linux Ubuntu2 9.04 como un útil de "cloud computing". Eucalyptus puede instalarse fácilmente en la mayoría de distribuciones GNU/Linux: Debian,3 CentOS,4 Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES), OpenSUSE, Fedora… También puede usar gran variedad de tencologías de virtualización de hardware incluyendo hipervisores VMware, Xen y KVM para implementar las abstracciones de nube que soporta. Actualmente posee una interfaz orientada al usuario que es compatible con los servicios pero la plataforma está modularizada para poder utilizar un conjunto de interfaces diferentes simultáneamente. El desarrollo de Eucalyptus está impulsado por Eucalyptus Systems, una start-up de respaldo de riesgo.5 Hay 2 ediciones básicas: una propietaria, y otra de código abierto.

Mickos fue uno de los oradores principales en el 2011 América del Norte LinuxCon, donde observó que, la comunidad Linux, debe esforzarse por garantizar que nadie se cierra lo que hemos abierto. Es evidente que la participación de su empresa con la Fundación Linux es un esfuerzo por poner su dinero donde está su boca. "Como pioneros de la infraestructura de software-as-a-servicio, los miembros de Eucalyptus" en la Fundación Linux nos mantendrá cerca el desarrollo de tecnología que es vital para el avance de las nuevas innovaciones en cloud computing. "

La Agencia Espacial ve el ejemplo de otros proyectos en la nube que tiene éxito, por lo tanto decide crear la plataforma llamada Nebula Cloud Computing, en la cual funcionando sobre proyectos open source pero como plataforma privada, este proyecto contiene varios data centers en los cuales funcionará todo el sistema. Los científicos tienen acceso a esta infraestructura como un servicio que ademas posee características de almacenamiento, por lo pronto se presenta un plan piloto en los cuales los miembros se familiarizarán con la infraestructura.

Nebula está desarrollando un dispositivo de hardware basado en Linux para las grandes infraestructuras privadas de cloud computing, y Virtual Bridges proporcionan una solución de infraestructura de escritorio virtual.


Dejo links:
http://www.eucalyptus.com/
http://www.nebula.com/

Apache Hadoop y Microsoft??

Leyendo infoQ me interese en la siguiente nota: http://www.infoq.com/news/2012/05/hadoop-microsoft

Parece ser que Microsoft anuncio una alianza con Hortonworks para traer  Hadoop en Windows Server y Windows AzureHortonworks es una empresa especializada en la consultoria para adopción de Apache HadoopLa visión de Microsoft gira en proporcionar herramientas relacionadas con  Hadoop y Big Data accesibles por usuario final y para ello se integra con el análisis de SQL Server y Reporting Services, así como de PowerPivot de Excel.


Lo interesante de esta noticia o el análisis que hago; es el ruido que esta haciendo Apache Hadoop como para que Microsoft se interese por el. Espero que siga creciendo!!

viernes, 11 de mayo de 2012

Empleos en linux

Vía Ubuntizandoelplaneta encuentro esta infografía que muestra una estadística sobre el mercado laboral de Linux reuniendo datos de jobs.linux.com, herramienta de la Linux Foundation que permite buscar y encontrar trabajos relacionados con Linux.


miércoles, 9 de mayo de 2012

OpenStack, nubes privadas y Open Sources



OpenStack permite hacer nubes privadas, esto es muy flexible, para una organización. Todo sobre Open Source por supuesto.

OpenStack es un proyecto liderado por la empresa Rackspace, que ha decidido liberar el código de sus servicios Cloud Files y Cloud Servers bajo una licencia Apache 2.0. Este código forma la piedra angular de OpenStack, ofreciendo la posibilidad a usuarios o empresas de crear sus propios servicios de cloud computing.

Rackspace aporta la parte de almacenamiento, llamada Swift, la base de los servicios anteriormente citados. La NASA, que también participa en el proyecto, colabora con Nova, base de su plataforma NEBULA, ambos servicios están desarrollados utilizando Python.

Como se ha comentado, OpenStack ofrecerá dos servicios: OpenStack Compute permite gestionar el despliegue y ejecución de aplicaciones a través de múltiples servidores. La tecnología Nova, se basa en el protocolo de mensajeria AMQP y es el sistema utilizado en la NASA para proveer sistemas de virtualización bajo demanda.

OpenStack Object Storage permite gestionar el almacenamiento de datos en varios servidores que trabajen de manera conjunta en clústers, para conseguir un almacenamiento masivo de objetos estáticos, de manera supérflua y fiable. El software de OpenStack es el responsable de garantizar la replicación de los datos y la integridad a través de todo el clúster, permitiendo añadir nuevos nodos y configurarlos de manera automática.

Aunque el código en el que se basan los servicios comentados lleva siendo utilizado durante bastante tiempo, se espera que las aportaciones de la comunidad open source mejoren su funcionamiento. Las primeras versiones estables de Compute y Object Storage se liberarán a mediados de octubre y septiembre, respectivamente.

Detrás del proyecto OpenStack se encuentran empresas como Dell, Citrix, Intel o como ya se ha comentado, la agencia espacial estadunidense. El objetivo final del proyecto es facilitar un sistema de cloud computing de código abierto y fácilmente adaptable a sistemas hardware de bajo coste, facilitando su implantación en empresas de todos los niveles.

Y dejo una infografia sobre el crecimiento del proyecto:


Dejo la fuente: http://www.genbeta.com/actualidad/openstack-cloud-computing-de-codigo-abierto
Y dejo link del proyecto: http://openstack.org/

lunes, 7 de mayo de 2012

Ohloh

Ohloh es un directorio de software libre, La idea es que la comunidad pueda buscar proyectos o código fuente. 

"Al recuperar datos de los repositorios de control de versiones (como CVS, SVN, o Git), Ohloh proporciona estadísticas acerca de la longevidad de los proyectos, sus licencias (incluida la licencia conflicto información) y las cifras de software, como líneas de código fuente y las estadísticas de los Commit. El codebase history informa sobre la cantidad de actividad para cada proyecto. Software stacks (lista de aplicaciones de software utilizadas por los miembros del Ohloh) y las etiquetas se utilizan para calcular la similitud entre los proyectos.


Las estadísticas globales por lenguaje para medir la popularidad de determinados lenguajes de programación desde principios de los años 90. Las estadísticas mundiales en todos los proyectos en Ohloh también se han utilizado para identificar aquellos con la más amplia revisión continua de control de historias.


Las estadísticas de contribuidor también están disponibles, la medición de los desarrolladores con experiencia de código abierto como observables en el código ha suministrado a los repositores de control de versiones. Características de la red Social (kudos) se han introducido para permitir a los usuarios evaluar a los contribuyentes de código abierto. Ofrece un KudoRank para cada usuario y contribuyente código abierto en una escala de 1 a 10, se extraen automáticamente de todos los kudos en el sistema. La idea de medir los desarrolladores de código abierto sus aptitudes y la productividad sobre la base de estadísticas de los commit o calificación mutua ha recibido reacciones muy diversas en los blogs de tecnología." Gracias Wikipedia!


Es una herramienta muy buena para analizar que proyecto de software utilizar. 


Dejo Link:
https://www.ohloh.net/

sábado, 5 de mayo de 2012

El Software Libre y la educación

Richard M. Stallman habla de la importancia del uso del Software Libre en el ámbito educativo.

miércoles, 2 de mayo de 2012

Squeryl

Squeryl es un orm escrito en scala que provee un potente dsl de consulta a datos por lo poco que leí quede asombrado. No quiero ahondar en configuraciones, transacciones y esas cosas. Voy a hablar del dsl de consulta a datos, que esta orientado a ser fácil de usar, intuitivo y typesafe. 

Veamos un ejemplo:

def songCountByArtistId: Query[GroupWithMeasures[Long,Long]] =
  from(artists, songs)((a,s) =>
    where(a.id === s.artistId)
    groupBy(a.id)
    compute(countDistinct(s.id))
  )

Y esto va a devolver el siguiente query: 

Select
  Artist1.id as g0,
  count(distinct Song2.id) as c0
From
  Artist Artist1,
  Song Song2
Where
  (Artist1.id = Song2.artistId)
Group By
  Artist1.id

Noten lo legible que queda usando closures; muy bueno. Yo estuve viendo otros frameworks de consulta a datos, dejo el link para que comparen:

Dejo links de Squeryl:

martes, 1 de mayo de 2012

Jasper en jsf, parte 2. La leyenda continua!


Siguiendo con el post:
http://emanuelpeg.blogspot.com.ar/2012/04/jasper-en-jsf.html

Ahora vamos a crear objetos que representen a los reportes y sus parámetros. Luego hacemos una pagina donde se pueda elegir el reporte,completar los parámetros e imprimir.
Clase reporte:

import java.util.ArrayList;
import java.util.List;

/**
 * @author emanuel
 *
 */
public class Report {
 
 private Long id;
 
 private String nombre;
 
 private List parameters = new ArrayList();
 
 private String fileName;
 
 private String urlConnection;
 
 private String driver;

 public Report() {
 }

 public Report(Long id, String nombre, List parameters,
   String fileName, String urlConnection, String driver) {
  super();
  this.id = id;
  this.nombre = nombre;
  this.parameters = parameters;
  this.fileName = fileName;
  this.urlConnection = urlConnection;
  this.driver = driver;
 }

 //Getters and setters
 
}


Clase Parametro
package org.assembly.tyr.reports.model;

/**
 * @author emanuel
 *
 */
public class Parameter {
 
 private String nombre;
 
 private Type type;
 
 private Object value;
 
 public Parameter(String nombre, Type type) {
  super();
  this.nombre = nombre;
  this.type = type;
 }

 //Getters and setters
}


El enum type
public enum Type {
 
 STRING, NUMBER, DATE

}

Ahora hago un dao, no quiero usar la base de datos por lo tanto hago un mapa, ustedes usen la base de datos.

package org.assembly.tyr.reports.dao;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.assembly.tyr.reports.model.Parameter;
import org.assembly.tyr.reports.model.Report;
import org.assembly.tyr.reports.model.Type;

/**
 * @author emanuel
 *
 */
public class ReportDao {
 
 private Map reports = new HashMap();
 
 public ReportDao() {
  List parameter1 = new ArrayList();
  Report report1 = new Report(1l,"hola1", parameter1, "/resources/reports/reporte.jasper",    
                                             "jdbc:mysql://localhost:3306/holaMundo?user=root&password=", 
                                             "com.mysql.jdbc.Driver");
  reports.put(1l, report1);
  
  List parameter2 = Arrays.asList(new Parameter("prueba1", Type.NUMBER), 
                      new Parameter("prueba2", Type.STRING), 
                      new Parameter("prueba3", Type.DATE));
  Report report2 = new Report(2l,"hola2", parameter2, 
                         "/resources/reports/reporte2.jasper", 
                         "jdbc:mysql://localhost:3306/holaMundo?user=root&password=", 
                         "com.mysql.jdbc.Driver");
  reports.put(2l, report2);
 }
 
 public Collection getAll() {
  return reports.values();
 }
 
 public Report get(Long id) {
  return reports.get(id);
 }

}


Ahora agrego en el face-config.xml el controller.

  
  reportGenerator
  org.assembly.tyr.reports.ui.ReportGeneratorController
  session
 

Agrego la pagina


    Report


    
    

Report


y modifico el controller

package org.assembly.tyr.reports.ui;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;

import org.assembly.tyr.reports.dao.ReportDao;
import org.assembly.tyr.reports.model.Parameter;
import org.assembly.tyr.reports.model.Report;

public class ReportGeneratorController {
 
 private ReportDao reportDao = new ReportDao();
 private Long reportId;
 private List parameters;
 private Map parameterValues = new HashMap();
 
 public List getReportList() {
  List result = new ArrayList();
  Collection reports = reportDao.getAll();
  for (Report report : reports) {
   SelectItem item = new SelectItem(report.getId(), report.getNombre());
   result.add(item);
  }
  return result;
 }
 
 public Long getReportId() {
  return reportId;
 }

 public void setReportId(Long reportId) {
  this.reportId = reportId;
 }

 public List getParameters() {
  if ( reportId!= null) {
   Report report = this.reportDao.get(reportId);
   parameters = report.getParameters();
  }
  return parameters;
 }

 public void setParameters(List parameters) {
  this.parameters = parameters;
 }
 
 public Map getParameterValues() {
  return parameterValues;
 }

 public void setParameterValues(Map parameterValues) {
  this.parameterValues = parameterValues;
 }
 
 public Object getParameterValue(String key) {
  return this.parameterValues.get(key);
 }

 public String generateReportSubmit()
   throws ClassNotFoundException, SQLException, IOException,
   JRException {
  Connection connection;
  
  if (parameters != null) {
   for (Parameter parameter: parameters) {
    parameterValues.put(parameter.getNombre(), parameter.getValue());
   }
  }
  
  Report report = this.reportDao.get(reportId);
  
  //Buscamos el contexto de jsf
  FacesContext facesContext = FacesContext.getCurrentInstance();
  HttpServletResponse response = (HttpServletResponse) facesContext
    .getExternalContext().getResponse();
  //Con el contexto buscamos el jasper
  InputStream reportStream = facesContext.getExternalContext()
    .getResourceAsStream(report.getFileName());
  ServletOutputStream servletOutputStream = response.getOutputStream();
  
  //Nos conectamos a la base de datos (creamos una coneccion)
  Class.forName(report.getDriver());
  connection = DriverManager
     .getConnection(report.getUrlConnection());
  facesContext.responseComplete();
  //seteamos el contentType
  response.setContentType("application/pdf");
  
  //ejecutamos el reporte
  JasperRunManager.runReportToPdfStream(reportStream,
    servletOutputStream, this.parameterValues, connection);
  // Cerramos la coneccion a la Base
  connection.close();
  // flush y close del reporte
  servletOutputStream.flush();
  servletOutputStream.close();
  return null;
 }
 
}


Para ver el codigo:
https://code.google.com/p/jaspertyr

Apache Foundation anuncia Apache TomEE v1.0


Leyendo javahispano me tope con la siguiente nota: http://www.javahispano.org/portada/2012/5/1/apache-foundation-anuncia-apache-tomee-v10.html

Apache anuncio el primer release de Apache TomEE del que ya hablamos en el blog. Este es un servidor que certifica Java EE 6 Web Profile. Es una gran noticia, dado que muchas veces no utilizamos JEE pero si necesitamos usar algún servicio como JMS o JTA o otros servios y por comodidad terminamos deployando en un JBoss o Glassfish.

Dejo link:
http://openejb.apache.org/apache-tomee.html