IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

BIRT Discussion :

[2.3.0] Execution simultanée du BirtEngine


Sujet :

BIRT

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut [2.3.0] Execution simultanée du BirtEngine
    Bonjour,

    j'ai un problème lorsque j'essaye de générer plusieurs rapports pdf en parallèle.
    Le problème ne survient que dans ce cas là.

    J'ai le problème sur un environnement IBM AIX, en utilisant l'API Birt version 2.3.0.

    Quelqu'un a t'il une idée ?

    PS : j'ai vérifié la librairie contenant la classe Tidy, elle est bien présente dans mon Birt.

    Voici ce que mes logs me renvoient :
    Dec 18, 2008 9:43:57 AM org.eclipse.birt.report.engine.api.impl.RunAndRenderTask doRun
    SEVERE: Error happened while running the report.
    java.lang.NoClassDefFoundError: org.w3c.tidy.Tidy
    at org.eclipse.birt.report.engine.parser.HTMLTextParser.<init>(HTMLTextParser.java:54)
    at org.eclipse.biaxwart.report.engine.parser.TextParser.parse(TextParser.java:110)
    at org.eclipse.birt.report.engine.layout.pdf.util.HTML2Content.processForeignData(HTML2Content.java:133)
    at org.eclipse.birt.report.engine.layout.pdf.util.HTML2Content.html2Content(HTML2Content.java:113)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.PDFLayoutEmitter.startForeign(PDFLayoutEmitter.java:571)
    at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil.startContent(ContentEmitterUtil.java:75)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.Layout.visitContent(Layout.java:365)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.Layout.visitContent(Layout.java:373)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.RegionLayout.layout(RegionLayout.java:78)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.PageLayout.layoutFooter(PageLayout.java:161)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.PageLayout.initialize(PageLayout.java:80)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.PDFLayoutEmitter._startContainer(PDFLayoutEmitter.java:297)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.PDFLayoutEmitter.startContainer(PDFLayoutEmitter.java:262)
    at org.eclipse.birt.report.engine.emitter.ContentEmitterAdapter.startPage(ContentEmitterAdapter.java:54)
    at org.eclipse.birt.report.engine.layout.pdf.emitter.PDFLayoutEmitter.startPage(PDFLayoutEmitter.java:407)
    at org.eclipse.birt.report.engine.emitter.CompositeContentEmitter.startPage(CompositeContentEmitter.java:284)
    at org.eclipse.birt.report.engine.emitter.ContentEmitterUtil.startContent(ContentEmitterUtil.java:45)
    at org.eclipse.birt.report.engine.layout.html.buffer.PageNode.start(PageNode.java:48)
    at org.eclipse.birt.report.engine.layout.html.buffer.HTMLPageBuffer.startContent(HTMLPageBuffer.java:105)
    at org.eclipse.birt.report.engine.layout.html.buffer.TableBreakBuffer.startContent(TableBreakBuffer.java:159)
    at org.eclipse.birt.report.engine.layout.html.HTMLLeafItemLM.start(HTMLLeafItemLM.java:50)
    at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:132)
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:68)
    at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:90)
    at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:101)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:151)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:72)
    at com.birt.BirtReport.runRenderer(BirtReport.java:178)
    at com.birt.Main.main(Main.java:74)
    ERROR main com.birt.BirtReport - ### PDF Generation failed ###
    Error happened while running the report.
    ERROR main com.birt.Main - Unhandled exception : Error happened while running the report.

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Le problème n'est donc pas présent quand tu ne déclenches qu'une seule génération à la fois ?
    Comment parallélises-tu ta génération ? En threadant ? De quelle manière ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord, merci de répondre à ma question.

    J'ai fait un petit programme Java (Jar exécutable) qui prend en argument le fichier de design Birt (réalisé précédemment) et le format de sorti que je désire (dans mon cas, du pdf). Ce programme utilise alors les fonctionnalités de l'API Birt. Je n'ai pas fait de Thread dans mon programme, celui ne génère qu'un rapport à la fois.

    Par contre, j'ai dupliqué mon Jar dans plusieurs dossiers. Et j'exécute les Jar en simultané depuis des répertoires différents. L'objectif est que plusieurs personnes se connectant sur la machine depuis des répertoires différents puissent généré en même temps des rapports (pdf).

    Tout marche bien sauf lorsque deux personnes essayent de générer un rapport en même temps. Tous les Jar utilisent la même installation de Birt.
    C'est alors que je retrouve dans mes logs la trace que j'ai mis dans le message précédent.

    Je tiens à signaler que j'ai fait des tests sous différentes machines (1 Windows et 2 AIX différents), je n'ai le problème que sur 1 seul AIX. Sur les autres machines, je n'ai pas de problème alors que j'utilise la même installation de Birt et le même Jar !!

    Je me retrouve donc dans une impasse car je suis à cours d'idée. Et comme par hasard, il faut que çà marche sur l'AIX où j'ai des problèmes.


    Des idées ??

    Merci d'avance, Martin

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Est-ce que tes deux AIX ont la même configuration ? La version de JAVA est-elle la même ?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je me suis renseigné, il y a sur les 2 AIX la même JVM :

    java version "1.5.0"
    Java(TM) 2 Runtime Environment, Standard Edition (build pap32devifx-20071025a (SR6b))
    IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc-32 j9vmap3223-20071007 (JIT enabled)


    C'était une bonne idée, mais çà doit pas venir de çà !! désolé

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    J'suis pas une spécialiste en AIX mais il faudrait trouver ce qui varie dans la configuration, version de l'OS ou autre.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    J'ai déjà vérifier les droits d'accès aux fichiers, il n'y pas de différence.
    Je vais regarder à nouveau.

    Sinon, j'ai trouvé 2 cas similaires au mien :
    http://dev.eclipse.org/newslists/new.../msg13029.html
    https://bugs.eclipse.org/bugs/show_bug.cgi?id=239481

    Je pense que c'est une piste.
    Sais tu si c'est possible de modifier le class-path de Birt (pour y mettre la librairie Tidy.jar) ?

    Sinon j'ai ajouté Tidy dans le class-path de mon jar, je vais tester ...

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Çà n'a pas fonctionné.

    Sinon qu'elle sont les droits ou les configurations dans AIX qu'il faut vérifier pour être sûr que tout est OK ?

    Et il possible qu'un paramétrage bloque l'accès à un fichier si il est déjà utilisé par un autre utilisateur ? (problème d'accès concurrents)

    Quelqu'un a t'il d'autres idées ?

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    J'ai trouvé le problème :

    Lors de l'exécution de Birt, la librairie Tidy.jar est supprimé, puis réapparaît lorsque le traitement se termine. Du coup, dans le cas de traitement en simultanée, le premier marche est les autres bloquent sur cette librairie manquante !! Cela ne se produit que sur 1 de mes environnements.

    Quelqu'un a t'il déjà rencontré ce problème ?
    Penses-vous que ce mécanisme peut être modifié dans un fichier de configuration quelconque ?

    Merci, Martin

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut Support
    Vu la nature delicate du problème, il faudrait vraiment jeter un coup d'oeil dans votre application et comment vous utilisez BIRT.

    Par ailleurs, si vous voulez le support de la communauté sur le gros lourds ( Weblogic , Websphere etc. ), il y a moins de monde, il faudrait au moins payer le support BIRT chez Actuate pour y voir plus clair dans les problèmes de charge.

    Enfin , les liens vers bugzilla montrent que ça a été résolu en 2.3.1. Nous avons releasé également la 2.3.2 depuis et nous préparons la 2.5 pour Galileo.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci pour l'information.

    je vais essayer une version plus récente et si j'ai toujours le problème, je me retournerai vers Actuate.

    Martin

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Avec une version plus récente de Birt, le problème est identique.

    Je souhaiterais contacter le support Actuate. Est ce bien sur Birt Exchange que je dois aller ?
    http://www.birt-exchange.com/products/support/

    Si c'est bien çà quel niveau de support dois-je choisir ?
    Le niveau Basic est-il suffisant ?

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 143
    Points : 1 353
    Points
    1 353
    Par défaut Explication
    Niveau support Basic : Tous les patchs , site support etc. Pas d'incidents inclus, donc pas de possibilité d'appeler au téléphone le support.

    Bronze = Basic + 5 incidents / an + temps de réponse garantis

    Silver = incidents illimités / an + temps de réponse + SLA

    Sinon , pour un contact en français pour l'achat, me faire un message privé avec votre mail.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour cette réponse rapide.
    Je viens d'apprendre que mon entreprise avait déjà qq contact avec Actuate.

    En attendant de passer par leur support, je met mon code ici.
    Si quelqu'un y voit un problème ou une façon de l'améliorer, merci de le signaler.

    PS: j'ai simplifié dans une classe Main mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public class Main
    {
    	public static void main(String[] args)
    	{
    		String birtReportName = args[0];
    		String outputType = args[1];
     
    		// Get main configuration file
    		ResourceBundle birtConf = PropertyResourceBundle.getBundle("conf-birt");
     
    		// Get Birt Home
    		String reportEngine = birtConf.getString("BIRT_HOME");
     
    		// Create Birt Engine Config Instance
    		EngineConfig config = new EngineConfig();			
    		// Engine Home set
    		config.setEngineHome(reportEngine);			        
    		// BIRT Reporting Engine instantiation
    		ReportEngine engine = new ReportEngine(config);
     
    		// Get state name
    		String state = birtConf.getString(birtReportName);
    		// BIRT state representation
    		IReportRunnable design = null;
    		try {
    			design = engine.openReportDesign(state);
    		} catch (EngineException e1) {
    			e1.printStackTrace();
    		}
     
    		// create task
    		IRunAndRenderTask task = engine.createRunAndRenderTask(design);
    		// Render Context
    		HTMLRenderContext renderContext = new HTMLRenderContext();
    		// If there are pictures
    		renderContext.setImageDirectory("pictures path");
    		HashMap contextMap = new HashMap();
    		contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT,renderContext);
    		task.setAppContext(contextMap);
     
    		// get ".rptdesign" file name
    		File fichier = new File(state);
    		String out = fichier.getName();
    		String birtFileName = out.substring(0, out.lastIndexOf("."))+"."+outputType;
     
    		// set rendering options
    		HTMLRenderOption options = new HTMLRenderOption();
    		options.setOutputFileName(out.substring(0, out.lastIndexOf("."))+"."+outputType);
    		options.setOutputFormat(outputType);
    		task.setRenderOption(options);
     
    		// Engine run
    		try {
    			task.run();
     
    		} catch (EngineException e) {
    			e.printStackTrace();
    		}
     
    		// end of process
    		engine.destroy();
    	}
    }

Discussions similaires

  1. Execution simultanée via Cron de scripts php
    Par zeflex dans le forum Langage
    Réponses: 17
    Dernier message: 06/02/2011, 23h01
  2. Problème de Thread: Execution simultanée
    Par Xavi91 dans le forum Général Java
    Réponses: 3
    Dernier message: 13/10/2010, 10h01
  3. [SQL2K8] Empêcher l'execution simultanée de procédures stockées
    Par Monstros Velu dans le forum Développement
    Réponses: 3
    Dernier message: 05/08/2010, 23h23
  4. Probleme d'execution simultanée
    Par Alumine dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2009, 13h29
  5. [DOS] Execution de fichier simultané avec nom aléatoire
    Par noabeuh dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 04/03/2007, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo