Error con Jasper

Buenas tardes, les comento mi problema, instale Toba 3.3 y quería migrar algunas aplicaciones que desarrollamos en Toba 2.5 a la nueva versión. Hasta el momento todo bien hasta que nos topamos con el Jasper. Resulta que tengo un formulario el cual manda a imprimir un PDF que realizo con Jasper. Cuando presiono el botón Imprimir y la página se queda congelada y no hay forma de recuperarla.

En los logs del toba no encuentro nada, pero en el log de apache aparece lo siguiente:

PHP Notice: Trying to access array offset on value of type int in …/jasper/JavaBridge/java/Java.inc on line 962

Les comento estoy probando en una instalación propia, máquina de desarrollo y tengo corriendo el servicio de JavaBridge.

Tienen alguna idea de lo que puede estar ocurriendo?

Muchas gracias!!!

Hola Javier,

por lo que pude mirar de la linea que marca el log, aparentemente esta intentando definir la variable de entorno JAVA_SERVLET y se ecuentra con que es un nro, en versiones anteriores de PHP probablemente esto no fuera mayor inconveniente pero en las ultimas no solo genera un notice, sino que en algun caso ese notice se convierte en un error o una excepcion.

Fuera de eso, inicie el servlet en mi maquina local, meti el javabridge por composer y lo que es la exportacion del ejemplo de Toba Referencia se hace casi correctamente… el casi es justamente por ese notice que sale y rompe el formato del archivo, mas alla de eso la pagina no se muere.

Algo puntual que puedas tener en dicho reporte?, no es que hubo una multiplicidad de cambios en las exportaciones… pero sin lugar a dudas desde la version 2.5 a la 3.3 se modificaron cosas, quizas eso este influyendo.
Si tenes a mano toba-referencia, proba con los ejemplos de exportacion jasper para descartar al menos un problema de comunicacion via socket.

Respecto de la variable de entorno, no termino de entender a que apunta… sin embargo podrias definirla con el valor “User” que al menos no generaria el notice.

Saludos

Richard, realice la prueba en el Toba_Referencia y me pasa exactamente lo mismo, el error en el apache es el mismo y se clava el sitio mal, es más, se clava también la página del toba_editor, por lo que tengo cerrar FireFox y volver a abrir todo. El reporte no es nada del otro mundo, en la Universidad se había planteado de renovar un sistema que se había desarrollado con VB6.0 para emitir comprobantes para recursos propios. Se lo desarrolló en toba y por el momento funciona perfecto, pero bueno, hay que actualizarse… o no.¿?

Lo que me parece raro es que tenemos Guaraní 3.18 funcionando con la misma versión de PHP que tengo en mi pc de desarrollo y en Guaraní por el momento funciona todo bien. Esto se podría traducir a que tengo un inconveniente con el reporte en sí… pero como te digo no es nada del otro mundo.

Consulta, yo bajé toba 3.3 vía composer pero no encontraba el javabridge, por lo que me fui a uno de nuestros servers (Testing Guaraní) y lo copié desde ahí. Eso pueda traer problemas?

Cómo puedo instalar javabridge por composer?

Lo que no probé todavía es lo de la variable de entorno…

Saludos!

Hola Javier,

evidentemente tenes algun problema para que el webserver logre conectarse con jasper (ya que te falla el ejemplo de referencia tambien), lo que me resulta raro que es que Apache quede completamente colgado y no puedas acceder a ninguna otra pagina… eso no es muy comun, consulta… en que estas laburando y con que versiones tanto de php como de apache?.

Lo que me parece raro es que tenemos Guaraní 3.18 funcionando con la misma versión de PHP que tengo en mi pc de desarrollo y en Guaraní por el momento funciona todo bien. Esto se podría traducir a que tengo un inconveniente con el reporte en sí... pero como te digo no es nada del otro mundo.

Mismo sistema operativo, misma configuracion de Apache?, hay sutilezas que muchas veces complican mas de lo debido, un firewall, una distro con SELinux incorporado, una instalacion en Windows, etc… que Guarani este funcionando significa que probablemente el inconveniente este relacionado a algun tema de configuracion y/o a diferencias a un nivel mas bajo que el de Toba.

Consulta, yo bajé toba 3.3 vía composer pero no encontraba el javabridge, por lo que me fui a uno de nuestros servers (Testing Guaraní) y lo copié desde ahí. Eso pueda traer problemas?

