Desarrollo WEB.


Las practicas de programación orientadas a la web son muy cambiantes en el tiempo. Es necesario conocer e implementar tecnologías, conocer lenguajes,integrar comunidades,usar Ides, etc, recientes, para responder al mercado que se acerca.

Mostrando entradas con la etiqueta glassfish. Mostrar todas las entradas
Mostrando entradas con la etiqueta glassfish. Mostrar todas las entradas

domingo, 8 de diciembre de 2013

Ejecutar Reportes Ireport (java) desde una Aplicación Web php


Cuando surgió la necesidad de ejecutar un reporte .jasper desde una aplicación web php, inicie un proceso de investigación y cacharreo con herramientas que me permitieran llamar un reporte java desde un recurso php. Esta forma sirve tanto para linux como para windows.

Al inicio solo encontré en la red javabridge, pero pasado el tiempo sin obtener resultados después de ensayar muchas formas, decidí ir a una herramienta que hace mucho tiempo había escuchado y hasta leído, una herramienta de caucho(resin) que nos permite ejecutar una aplicación php dentro de un servidor de aplicaciones web en mi caso glassfish. 

Quercus me saco del apuro, lo que hice, y que muchos en la red no enfrentaron fue, no tener que depender de un servidor apache, en mi caso dependía de lampp, configure php.ini, instale recursos javabridge de todas las formas y métodos, y solo encontré problemas, al final de la noche me decidí y empece a usar quercus para ver como desde allí podía llamar los reportes, ya que al estar dentro de un contenedor de aplicaciones java me permitiría ir directamente a los recursos de java y así fue.

el mecanismo para realizar este procedimiento es sencillo.
  • PHP: los recursos normales instalados en el servidor físico o maquina de trabajo linux
  • Quercus: recurso para ejecutar una aplicación php dentro de un servidor de aplicaciones java
    • Descarga: descargar de http://quercus.caucho.com/Quercus_x.x.x.war
    • Instalación: 
      • desplegar el Quercus_x.x.x.war desde la consola de administración de glassfish.
    • Librerías: Copiar las librerías necesarias dentro del web-inf del proyecto quercus desplegado, todas las usadas en jasperreport para exportar el pdf, para conexión el driver conector postgres, y alticJasper.jar parar realizar la conexión desde php al conector y el jasperreport.
  • Glassfish: servidor de aplicaciones web J2EE, JSE, etc.
  • Jasperreport: tecnología para realizar reportes java enlazados a bases de datos 

Código php usado para llamar el reporte .jasper, adaptado de la red.



