Est-ce que JasperReports lire les métadonnées des colonnes avant de générer des rapports?

StackOverflow https://stackoverflow.com/questions/1945875

  •  20-09-2019
  •  | 
  •  

Question

J'ai quelques JasperReports faites et en cours d'exécution très bien sur une machine Windows. Le problème a commencé lorsque les rapports ont été mis à fonctionner sur un ordinateur central avec le système d'exploitation zOS.

Le problème est: quand Jasper crée le rapport, il semble lire les métadonnées des tables de la base de données et sur la base des données qu'elle attend à venir
. Exemple: si j'ai une colonne de type varchar (20), puis Jasper attendra 20 caractères seulement, même si le champ du rapport est défini comme String.

Cela ne se produit pas dans un environnement Windows, mais sur l'ordinateur central du codage de caractères est EBCDIC, et ainsi de la colonne peut avoir 19 caractères sur l'ordinateur central, mais quand codé son retour au rapport que 23 ou 24 caractères.

Remarque: ce problème se produit uniquement en caractères non-anglais.

UPDATE Un ConversionBufferFull est jeté quand Jasper crée le rapport, je n'ai pas la trace complète depuis que je ne peux pas accéder au journal de l'ordinateur central. Le problème se produit avec une seule colonne appelée COUNTRY_DESC lorsque la valeur est d'environ 17-20 caractères, l'exception se produit.

Comme je l'ai mentionné le jeu de caractères sur l'ordinateur central est EBCDIC, mais lorsque sa lecture par le JDBC son converti en Unicode. par exemple en EBCDIC le mot sera de 17 caractères, mais quand converti devenu 22. Pour une raison étrange Jasper attend 20 pour ce domaine uniquement.

Était-ce utile?

La solution

JasperReports lui-même ne gère pas la conversion des données, ni la longueur du champ. Cela ressemble à un problème avec le pilote JDBC.

Sherman Jaspersoft

Autres conseils

sun.io.ConversionBufferFullException est jeté par caractère sun.io convertisseurs de codage et bulle peut, à travers des cours de java.io dans les anciennes versions de Java. Cette API a été dépréciée depuis un certain temps et ne sont plus en usage depuis Java 6 -. java.nio.charset est utilisé à la place

Il est un bug de conversion de caractères dans les deux JasperReports, votre pilote JDBC ou les choses utilisées par ces deux. Je ne pense pas que cela n'a rien à voir avec la lecture de méta-données de la JDBC ResultSet en tant que tel, bien qu'il puisse être les chaînes dans la méta-données qui est mal converti.

Il est difficile de placer le blâme ou penser à un travail autour sans la trace de la pile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top