Pregunta

Tengo un par de JasperReports hechas y funcionando muy bien en una máquina Windows. El problema comenzó cuando se establecieron los informes para ejecutarse en un ordenador central con el sistema operativo zOS.

El problema es: cuando Jasper crea el informe parece a leer los metadatos de las tablas de la base de datos y en base a que esperar los datos que vienen
. Ejemplo: si tengo una columna de tipo varchar (20), a continuación, Jasper estará esperando por 20 caracteres solamente, incluso si el campo de informe se define como de cadena.

Esto no sucede en el entorno Windows, pero en la unidad central de la codificación de caracteres es EBCDIC, por lo que la columna puede tener 19 caracteres en el mainframe, pero cuando se codifica su devuelto al informe como 23 o 24 caracteres.

Nota: este problema sólo se produce en caracteres no ingleses.

Actualizar
Un ConversionBufferFull se inicia cuando Jasper está creando el informe, que no tengo la traza completa ya que no puedo acceder al registro de la unidad central. El problema se produce con una sola columna llamada COUNTRY_DESC cuando el valor es de alrededor de 17-20 caracteres, se produce la excepción.

Como ya he mencionado el juego de caracteres en el mainframe es EBCDIC, pero cuando su Leer a través de la JDBC su convierte a Unicode. por ejemplo, en EBCDIC la palabra será de 17 caracteres, pero cuando se convierte se convertirá en 22. Por alguna extraña razón Jasper espera 20 para este campo solamente.

¿Fue útil?

Solución

JasperReports en sí no gestiona la conversión de datos, ni la longitud del campo. Esto parece un problema con el controlador JDBC.

Sherman Jaspersoft

Otros consejos

sun.io.ConversionBufferFullException es lanzada por caracteres de codificación sun.io convertidores y la burbuja de mayo a través de clases java.io en versiones anteriores de Java. Esta API ya no se utiliza durante algún tiempo y ya no está en uso desde Java 6 -. java.nio.charset se utiliza en lugar

Es un error de conversión de caracteres, ya sea en JasperReports, el controlador de JDBC o cosas usadas por los dos. No creo que tenga nada que ver con la lectura de los meta-datos del conjunto de resultados JDBC per se, aunque podría ser las cadenas en el meta-datos que se convierten de forma incorrecta.

Es difícil poner la culpa o pensar en una solución temporal sin el seguimiento de la pila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top