//directorio de los reportes
$dir = "/home/iproject/glassfish-3.1.2.2/glassfish/domains/domain1/applications
/quercus-4.0.37/EAOptimaERP_v1.2_Contabilidad/reportes";
//Especificamos el nombre del reporte
$informe = "/reporte";

    try {


//Creamos la conexión JDBC
        $Conn = new Java("org.altic.jasperReports.JdbcConnection");

//Seteamos el driver mysql
        $Conn->setDriver("org.postgresql.Driver");

//Especificamos los datos de la conexión
        $Conn->setConnectString("jdbc:postgresql://localhost:5432/
optimaerp_db");
        $Conn->setUser("postgres");
        $Conn->setPassword("");

// Creamos una variable tipo arreglo que contendrá los parámetros 
        $parametrosMap = new Java("java.util.HashMap");
        $parametrosMap->put("usuario", new Java('java.lang.String','YovanySuarez'));

//Creamos el objeto JasperReport que permite obtener el reporte
        $sJfm = new Java("net.sf.jasperreports.engine.JasperFillManager");

//Guardamos el reporte en una variable $print para luego exportarla
        $print = $sJfm->fillReportToFile($dir . $informe . ".jasper", 
$parametrosMap, $Conn->getConnection());

//pdf en el directorio donde están los reportes
        $sJem = new Java("net.sf.jasperreports.engine.JasperExportManager");
        $sJem->exportReportToPdfFile($print, $dir . $informe . ".pdf");

//abre el archivo generado desde el explorador
        if (file_exists($dir . $informe . ".pdf")) {
            header("Content-disposition: attachment;filename=" . $informe . ".pdf");
            header("Content-Type: application/pdf");
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: " . @filesize($dir . $informe . ".pdf"));
            header("Pragma: no-cache");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Expires: 0");
            set_time_limit(0);
            @readfile($dir . $informe . ".pdf") or die("error.");
        }
    } catch (JavaException $ex) {
        echo "error ";
        $trace = new Java("java.io.ByteArrayOutputStream");
        $ex->printStackTrace(new Java("java.io.PrintStream", $trace));
        print "java stack trace: $trace\n";
    }

viernes, 16 de agosto de 2013

Uso del System.out.print en java

Escribir en consola es bueno, agradable a nuestra satisfacción de respuesta de la maquina ante lo que le programamos que haga, pero evidentemente cuando este aspecto pasa a producción es decir sale de nuestra maquina de desarrollo y pasa a un servidor de aplicaciones j2ee configurado para producción,  un log que se escribe constantemente, nos puede recargar recursos de la maquina (y de centavo en centavo se ... ). Es necesario una buena optimización de una aplicación j2ee en un servidor en producción y se debe empezar por los pequeños detalles.





Dos opciones, para optimizar, 

  • Retirar de la configuración en el archivo de glassfish que genera el log(archivo físico , la linea que escribe los sucesos de las acciones en la aplicación. lo que se escribimos en el System.out.print. esta es la mas breve y solo se requiere llegar hasta los archivos físicos en el interior del código de glassfish o buscarlo por administración de glassfish.
  • Ser cuidadoso a la hora de dar respuestas muchas veces obvias por cada acción que se realice en el sistema, esta obviedad pueda brindar información de momento muy importante, como quien registro en cierta estación de trabajo, con solo ver un log, y no tener que ir hasta una bd y consultar. Genera un costo de proceso, claro, asignarle a un procesador que haga esta acción, implementado en java con procesamiento paralelo sera genial y liviana la carga de los procesadores.
mas sobre paralelismo y como empezar orientándolo a nuestras aplicaciones j2ee...

miércoles, 3 de abril de 2013

Montar carpeta Windows para acceder desde linux SUSE 12.3 con Java

En ocasiones se hace necesario que nuestras aplicaciones java web acedan desde el servidor a una carpeta de un sistema operativo windows, bien sea porque necesitamos acceder a bases de datos access o a archivos de imágenes, documentos, etc.

Es allí cuando se necesitan realizar puntos de montaje del directorio al que queremos acceder. he aquí en la imagen una forma de realizarlo a través de consola en linux suse 12.3

Se crea un directorio en /mnt/ con permisos de root, para montar la carpeta windows.
iproject@maya:/mnt# mkdir winsamba



 y en esta imagen una forma de hacerlo mediante shell linux a través de java.




viernes, 29 de marzo de 2013

Configurando Suse 12.3 para Desarrollo de Software

Este pequeño tutorial presenta una serie de pasos básicos para configurar un linux suse en su versión 12.3 y empezar a desarrollar aplicaciones web con netbeans 7.3, glassfish y postgres.
  • Después de instalar suse 12.3, ejecutar Actualización del Sistema. 
     
  • Configurar Internet. 


     
  • Instalar filezilla para accesos por ftp 
     
    • Descargar rpm 64 bit
    • Click derecho sobre el rpm - abrir con - añadir/quitar programas
  • Instalar navegador Google Chrome 
     
    • zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome (para 64 bit)
    • zypper ref
    • zypper in google-chrome-stable
  •  Instalar postgres 


        
    • instalar unixODBC desde el gestor de software
    • Descargar la ultima versión de postgres desde aqui
    • ingrese a gestor de archivos modo super usuario
    • Click derecho sobre el archivo .run - propiedades - pestaña permisos - es ejecutable - aceptar
    • Espere un poco mientras abre el Instalador en modo gráfico.
    • Directorio de instalación /opt/PostgreSQL/9.2/
    • mediante stack builder instalar pgJDBC y psqlODBC
  • Instalar java SE 

     
    • descargar java jdk y java jre, ultima versión desde aqui
    • tener en cuenta descargar las versiones adecuadas.
    • Click derecho sobre el rpm - abrir con - añadir/quitar programas
    • tener en cuenta el siquiente post 
  • Instalar NetBeans 7.x 
     
    • Descargar ultima versión desde aqui
    • Click derecho sobre el archivo.sh - propiedades - pestaña permisos - es ejecutable - aceptar.
    • Ejecutar netbeans, activar plugins y actualizar.
  • Instalar XAMPP.  
     
    • descargar ultima versión desde aqui  
    • ingrese en una terminal en modo super usuario y descomprima usando tar xvfz xampp-linux-1.8.1.tar.gz -C /opt
    • Para arrancar simplemente use /opt/lampp/lampp start
    •   ...
Esto es todo hasta el momento, luego actualizare con otras cositas acerca de glassfish 3.x y netbeans 7.3

sábado, 1 de septiembre de 2012

Desplegar un EAR en glassfish

Glassfish en un potente servidor de aplicaciones j2ee, trae una excelente interfaz gráfica para la administración de recursos en el servidor., desde este panel  se pueden realizar la mayor cantidad de tareas asignadas a un administrador de servidor y llevar el control del rendimiento de las aplicaciones.

Netbeans es una herramienta muy practica para desarrollar aplicaciones empresariales j2ee. Este IDE nos permite realizar después de una ejecución el despliegue automático del EAR en un domain virtual de una manera muy fácil. Cuando queremos construir o reconstruir un EAR debemos simplemente accionar el modo debug para que el IDE fabrique nuevamente un EAR con los cambios mas recientes.
Para ingresar al modo de consola de glassfish, arranque el servidor por consola o desde Netbeans y use http://localhost:4848 para acceder al panel gráfico, si quiere permitir acceso a este panel de admin desde otro nodo en la red, active el dass para que puedan acceder de forma segura a través de https.



Para desplegar un EAR primero hay que saber bien que es?, que contiene? y que recursos necesita configurarle al servidor para que identifique los recursos de conexion a Motores de BD y de persistencia.



Como ya sabemos un EAR es un paquete donde se encuentran compresos todos los módulos que comprenden una aplicación j2ee, en su interior existe una carpeta llamada lib, la cual es la contenedora de todas las librerías que se usen en los diferentes módulos incluyendo los drivers de conexión para java y X motor de base de datos.

  • Despliegue de un EAR


    • Configuración del pool de conexión.
    • Configuración del JDBC
    • Despliegue del EAR
      • Desde un archivo local a servidor local
      • desde un archivo local en el servidor al glassfish en el servidor
      • Re despliegue del EAR
      • Respaldo a archivos físicos construidos previamente después del despliegue anterior.