Cómo puedo instalar javabridge por composer?

Todo depende de donde haya quedado copiado… al realizar la instalacion por composer, JavaBridge queda dentro de una carpeta especifica en vendor, si no lo copiaste dentro de dicha carpeta… quizas sea el origen del problema… siendo una maquina de desarrollo tener display_errors=On quizas podria haber expuesto un mensaje del estilo ’ failed to open file …', lo que nos marcaria un problema de ruta.

Para instalar el JavaBridge por composer, simplemente podes tomar el paquete que figura como sugerido en el composer.json de Toba, agregarlo a tu propio composer.json con una version libre y luego hacer el update / install segun corresponda.

Saludos

Richard, perdón la demora, te paso los datos queme pediste

Linux Mint 20.1
javier@jz-desarrollo:~$ cat /proc/version
Linux version 5.4.0-58-generic (buildd@lcy01-amd64-004) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #64-Ubuntu SMP Wed Dec 9 08:16:25 UTC 2020
javier@jz-desarrollo:~$ php -version
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

javier@jz-desarrollo:~$ apache2ctl -v
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-08-12T19:46:17

Borré la carpeta jasper que había traído del otro servidor, cuando hago composer install en el path donde tengo instlado Toba3.3 me indica lo siguiente

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update

En una instalación normal de Toba, ¿dónde debería estar la carpeta de jasper?

Tengo el display_error=On en php.ini de apache y me sigue mostrando lo mismo … :frowning:

Hola Javier,

bien, se que algunas personas han tenido inconvenientes levantando el servlet en Debian pero el error sujen de ja JVM, no como en este caso que parece venir por el lado de PHP.
Si bien la version de PHP es un poco mayor a la que soportamos oficialmente, yo aca tengo 7.4.6 con openjdk-11 y funciona sin problemas… por lo que salvo que sea alguna particularidad de las versiones de Mint o de OpenSuse no deberian existir inconvenientes.

Probemos con una instalacion hecha por composer, por si la carpeta copiada tenia algo que no esperabamos.

Borré la carpeta jasper que había traído del otro servidor, cuando hago composer install en el path donde tengo instlado Toba3.3 me indica lo siguiente Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Nothing to install or update

En una instalación normal de Toba, ¿dónde debería estar la carpeta de jasper?


En una instalacion normal en la que incluiste el paquete en composer.json, la carpeta deberia ser “vendor/siu-toba/jasper” y dentro te queda el paquete armado tal como debe.

Saludos

Richard, perdón la insistencia, pero no me aparece la carpeta jasper por ningún lado. Lo que hice fué lo siguiente, borré todo y volví a instalar toba con composer desde cero. En el composer.json tengo lo siguiente:

{
“name”: “siu-toba/recursos”,
“description”: “”,
“repositories”: [
{
“type”: “composer”,
“url”: “https://satis.siu.edu.ar”,
“exclude”: [“siu-toba/framework”, “siu-toba/rest”]
}
],
“require”: {
“siu-toba/framework”: “~3.3”
},
“config”: {
“bin-dir”: “./bin”
},
“suggest”: {
“simplesamlphp/simplesamlphp”: “Permite conectarse a un IDP centralizado (see onelogin)”,
“siu-toba/jasper”: “Permite imprimir reportes via Jasper desde SIU-Toba”,
“siu/arai-cli”: “Librería cliente de los componentes ARAI”,
“siu/arai-reportes”: “Permite imprimir reportes via un servidor Jasper desde SIU-Toba”,
“siu/manejador-salida-bootstrap”: “Permite generar un marcado HTML responsive”
},
“scripts”: {
“post-install-cmd”: [
“composer run-script post-install-cmd -d ./vendor/siu-toba/framework/”
],
“post-update-cmd”: [
“composer run-script post-install-cmd -d ./vendor/siu-toba/framework/”
]
},
“minimum-stability”: “dev”,
“prefer-stable”: true
}
Ejecuté composer install y me indica que no hay nada para actualizar, en qué le estoy pifiando?

En el log de apache encontré lo siguente
[Tue Mar 02 18:02:07.715042 2021] [php7:warn] [pid 10719] [client 127.0.0.1:42118] PHP Warning: mkdir(): Permission denied in /u/toba/vendor/siu-toba/framework/php/nucleo/lib/toba_proyecto.php on line 245, referer: http://localhost/toba_referencia/3.3/aplicacion.php?tm=1&tcm=previsualizacion&ai=toba_referencia||30000055L
Le di los permisos 775 a www-data en vendor/siu-toba/framework/www vendor/siu-toba/framework/temp vendor/siu-toba/framework/instalacion
Se me pasó alguna otra carpeta?

