Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2007, 16h45   #1
Invité régulier
 
Inscription : avril 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 32
Points : 8
Points : 8
Par défaut [2.2.1][Java/Struts] (Exception) OutOfMemoryError: PermGen space

Bonjour, j'ai un petit probleme (gros en fait) avec BIRT. je l'ai intégré dans une appli web struts, et ca fonctionne tres bien. sauf que BIRT bouffe de la mémoire comme un ogre, et ne la libère pas. du coup le serveur fini par criser. hors de question d'augmenter l espace memoire de la JVM puisque cela ne résout pas le probleme mais le repousse. hors de question également de rebooter le serveur d'appli puisque l'appli est sensée etre utilisée par de nombreux utilisateurs...
j'ai eu beau chercher sur les forums un peu partout, mais tjs pas de solution a ce OutOfMemoryError...
si qqn avait une petite piste...
Kendael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 16h48   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

Si tu as une version trop ancienne de BIRT et des tableaux imbriqué, ce problème est connu change de version.

Dans le cas contraire, donne plus de RAM disponnible à Tomcat au démarrage (ou autre serveur) puisque le but est quand même de générer un PDF/XLS/HTML ou autre et c'est pas franchement toujours un fichier léger.

Sinon, évite d'intégrer plein d'images a tes rapports ou alors fait en sorte de les limiter en données. (Répartition des données sur plusieurs rapports par exemple).

Enfin, ca peut être un simple problème de conception ou même de codage de ton reportDesign qui ferait une boucle infinie ou une action bien trop lourde pour BIRT que tu pourrais aussi bien faire au préalable ou extérioriser.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 16h53   #3
Invité régulier
 
Inscription : avril 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 32
Points : 8
Points : 8
Tout d'abord merci pour ta réponse.
Parcontre je tiens à préciser que mon rapport est le plus simpliste qui soit et que ma version de BIRT est la derniere stable v2.2.1. le soucis c'est que BIRT ne libère pas la mémoire qu'il utilise, du coup je me retrouve avec 10mo d'occupés en plus a chaque génération de rapport. je précise que cela tourne sur un serveur tomcat5
Kendael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2007, 17h18   #4
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Y'a t'il possibilité que tu mettes le rapport en pièce jointe please ?
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 15h14   #5
Invité régulier
 
Inscription : avril 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 32
Points : 8
Points : 8
Alors j'ai réussi à réduire l'appéti de BIRT (le probleme était que je démarrais le moteur BIRT à chaque appel de l action au lieu de l'initialiser a l aide d un plug-in struts). Toutefois le probème persiste, et BIRT continue de grapiller des octets sans les libérer... je joins mon reportDesign, voici le code de génération dans mon Action struts :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) throws Exception {
 
    String objet = request.getParameter("objet");
 
    String reportName = "";
 
    if (objet.equals("commune")) {
      CommuneForm commune = (CommuneForm) form;
 
      WriteXml.writeCommune(commune);
 
      reportName = "commune.rptdesign";
    } 
 
    // get report name and launch the engine
    // response.setContentType("text/html");
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "inline; filename=test.pdf");
    // String reportName = request.getParameter("ReportName");
//    String reportName = "test.rptdesign";
 
    ServletContext sc = request.getSession().getServletContext();
 
    birtReportEngine = BirtEngine.getBirtEngine(sc);
 
    // setup image directory
    HTMLRenderContext renderContext = new HTMLRenderContext();
    renderContext.setBaseImageURL(request.getContextPath() + "/images");
    renderContext.setImageDirectory(sc.getRealPath("/images"));
 
    logger.log(Level.FINE, "image directory "
      + sc.getRealPath("/WEB-INF/images"));
    System.out.println("stdout image directory "
      + sc.getRealPath("/WEB-INF/images"));
 
    HashMap contextMap = new HashMap();
    contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT,
      renderContext);
 
    IReportRunnable design;
    try {
      // Open report design
      design =
        birtReportEngine.openReportDesign(sc.getRealPath("/WEB-INF/reports")
          + "/" + reportName);
 
 
      // create task to run and render report
      IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask(design);
      task.setAppContext(contextMap);
 
      // set output options
      HTMLRenderOption options = new HTMLRenderOption();
      // options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
      options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
      options.setOutputStream(response.getOutputStream());
      task.setRenderOption(options);
 
      // run report
      task.run();
      task.close();
      birtReportEngine = null;
      renderContext = null;
      contextMap = null;
      design = null;
      task = null;
//      WriteXml.deleteFile();
 
    } catch (Exception e) {
 
      e.printStackTrace();
      throw new ServletException(e);
    } 
 
    return null;
  }
Au passage, si tu savais comment modifier des parametre dans mon rapport dans le code de mon action struts, par exemple le nom du fichier de données, je suis preneur.

ps:désolé pour le silence radio pendant quelques jours
Fichiers attachés
Type de fichier : zip commune.zip (2,5 Ko, 5 affichages)
Kendael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 15h16   #6
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

Qu'appelles tu le nom du fichier de données ?
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 15h22   #7
Invité régulier
 
Inscription : avril 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 32
Points : 8
Points : 8
eh bien j'utilise un fichier XML comme dataSource, c'est donc le nom de ce fichier xml que je voudrais pouvoir éditer dans mon reportDesign.
Kendael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 15h52   #8
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bon, j'ai repris l'exemple de ce sujet : [2.1.2][Java] Changement DataSource, quelle approche?

C'est à mettre juste après :
Code Java :
IReportRunnable design = engine.openReportDesign("exemple.rptDesign");

Code Java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try {
	Collection<DataSourceHandle> rdHandle = design.getDesignHandle().getModuleHandle().getDataSources();
 
	for (DataSourceHandle datasource : dsh) {
		try {
			datasource.setCustomXml("monFichier.xml");
		}
		catch (SemanticException e) {
			e.printStackTrace();
		}
	}
}
catch (DesignFileException e1) {
	e1.printStackTrace();
}

Attention, c'est une adaptation du sujet précédent et le code est non testé.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 17h08   #9
Invité régulier
 
Inscription : avril 2005
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 32
Points : 8
Points : 8
Alors voici comment j'ai procédé en me basant sur ce que j'ai lu sur l'autre topic dont tu parlais (merci pour le coup de pouce), j'ai juste rajouté ces 2 lignes apres l'ouverture de mon rapport :

Code :
1
2
3
4
5
design.getDesignInstance().getDataSource("NOM_DATA_SOURCE").setPrivateDriverProperty(
        "FILELIST", System.getProperty("user.home") + "\\nomFichier.xml");
 
      design.getDesignInstance().getDataSet("NOM_DATA_SET").setPrivateDriverProperty(
        "XML_FILE", System.getProperty("user.home") + "\\nomFichier.xml");
En revanche j'ai toujours des problèmes avec l exception "OutOfMemoryError: permGen" ... et c'est assez gênant, peut-etre qu'il serait possible de lancer le moteur BIRT sur une autre JVM, car il est hors de question d'avoir a redémarrer l'application... je ne sais pas si tu as une petite idée sur la question (j'ai mis le fichier en piece jointe quelques messages plus haut).
Kendael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 16h13   #10
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Par contre t'es vachement fort d'avoir le BIRT 2.2.1 parce qu'il a été compilé aujourd'hui et n'est pas encore disponible au téléchargement
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h25.


 
 
 
 
Partenaires

Hébergement Web