PHP-JRU 1.0 RC2

Esta versión tiene algo muy peculiar y es que viene integrada con PHP JAVA/Bridge y podemos hacer uso de ella con php 5.3 en conjunto con tomcat u otro contenedor de servlet.

el enlace de descarga es el siguiente:

http://sourceforge.net/projects/php-jru/files/PHP-JRU/1.0/php-jru-0.1RC1.tar.gz/download

Luego de descargarlo debemos asegurarnos de configurar un servidor de aplicaciones o contenedor servlet, en este caso usare tomcat.

Para instalarlo en debian:

# apt-get install sun-java6-jdk tomcat6-admin tomcat6

NOTA:  En otros SO como ubuntu busque los paquete correspondientes a la JVM por ejemplo:  openjdk-jre. También es recomendable tener instalado php5-cgi

Ahora tenemos que configurar la seguridad, como vamos a tener un servidor de desarrollo, el nombre de usuario y contraseña que voy a poner es “tomcat”. Editamos el fichero de usuarios de tomcat:

$ sudo gedit /etc/tomcat6/tomcat-users.xml

Tiene que quedar así:

<tomcat-users>
<role rolename=”admin”/>
<role rolename=”manager”/>
<user username=”tomcat” password=”tomcat” roles=”admin,manager”/>
</tomcat-users>

Reiniciamos tomcat6 para que se apliquen los cambios:

$ sudo /etc/init.d/tomcat6 restart

Para probar que todo va bien, podemos ir a cualquier navegador web y escribir en la barra de direcciones:

http://localhost:8080/manager/html

Dentro  php-jru1.0.tar.gz encontraremos el archivo PHP-JRU.war que debemos colocar en el directorio de trabajo de tomcat (o cualquiera sea el servidor de aplicaciones que desee usar)

Con el usuario que configuramos  podemos entrar a la interfaz web de administración para cargar PHP-JRU.war luego de esto accedemos ala siguiente URL

http://localhost:8080/PHP-JRU/

para comprobar que la aplicación levanta.

ahora debemos cambiar el parametro allow_url_include en el php.ini

# nano /etc/php5/apache2/php.ini

buscamos la linea que dice allow_url_include y le cambiamos el valor a On:

allow_url_include=On

y reiniciamos el apache

# /etc/init.d/apache2 restart

luego incluimos php-jru en nuestro script de php

<?php

include(“phpjru.php”);

?>

NOTA: esta version ya viene con JasperReport 4.0 y  aunque  pesa cerca de 81MB no es necesario incluir PHPJRU.WAR en su aplicación ya que este cumplirá sus funciones del lado de tomcat,  en su aplicación de PHP solo tenga los archivos *.php

Advertisement

42 Respuestas a “PHP-JRU 1.0 RC2”


  1. 1 Tadeo 01/02/2011 a las 4:36 AM

    Hola de nuevo Robert gracias por tus respuestas, es posible usar otro servidor como por ejemplo apache?, por que con este estoy trabajando (ExtJs+PHP+MySql), por cierto tienes algun manual del uso de tu libreria? saludos y gracias nuevamente.

    • 2 robertbruno 01/02/2011 a las 12:23 PM

      Apache es un servidor WEB , lo vas a usar para desarrollar con PHP, pero para poder comunicarse con java y generar los reportes hay que adicionalmente tener configurado un servidor de aplicaciones o mas bien un contenedor de Servlets como lo es Apache Tomcat. De esta forma no importa en que Sistemas Operativo estés trabajando.
      No tengo manuelas aun de PHP-JRU 1.0, los manuales que existen son para versiones anteriores, y aunque pudieran servir para algunos casos no aplica para la instalación y configuración de PHP-JRU.

  2. 3 Tadeo 01/02/2011 a las 2:13 PM

    Ok Gracias Robert, ya tenia entendido que es Tomcat y apache , pero creo que me confundi con la pregunta ya que lei que tenias un proyecto por aparte para generar directamente desde Apache y PHP los reportes en jasper, pero entre a los repositorios de Sourceforge , pero no hay nada, bueno por lo pronto utilizare tu utileria con TomCat, por cierto ya le hice promocion en ExtJs Español:

    http://www.extjses.com/general/creando-reportes-con-jasperreports-t2233.html
    Saludos Cordiales , cualquier cosa yo te comento nuevamente.

  3. 5 Tadeo 01/02/2011 a las 7:48 PM

    Hola de nuevo Robert instale Tomcat y las pruebas funcionaron bien y empece hacer test con tu libreria pero en el navegador web me da un error, te muestro los parametros de instalcion:

    En Mi PHP Tengo esto:
    runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion);

    ?>

    Al tratar de ejecutar mi reporte de prueba: http://localhost/ExjsDeveloper/TestReporte.php

    El Navegador lanza el siguiente error:
    Fatal error: Uncaught [[o:Exception]:”java.lang.Exception: CreateInstance failed: new org.altic.jasperReports.JdbcConnection. Cause: java.lang.ClassNotFoundException: org.altic.jasperReports.JdbcConnection VM: 1.6.0_10-rc2@http://java.sun.com/” at: #-11 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) #-10 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493) #-9 java.lang.ClassLoader.loadClassInternal(Unknown Source) #-8 java.lang.Class.forName0(Native Method) #-7 java.lang.Class.forName(Unknown Source) #-6 php.java.bridge.Util.classForName(Util.java:1518) #-5 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-4 php.java.bridge.Request.handleRequest(Request.java:458) #-3 php.java.bridge.Request.handleRequests(Request.java:500) #-2 php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) #-1 php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) #0 http://localhost:8080/php-jru/java/Java.inc(232): java_ThrowExceptionProxyFactory->getPr in http://localhost:8080/php-jru/java/Java.inc on line 195

    Cabe recordar que tengo el mysql-connector-java-5.1.14-bin.jar dentro de webapps\php-jru\WEB-INF\lib.

    Que podria ser el error?

    Gracias nuevamente.

    • 6 robertbruno 01/02/2011 a las 8:29 PM

      Al parecer te falta una librería llamada alticJasper.jar es extraño pues debería de venir ya en PHPJRU.war, te la envío por correo para que la agregues

      • 7 Tadeo 01/02/2011 a las 9:43 PM

        Hola Robert si esta esa libreria en php-jru, una pregunta tengo que instalar manualmente el JavaBridge o con lo que ya entregas con esta version queda todo instalado haciendo los pasos que indicas arriba?

        Muchas Gracias.

  4. 8 Tadeo 01/02/2011 a las 7:49 PM

    Se me olvido copiar el cpodigo de PHP
    runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion);

    ?>

  5. 9 Tadeo 01/02/2011 a las 7:50 PM

    php

    include(‘../php-jru/php-jru.php’);

    $Reporte=”/Integra/Php/Reports/TestIceberg.jasper”;
    $SalidaReporte=”/Integra/Php/Reports/Iceberg.pdf”;
    $Parametro=new java(“java.util.HashMap”);
    $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”integradatabase”,”root”,”");

    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion);

    ?

  6. 10 Tadeo 02/02/2011 a las 1:35 AM

    Disculpa Robert por tantas dudas, mira modifique algunas cosas en mi codigo, tuve que poner la Ruta completa con :http://localhost:8080/….
    por que si no lo pongo me marca error de que no existen las rutas

    require_once(‘http://localhost:8080/php-jru/java/Java.inc’);
    require(‘http://localhost:8080/php-jru/php-jru.php’);

    $Reporte=’/Integra/Php/Reports/TestIceberg.jasper’;
    $SalidaReporte=’/Integra/Php/Reports/Iceberg.pdf’;
    $Parametro=new java(‘java.util.HashMap’);
    $Conexion= new JdbcConnection(‘com.mysql.jdbc.Driver’,'integradatabase’,'root’,”);

    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion);

    ya colocando todo me sale otro error:
    necesita habilitar allow_url_include en php.ini para poder usar php-jru.
    Fatal error: Class ‘JdbcConnection’ not found in C:\xampp\htdocs\CursosExjs\TestReporte.php on line 11

    cabe recordar que anteriormente ya he modificado en Php.ini la siguiente linea:
    ; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
    ; http://php.net/allow-url-include
    allow_url_include = On

    Ya le di vueltas al asunto y no consigo generar mi reporte de pruebas, saludos y gracias.

    • 11 robertbruno 02/02/2011 a las 4:59 PM

      el .war contiene todo lo necesario, Java/Bridge y JasperReport hay que instalarlo en el tomcat y luego incluir el java.inc desde tu script de php.

      Es algo problemático puesto que se pueden generar cantidades de errores diferentes por casi cualquier cosa, hay que ir deduciendo poco a poco pues se esta trabajando con diferentes tecnologías.

      Efectivamente tienes que colocar la URL completa incluyendo el puerto si no, tomaría por defecto el puerto 80 y no son los mismos.

      Además de esto solo el java.inc se incluye desde una URL el script php-jru.php debe estar de lado de apache donde esta tu script de php quedando algo parecido a esto:

      require_once('http://localhost:8080/php-jru/java/Java.inc');
      require('../php-jru/php-jru.php');

      También revisa en el php.ini que la directiva allow_url_fopen este activada:


      allow_url_fopen = On

      allow_url_include = On

      • 12 Tadeo 02/02/2011 a las 7:22 PM

        Gracias Robert de hecho tengo todo como tu indicas:
        1.-Tengo cargado php-jru en Tomcat con la siguiente ruta teniendo dentro de esta carpeta todo los archivos jar,etc:
        C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\php-jru

        2.- En PHP tengo igualmente cargado al lado de mi archivo script de prueba la carpeta php-jru:
        C:\xampp\htdocs\CursosExjs\php-jru

        y en mi script PHP de prueba para generar el reporte tengo esto:

        php

        //Tengo que forzar la habilitacion de las siguientes lineas:
        ini_set(“allow_url_fopen”, 1); //función habilitada
        ini_set(“allow_url_include”, 1); //función habilitada

        require_once(“http://localhost:8080/php-jru/java/Java.inc”);
        require(‘../php-jru/php-jru.php’);

        $jru=new JRU();
        $jru->loadDirLibrary(“http://localhost:8080/php-jru/”);
        $Reporte=’/Integra/Php/Reports/TestIceberg.jasper’;
        $SalidaReporte=’/Integra/Php/Reports/Iceberg.pdf’;
        $Parametro=new java(‘java.util.HashMap’);
        $Conexion= new JdbcConnection(‘com.mysql.jdbc.Driver’,'integradatabase’,'root’,”);

        $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion);

        termina script Php

        Pero ejecutando el Browser me manda este nuevo error:

        Warning: readdir() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\php-jru\php-jru.php on line 115

        Estoy Utilizando Xammp y Tomcat, hoy quise hacer el puenteo a mano, pero veo que ya no existe la dll llamada:java-x86-windows.dll

        Gracias nuevamente y disculpa tantas molestias.

      • 13 robertbruno 02/02/2011 a las 8:00 PM

        me temo que la activación de estas directivas

        ini_set(“allow_url_fopen”, 1); //función habilitada
        ini_set(“allow_url_include”, 1); //función habilitada

        tendra que ser directamente en el archivo de configuración php.ini

  7. 14 Tadeo 02/02/2011 a las 7:54 PM

    Hola de nuevo moviendole y moviendole aluna linea de codigo de mi script:
    $jru->loadDirLibrary(“http://localhost:8080/php-jru/”); por

    $jru->loadDirLibrary(‘../php-jru/’);

    ahora me sale este error:
    Warning: java_require() not supported anymore. Please use tomcat or jee hot deployment instead in http://localhost:8080/php-jru/java/Java.inc on line 1656

    Al parecer no tengo los jar adecuados para el ireports pero es rraro por que ya baje para la version que utilizo que es la 3.7.4.

    Saludos.

    • 15 robertbruno 02/02/2011 a las 7:56 PM

      $jru->loadDirLibrary(‘../php-jru/’);
      esta obsoleto y ya no se usa ni debe usarse, solo se mantienen para compatibilidad

      • 16 Tadeo 02/02/2011 a las 9:26 PM

        Gracias Robert por tus respuestas, mira hice ciertos cambios que despues los comentare en otro post, por ahora te digo que cambie en mi codigo:

        codigo php
        ini_set(“allow_url_fopen”, 1); //función habilitada
        ini_set(“allow_url_include”, 1); //función habilitada

        require_once(“http://localhost:8080/php-jru/java/Java.inc”);
        require(‘../php-jru/php-jru.php’);

        $jru=new JRU();
        //Obsoleto $jru->loadDirLibrary(‘../php-jru/’);
        $Reporte=’C:\xampp\htdocs\Integra\Reports\TestIceberg.jasper’;
        $SalidaReporte=’C:\xampp\htdocs\Integra\Reports\Iceberg.pdf’;
        $Parametro=new java(‘java.util.HashMap’);
        $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”integradatabase”,”root”,NULL);

        $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion);

        Termina Codigo PHP

        ahora obtengo este warning:
        Warning: argument ‘JdbcConnection’ is not a Java object,using NULL instead in http://localhost:8080/php-jru/java/Java.inc on line 483
        java stack trace: java.lang.Exception: Invoke failed: [[o:JasperRunManager]]->runReportToPdfFile((o:String)[o:String], (o:String)[o:String], (i:Map)[o:HashMap], (i:Connection)null). Cause: java.lang.NullPointerException VM: 1.5.0_04@http://java.sun.com/
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
        at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:122)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044)
        at php.java.bridge.Request.handleRequest(Request.java:417)
        at php.java.bridge.Request.handleRequests(Request.java:500)
        at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
        at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
        Caused by: java.lang.NullPointerException
        … 13 more

        No se que estoy pasando por alto, alguna idea?

        Saludos y gracias parece que esto ya esta quedando.

      • 17 robertbruno 03/02/2011 a las 12:49 AM

        Hay un detalle en la linea:

        JdbcConnection(“com.mysql.jdbc.Driver”,”integradatabase”,”root”,NULL);

        estas pasando NULL en el campo del password, mejor seria de la siguiente forma:

        JdbcConnection("com.mysql.jdbc.Driver","integradatabase","root","");

        y luego pasar por parámetro la conexión de la siguiente forma:
        $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

  8. 18 estefany 02/02/2011 a las 10:26 PM

    Hola Robert, un pregunta ya esta version de PHP-JRU viene con java-bridge integrado, o debo hacer alguna configuracion adicional?

    Gracias por el gran aporte

  9. 20 estefany 02/02/2011 a las 10:27 PM

    se me olvido preguntar si tienes instruccion es para instalacion en windows xp

    • 21 robertbruno 03/02/2011 a las 1:07 AM

      conchale la verdad no, es que apenas me da tiempo. Pero seria bueno si te animaras a realizar una pequeña guía y yo la incluiría en los repositorios svn (en sourceforge) de jru.

  10. 22 estefany 02/02/2011 a las 11:51 PM

    Buenas!!

    chicos estoy probando el php-JRU y me funciono el test inicial, pero al intentar realizar una prueba me arroja un error:

    Fatal error: Uncaught [[o:Exception]:”java.lang.Exception: CreateInstance failed: new org.altic.jasperReports.JdbcConnection. Cause: java.lang.ClassNotFoundException: org.altic.jasperReports.JdbcConnection VM: 1.6.0_23@http://java.sun.com/” at: #-17 java.net.URLClassLoader$1.run(Unknown Source) #-16 java.security.AccessController.doPrivileged(Native Method) #-15 java.net.URLClassLoader.findClass(Unknown Source) #-14 java.lang.ClassLoader.loadClass(Unknown Source) #-13 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) #-12 java.lang.ClassLoader.loadClass(Unknown Source) #-11 java.lang.Class.forName0(Native Method) #-10 java.lang.Class.forName(Unknown Source) #-9 php.java.bridge.Util.classForName(Util.java:1518) #-8 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-7 php.java.bridge.Request.handleRequest(Request.java:458) #-6 php.java.bridge.Request.handleRequests(Request.java:500) #-5 php.java.bridge.JavaBridge.handleRequests(JavaBridge.java:150) #-4 php.java.bridge.JavaBridgeRunner.doPut(JavaBridgeRu in C:\wamp\www\php-jru\java\Java.inc on line 195

    mi codigo es este
    loadDirLibrary(“C:\wamp\www\php-jru\lib”);

    //crea una instancia de la clase JasperReport de PHP-JRU
    //$report = new JasperReport();
    $conn = new JdbcConnection(“com.mysql.jdbc.Driver”,”test”,”root”,”1234″);

    //crea los parámetros del reporte, que no deben de ser nulos
    $parameters = new java (“java.util.HashMap”);
    $jru->runReportToPdfFile(“C:\\wamp\\www\\report1.jasper”,”",$parameters,$conn);

    ?>

    por favor si alguno ve el error indiquemelo… Copie la misma carpeta PHP-JRU en mi Tomcat y en la carpeta wwww de apache en wamp, desde alli estoy creando un .php que fue el que les coloque.

    • 23 robertbruno 03/02/2011 a las 1:00 AM

      Hay un detalle en la linea:
      $jru->runReportToPdfFile("C:\\wamp\\www\\report1.jasper","",$parameters,$conn);

      debería ser de la siguiente forma
      $jru->runReportToPdfFile(“C:\\wamp\\www\\report1.jasper”,”",$parameters,$conn->getConnection());

  11. 24 Tadeo 03/02/2011 a las 1:28 AM

    Gracias Robert antes de que me contestaras ya habia hecho lo que me decias, he tomado codigos de los demas post y me quedo de esta forma:
    Php Inicia
    ini_set(“allow_url_fopen”, 1); //función habilitada
    ini_set(“allow_url_include”, 1); //función habilitada

    require_once(‘http://localhost:8080/php-jru/java/Java.inc’);
    require(‘../php-jru/php-jru.php’);

    $jru=new JRU();
    //Obsoleto $jru->loadDirLibrary(‘../php-jru/’);
    $Reporte=’C:\xampp\htdocs\Integra\Reports\TestIceberg.jasper’;
    $SalidaReporte=’C:\xampp\htdocs\Integra\Reports\Iceberg.pdf’;
    $Parametro=new java(‘java.util.HashMap’);
    $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”jdbc:mysql://localhost/integradatabase”,”root”,”");

    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

    Php Termina
    Pero aun asi me sigue dando el mismo error:
    ava stack trace: java.lang.Exception: Invoke failed: [[o:JasperRunManager]]->runReportToPdfFile((o:String)[o:String], (o:String)[o:String], (i:Map)[o:HashMap], (i:Connection)null). Cause: java.lang.NullPointerException VM: 1.5.0_04@http://java.sun.com/
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234)
    at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:122)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044)
    at php.java.bridge.Request.handleRequest(Request.java:417)
    at php.java.bridge.Request.handleRequests(Request.java:500)
    at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
    at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
    Caused by: java.lang.NullPointerException
    … 13 more

    Ya le di vueltas y nada aun, seguire intentando por que esta rraro , ya hice lo que otros usuarios han hecho, se me hace que algo estoy pasando.

    Como comentario adicional te dire que cuento con lo siguiente y en estas rutas:
    1.-C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\lib
    mysql-connector-java-5.1.14-bin.jar

    Ya hice unas pruebas de conexion con un codigo de prueba que tengo y todo esta OK con el Jdbc de MySql.

    2.-Tengo Todas las Librerias Cargadas (Jars,entre ellas:jasperreports-3.7.4.jar, que es la version que uso de ireports) en la Siguiente ruta:
    C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\php-jru\WEB-INF\lib

    3.-Tambien por si se me pasa tengo de igual forma todas las librerias en:
    C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\php-jru

    4.- Uso Xampp, para levantar mi servidor Apache

    5.-Tengo instalado Java en la siguiente ruta: C:\Archivos de programa\Java\jre1.5.0_04

    Me estara Faltando algo? saludos y gracias.

    • 25 robertbruno 03/02/2011 a las 1:42 AM

      conchale al parecer no esta conectando con la base de datos y $Conexion->getConnection() esta retornando un valor nulo.

      Asegurate de que mysql-connector-java-5.1.14-bin.ja este en:
      C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\php-jru\WEB-INF\lib

      y revisa los datos de la conexión, no veo que otra cosa pudiera ser.

  12. 26 Tadeo 03/02/2011 a las 2:04 AM

    Hola gracias de nuevo, te comento que si tengo el Jdbc de Mysql en C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\php-jru\WEB-INF\lib

    Se me pasaba comentarte que de igual forma tengo una copia de php-jru en C:\xampp\htdocs\MisLibrerias\php-jru, ya que si la direcciono para TomCat me dice que no tengo habilitado allow_url_include, por eso lo direcciono en mi codigo en PHP dentro de Apache:

    ini_set(“allow_url_fopen”, 1); //función habilitada
    ini_set(“allow_url_include”, 1); //función habilitada

    require_once(‘http://localhost:8080/php-jru/java/Java.inc’);

    //La Carpeta php-jru esta dentro del servidor Apache

    require(‘../php-jru/php-jru.php’);

    $jru=new JRU();
    //Obsoleto $jru->loadDirLibrary(‘../php-jru/’);
    $Reporte=’C:\xampp\htdocs\Integra\Reports\TestIceberg.jasper’;
    $SalidaReporte=’C:\xampp\htdocs\Integra\Reports\Iceberg.pdf’;
    $Parametro=new java(‘java.util.HashMap’);
    $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”jdbc:mysql://localhost/integradatabase”,”root”,”");

    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

    Saludos y Gracias.

  13. 27 estefany 03/02/2011 a las 2:15 PM

    Buenas chicos corregi la linea que me comento robert y el codigo me quedo asi:

    runReportToPdfFile(“C:\\wamp\\www\\report1.jasper”,”",$parameters,$conn->getConnection());

    ?>

    y me arroja:

    generando pdf
    Fatal error: Uncaught [[o:Exception]:”java.lang.Exception: CreateInstance failed: new org.altic.jasperReports.JdbcConnection. Cause: java.lang.ClassNotFoundException: org.altic.jasperReports.JdbcConnection VM: 1.6.0_22@http://java.sun.com/” at: #-17 java.net.URLClassLoader$1.run(Unknown Source) #-16 java.security.AccessController.doPrivileged(Native Method) #-15 java.net.URLClassLoader.findClass(Unknown Source) #-14 java.lang.ClassLoader.loadClass(Unknown Source) #-13 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) #-12 java.lang.ClassLoader.loadClass(Unknown Source) #-11 java.lang.Class.forName0(Native Method) #-10 java.lang.Class.forName(Unknown Source) #-9 php.java.bridge.Util.classForName(Util.java:1518) #-8 php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) #-7 php.java.bridge.Request.handleRequest(Request.java:458) #-6 php.java.bridge.Request.handleRequests(Request.java:500) #-5 php.java.bridge.JavaBridge.handleRequests(JavaBridge.java:150) #-4 php.java.bridge.JavaBridgeRunner.doPut(JavaBridgeRu in C:\wamp\www\JavaBridge\java\Java.inc on line 195

    igualmente que tadeo yo tengo una copia de php-jru en wamp\www porque me arroja el mismo error de que debo habilitar el allow_url_include si lo direciono al tomcat directamente.

    • 28 Tadeo 03/02/2011 a las 3:24 PM

      Hola Estefany te muestro como tengo mi script en PHP para generar un reporte de prueba:

      Inicia scritp php
      //Esta Linea apunta a TomCat

      require_once(‘http://localhost:8080/php-jru/java/Java.inc’);

      //Esta linea apunta hacia Apache en lo tengo en la //siguiente ruta: C:\xampp\htdocs\php-jru
      require(‘../php-jru/php-jru.php’);

      $jru=new JRU();
      //Esta linea esta ya Obsoleta $jru->loadDirLibrary(‘../php-jru/’);
      $Reporte=’C:\xampp\htdocs\Integra\Reports\TestIceberg.jasper’;
      $SalidaReporte=’C:\xampp\htdocs\Integra\Reports\Iceberg.pdf’;
      $Parametro=new java(‘java.util.HashMap’);
      $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”jdbc:mysql://localhost/integradatabase”,”root”,”");

      $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

      termina Script PHP

      Te comento que uso como vanegador FireFox,
      Uso MySql Jdbc, con una Base de datos que solo tiene usuario root y sin contraseña , con el cual ya hice pruebas de conexion con Tomcat mediante un script que tengo y todo funciona perfectamente, por que me muestra mis tablas y registros.
      Como conexion uso:mysql-connector-java-5.1.14-bin.jar y tambien uso para el reporte :jasperreports-3.7.4.jar
      Utilizo Xampp y TomCat 6.0
      Ese error que te sale es por que el archivo:alticJasper.jar no tiene una copia dentro de:
      C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\php-jru\WEB-INF\lib
      Practicamente hice una copia de todos los archivos jar a
      php-jru\WEB-INF\lib por si las moscas, pero ni asi me esta levantando la libreria.
      Cualquier cosa me comentas para ver si ya te funciono porfas, saludos.

  14. 29 Tadeo 03/02/2011 a las 5:10 PM

    Hola Robert Investigando al parecer un Objeto no se esta creando en tu codigo:
    public class NullPointerException
    extends RuntimeException

    Thrown when an application attempts to use null in a case where an object is required. These include:

    * Calling the instance method of a null object.
    * Accessing or modifying the field of a null object.
    * Taking the length of null as if it were an array.
    * Accessing or modifying the slots of null as if it were an array.
    * Throwing null as if it were a Throwable value.

    Applications should throw instances of this class to indicate other illegal uses of the null object.

    NullPointerException

    public NullPointerException(String s)

    Constructs a NullPointerException with the specified detail message.

    Parameters:
    s – the detail message.

    Fuente:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/NullPointerException.html

    Saludos.

    • 30 robertbruno 03/02/2011 a las 5:21 PM

      org.altic.jasperReports.JdbcConnection es la la clase que se encarga de realizar la conexión a la base de datos del lado de Java, lo que sucede es que no se esta creando la conexión y retorna null en todo caso voy revisar y les aviso

  15. 31 Tadeo 04/02/2011 a las 9:46 PM

    Hola Robert, Por fin de tantos intentos pude hechar andar tu libreria, voy hacer un documento o manual de esta actualizacion que tienes y la subes a tu repositorio SVN como lo vez?

    Te comento que mejor use el JavaBridge de la pagina Oficial y actualize nuevamente ireport y el jasperreport a la version 4.0 pero hice unos trucos que necesito ponerlos en el Tutorial o Manual que quiero hacer.

    Me comentas que te parece la idea ;saludos.

  16. 34 estefany 05/02/2011 a las 12:16 AM

    buenas chicos,
    Tadeo, tu lo montaste con windows? yo no lo he podido montar :( y de verdad estoy encantada con el proyecto pero no he podido, por fa si me puedes pasar los pasos que hiciste, te lo agradeceria muchisimo. Porque en mi trabajo estoy urgida con ese requerimiento…

  17. 37 estefany 08/02/2011 a las 4:23 PM

    Gracias por el tutorial, ya me funciono perfecto de verdad que no hay mucha info al respecto,pero el tutorial esta bien explicito.

  18. 38 Al3jandro 24/03/2011 a las 2:21 PM

    Mi pana, soy el pana que organizo el evento de KumbiaPHP en Maracay……..

    Estoy tratando de instalar la libreria y me da el siguiente error:

    P.D. Mi Sistema Operativo es Ubuntu 10.10

    java stack trace: java.lang.Exception: Invoke failed: [[o:JasperRunManager]]->runReportToPdfFile((o:String)[o:String], (o:String)[o:String], (i:Map)[o:HashMap], (i:Connection)null). Cause: net.sf.jasperreports.engine.JRException: Error loading object from file : /var/www/mribas/default/app/views/personal/coordinadores/Coordinadores.jrxml VM: 1.6.0_20@http://java.sun.com/
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
    at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:122)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044)
    at php.java.bridge.Request.handleRequest(Request.java:417)
    at php.java.bridge.Request.handleRequests(Request.java:500)
    at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
    at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
    Caused by: net.sf.jasperreports.engine.JRException: Error loading object from file : /var/www/mribas/default/app/views/personal/coordinadores/Coordinadores.jrxml
    … 12 more
    Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:800)
    at java.io.ObjectInputStream.(ObjectInputStream.java:297)
    at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:87)
    … 11 more

    • 39 robertbruno 25/03/2011 a las 2:17 AM

      Epale alejandro un saludo, disculpa no te respondí antes, es que ando full.

      fijate que es una Exception netamente de Java el problema esta al cagar el archivo jrxml, revisa que la versión de ireport que estés usando sea compatible con las librerías que se incluyen en PHP-JRU, de lo contrario tendrás que actualizarlas, copiando manualmente librerías de jasper en el directorio WEB-INFO/lib del PHP-JRU.war, las que vienen con PHP-JRU son 3.0, cuado tenga mas tiempo las actulizo.

      Recuerda además que PHP-JRU es solo para ahorrarse algo de código a la hora de generara reportes con jasperreport, es siempre probable que se generen exception del java.

      • 40 Al3jandro 26/03/2011 a las 5:28 AM

        Listo Bruno ya logre conectarla, pero tuve que instalar JavaBridge y agregarle lo .jar necesarios tales como: JasperReports 4.0.1, los JDBC y el AlticJasper….

        Si los quieres te los paso para que los cuelgues ya actualizado

  19. 41 robertbruno 26/03/2011 a las 1:51 PM

    buenisimo alejandro, lo único es que so va aumentar considerablemente el peso , pero bueno :-)

  20. 42 Tadeo 13/12/2011 a las 3:41 AM

    Para los que quieran instalarlo con Windows, les dejo el Manual Actualizado para la instalacion de la libreria de Roberto (PHP-JRU) + Javabridge+PHP, aca esta la liga:
    http://www.extjses.com/ejemplos-proyectos/tutorial-javabridge-php-jru-ireports-version-2011-t2265.html


Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevos mensajes por correo.

Únete a otros 11 seguidores


Seguir

Get every new post delivered to your Inbox.