Muchas gracias!!

Hola Javier,

fijate que en la seccion “suggest” del composer.json se encuentra el paquete que deberias agregar en el composer de tu proyecto


"siu-toba/jasper": "Permite imprimir reportes via Jasper desde SIU-Toba"

Agregando esa linea en tu seccion “require”, con una version no definida ‘*’ te deberia bajar el paquete y colocarlo en la carpeta correcta.
Si luego de ello y ejecutando el servlet de esa carpeta siguen teniendo problemas, definitivamente hay que ver como solucionarlo en PHP porque no hay mucho mas que hacer.

Saludos

Richard, gracias por la respuesta, pero te consulto nuevamente por esto último

En el log de apache encontré lo siguente
[Tue Mar 02 18:02:07.715042 2021] [php7:warn] [pid 10719] [client 127.0.0.1:42118] PHP Warning: mkdir(): Permission denied in /u/toba/vendor/siu-toba/framework/php/nucleo/lib/toba_proyecto.php on line 245, referer: http://localhost/toba_referencia/3.3/aplicacion.php?tm=1&tcm=previsualizacion&ai=toba_referencia||30000055L
Le di los permisos 775 a www-data en vendor/siu-toba/framework/www vendor/siu-toba/framework/temp vendor/siu-toba/framework/instalacion
Se me pasó alguna otra carpeta?

Otra cosa muy rara, tengo una instalación de Guarani 3.18.1 en la misma máquina y cuando ejecuto los reportes funcionan de 10, ahora cuando ejecuto los reportes desde el toba 3.3 instalado por composer, ahí es cuando falla y tira:

[Fri Mar 05 11:09:11.825396 2021] [php7:notice] [pid 3925] [client 127.0.0.1:50492] PHP Notice: Trying to access array offset on value of type null in /home/javier/3/vendor/siu-toba/framework/php/nucleo/componentes/interface/toba_ei_cuadro_salida_html.php on line 678, referer: http://localhost/pcf/1.0/aplicacion.php?ah=st60423b80a46bc0.90280661&ai=pcf||3496&tcm=previsualizacion

Estoy más perdido con esto…

Hola Javier,

Por lo que veo en codigo, esta intentando crear el directorio temp del proyecto… basicamente mi_proyecto/temp… que esta por fuera del www ya que no es navegable.
Probablemente este jodiendo esto ya que la salida intenta crear el archivo alli previo a enviarlo al cliente.

[b]Otra cosa muy rara[/b], tengo una instalación de Guarani 3.18.1 en la misma máquina y cuando ejecuto los reportes funcionan de 10, ahora cuando ejecuto los reportes desde el toba 3.3 instalado por composer, ahí es cuando falla y tira:

[Fri Mar 05 11:09:11.825396 2021] [php7:notice] [pid 3925] [client 127.0.0.1:50492] PHP Notice: Trying to access array offset on value of type null in /home/javier/3/vendor/siu-toba/framework/php/nucleo/componentes/interface/toba_ei_cuadro_salida_html.php on line 678, referer: http://localhost/pcf/1.0/aplicacion.php?ah=st60423b80a46bc0.90280661&ai=pcf||3496&tcm=previsualizacion

Guarani 3.18 tiene una instalacion de Toba 3.3 por composer asi que en ppio deberia ser lo mismo, el proyecto este que estas haciendo esta por fuera de Toba o dentro de la carpeta proyectos?
Voy a mirar mas de cerca ese notice ya que la linea que reporta tiene un condicional por !== null, asi que esta saltando desde otro lado.
Gracias por el aviso.

Saludoss

Richard, buenos días, paso a comentarte, generé y el otorgué permisos a la carpeta temp del proyecto y empezó a funcionar… Ahora por una cuestión práctica debemos llevar el pequeño desarrollo realizado a un servidor diferente, por lo que en ese nuevo servidor instalamos desde cero Toba 3.3 y todavía no migramos ningún otro proyecto.
Al principio no teníamos generada ninguna carpeta Temp de ninguno de los proyectos iniciales, por lo que al realizar

toba instalacion cambiar_permisos

