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 :

[4.2.0] Création de multiple ReportEngine


Sujet :

BIRT

  1. #1
    Membre régulier
    Profil pro
    dev
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 72
    Points
    72
    Par défaut [4.2.0] Création de multiple ReportEngine
    Bonjour et bonne année 2013 à tous,

    J'utilise BIRT 4.2.0 dans une application web et je souhaite avoir plusieurs ReportEngine qui existeront à un instant donné dans mon application. Cependant, lors de la création du 2ème ReportEngine, j'ai une erreur du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.eclipse.birt.core.exception.BirtException: error.CannotStartupOSGIPlatform
    Le code utilisé pour créer les ReportEngine est le suivant :
    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
     
    	public static synchronized IReportEngine getReportEngine()
    			throws Exception {
    		if (reportEngine == null) {
    			try {
    				EngineConfig config = new EngineConfig();
    				config.setLogConfig(Configuration.BIRT_LOG_DIRECTORY,
    						getBIRTLogLevel(Configuration.BIRT_LOG_LEVEL));
    				config.setResourcePath(Configuration.BIRT_RESOURCE_PATH);
    				config.setLogRollingSize(Configuration.BIRT_LOG_ROLLING_SIZE);
    				config.setLogMaxBackupIndex(Configuration.BIRT_LOG_MAX_BACKUP_INDEX);
    				config.getAppContext().put(EngineConstants.WEBAPP_CLASSPATH_KEY,"");
    				config.getAppContext().put(EngineConstants.APPCONTEXT_DATASET_CACHE_OPTION,true);
    				config.getAppContext().put(DataEngine.DATASET_CACHE_OPTION,true);
    				Platform.startup(config);
    				IReportEngineFactory factory = (IReportEngineFactory) Platform
    						.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
    				reportEngine = factory.createReportEngine(config);
    				log.debug("BIRT report engine was created");
    			} catch (Exception e) {
    				log.error("BIRT report engine creation failed");
    				throw e;
    			}
    			if (reportEngine == null) {
    				log.error("BIRT report engine is null after its creation.");
    			}
    		}
    		return reportEngine;
    	}
    J'aimerai savoir si il est possible qu'il existe plusieurs ReportEngine au sein d'une application et comment le faire sans générer d'erreur.

    Merçi d'avance pour votre aide.

    Eric.

  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,

    Pour lancer plusieurs instances de BIRT, il faut autant de runtime (librairies toussa) que d'instances voulues.

  3. #3
    Membre régulier
    Profil pro
    dev
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 72
    Points
    72
    Par défaut
    Merçi pour ton aide BiM,
    mais je crains de ne pas comprendre ta réponse. Qu'est ce que tu entends par
    il faut autant de runtime (librairies toussa)

  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
    Ce que j'appelle le runtime, c'est le dossier vers lequel tu pointes qui contient le runtime (l'ensemble des librairies nécessaires au fonctionnement de BIRT).

    Dans ton exemple, il te faudrait un config.setBirtHome(...) qui varie pour chaque instance de BIRT, je suis d'ailleurs étonnée qu'il ne soit pas setté dans ton exemple.

  5. #5
    Membre régulier
    Profil pro
    dev
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 72
    Points
    72
    Par défaut
    Je n'ai pas mis l'instruction
    config.setBirtHome(...)
    car je crois qu'à partir de la version 3.7.1 elle n'est plus indispensable.

    Mon application est une application web qui utilise Maven pour sa construction. Donc les librairies sont chargées automatiques dans le répertoire lib du WEB-INF.
    Je vais essayé de créer un répertoire spécifique pour chaque instance.

    Merçi BiM.

  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
    Ah c'est possible, je suis plus très à jour depuis un peu plus d'un an, il faut que je me remette à la page. Mais je pense qu'il faudra forcer cette instruction pour pouvoir instancier plusieurs fois BIRT. Ce problème est connu, mais certaines librairies utilisées par BIRT ne supporte pas l'utilisation concurrente d'une part, et d'autre part, BIRT lui même est un moteur fait pour être lancé en instance unique.

    Stefan, corrige moi si je me trompe.

    Après, peut être que l'offre payante permet plus de libertés sur ce sujet.

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    Salut à tous, bonne et heureuse année 2013!

    J'ai une appli dans laquelle peuvent démarrer plusieurs instances de moteur, la seule différence avec ton code c'est le dataengine n'est pas utilisé (DATASET_CACHE_OPTION). Par contre, si l'une des instances est arrêtée et stoppe la Plateforme Birt (Platform.shutdown()), là c'est fichu plus rien ne peut démarrer on tombe sur l'erreur OSGI. Une solution est donc de mettre ce shutdown au niveau de l'appli web, pas au niveau de chaque moteur.

    Cette option multi-moteur avait été prévue "au cas où" mais au final dans mon contexte elle ne sert à rien car un seul moteur absorbe parfaitement la charge. Et comme le souligne BiM, rien ne dit que cela n'aurait pas posé des problèmes de toute façon. En revanche:
    mais certaines librairies utilisées par BIRT ne supporte pas l'utilisation concurrente
    BiM pourrais tu détailler un peu stp? Y a t-il un bugzilla ouvert sur ce cas? Il ne me semble pas avoir rencontré ce problème, mais je ne suis monté que jusqu'à 24 utilisateurs simultanés avec Selenium. J'ai vu sur Eclipse que certains sont montés en test de charge jusqu'à 400 utilisateurs simultanés. Si il y a un souci de parallélisme sur un certain type de de format d'export ou autre ce serait vraiment important de le savoir

  8. #8
    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

  9. #9
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    Merci BiM. Les bugs liés ont l'air plus ou moins fermés, sans que les résolutions soient très claires. Heureusement, le problème a été rencontré avec des scripts perl: en passant par un serveur d'application je ne pense pas qu'on puisse verrouiller des .jar (en tout cas j'espère !!) On verra bien les surprises que cette nouvelle année nous réserve

    A+

Discussions similaires

  1. [SCHEMA] création de multiples indexs
    Par jenesuispasunrobot dans le forum SQL
    Réponses: 2
    Dernier message: 12/03/2010, 10h57
  2. Optimisation création requête multiple
    Par ouiouioui dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2009, 14h15
  3. création de multiple Textfield
    Par dr3333 dans le forum Flash
    Réponses: 0
    Dernier message: 11/03/2008, 19h24
  4. [Plug-in] Création d'un boutton multiple
    Par bitou dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 12/06/2007, 06h27
  5. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 10h17

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