tiraba el error que no existían las carpetas Temp de los proyectos. Las creamos y volvimos a ejecutar el comando toba, esta vez todo correcto. Pero al momento de generar el Reporte en toba_referencia… surgió el mismo error…

[Mon Mar 15 09:31:40.117202 2021] [php7:notice] [pid 12990] [client 127.0.0.1:42896] PHP Notice: Trying to access array offset on value of type int in /u/toba/vendor/siu-toba/jasper/JavaBridge/java/Java.inc on line 962, referer: http://localhost/toba_referencia/3.3/aplicacion.php?tm=1&tcm=previsualizacion&ai=toba_referencia||30000055

Perdón que insista en el error, pero tenemos que tener el Jasper funcionando para sacar los reportes que nos vayan solicitando desde la Secretaría que nos solicita el desarrollo.

Muchas gracias!

Hola Javier,

Barbaro… me alegro que finalmente hayas sido eso y se haya solucionado, ahora la pregunta de rigor… para que instalas Toba si no tenes ningun proyecto ahi? (-.-)

Al principio no teníamos generada ninguna carpeta Temp de ninguno de los proyectos iniciales, por lo que al realizar ``` toba instalacion cambiar_permisos ``` tiraba el error que no existían las carpetas Temp de los proyectos. Las creamos y volvimos a ejecutar el comando toba, esta vez todo correcto. Pero al momento de generar el Reporte en toba_referencia.... surgió el mismo error...

[Mon Mar 15 09:31:40.117202 2021] [php7:notice] [pid 12990] [client 127.0.0.1:42896] PHP Notice: Trying to access array offset on value of type int in /u/toba/vendor/siu-toba/jasper/JavaBridge/java/Java.inc on line 962, referer: http://localhost/toba_referencia/3.3/aplicacion.php?tm=1&tcm=previsualizacion&ai=toba_referencia||30000055

Perdón que insista en el error, pero tenemos que tener el Jasper funcionando para sacar los reportes que nos vayan solicitando desde la Secretaría que nos solicita el desarrollo.

Hiciste todos los pasos que llevaste adelante en el hilo o solamente el cambio sobre la carpeta ‘temp’?, fijate que aca fuiste salvando varias cuestiones que finalmente desembocaron en el problema de permisos… pero no fue ese el inconveniente inicial… simplemente era uno mas sobre otros previos.

Recorda que el paquete Jasper va en una carpeta especifica y que las copias del directorio no funcan bien.

Saludos

Richard, nuevamente perdón por la tardanza en la respuesta, no comprendo ésta pregunta

Barbaro... me alegro que finalmente hayas sido eso y se haya solucionado, ahora la pregunta de rigor.... para que instalas Toba si no tenes ningun proyecto ahi? (-.-)

Instalé Toba para poder migrar el proyecto generado a este nuevo servidor. (Es un proyecto interno de la Universidad que nos solicitan en un área operativa) Si no instalo toba no puedo poner el proyecto o me perdí de algo???

En cuanto a todos los pasos a seguir, no variaron mucho, lo único diferente de este server nuevo al anterior (en donde estoy desarrollando) es que tengo también instalado Guarani en una carpeta aparte. Cuando saco los informes de Guaraní funcionaba de manera perfecta. Después de un tiempo descubrí el tema del TEMP en el proyecto y de ahí me vuelve a dar el maldito error de Java!! jeje

Perdón por lo pesado del tema, pero no lo llego a entender y eso me molesta (esto ya es personal!!!)

Muchas gracias por las respuestas

Hola Javier,

Me referia a si instalaste Toba en forma stand-alone o como parte de un proyecto, si es como parte del proyecto que luego migras no hay problema.

En cuanto a todos los pasos a seguir, no variaron mucho, lo único diferente de este server nuevo al anterior (en donde estoy desarrollando) es que tengo también instalado Guarani en una carpeta aparte. Cuando saco los informes de Guaraní funcionaba de manera perfecta. Después de un tiempo descubrí el tema del TEMP en el proyecto y de ahí me vuelve a dar el [b]maldito[/b] error de Java!! jeje

Perdón por lo pesado del tema, pero no lo llego a entender y eso me molesta (esto ya es personal!!!)

Jajajaja… con Jasper todo se vuelve personal, te preguntaba por los pasos justamente por la modificacion que tuviste que meter en composer.json, que Guarani ande por ahi no afecta en nada.
Para mi es un tema de instalacion del paquete, sumado al temita de la carpeta temp que termina de cerrar el circulo.

Saludos