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.1.2] Plusieurs rapports sans redémarrer Tomcat


Sujet :

BIRT

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut [2.1.2] Plusieurs rapports sans redémarrer Tomcat
    Bonjour à tous...
    ma nouvelle question est la suivante:

    Mon application a une interface et selon les données qu'on met, on fait un rapport different.
    Je voudrais faire plusieurs rapports en changeant les données de l'interface.
    Le problème c'est que si je veux faire le deuxième rapport je dois redémarrer le serveur web (shutdown/startup). Je voudrais savoir comment je dois faire pour éviter ça et faire tous les rapports sans redémarrer.

    J'attends vos réponses.
    Merci

  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,

    Soit ton serveur est mal installé, soit ton application est mal conçue, au choix

    Désolée...

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    je crois que le serveur est bien configuré, alors je dois faire quelques modifications dans mon application...

    Mon aplication a une page html (en fait c'est un formularie pour prendre des données). Après je prendre tous les données dans la servlet, j'appelle une clase pour faire le dessin et finalment j'appelle d'autre clase pour faire le HTML/PDF.

    Qu'est-ce que je devrais reviser?? La servlet? La page html?

    En fait si j'essaie de faire un deuxième rapport, ce que j'ai est la page html blanche (il n'y a rien).

    Si tu as besoin plus d'explications ou quelque morceau du code dis-moi

    Merci beaucoup.

  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
    Tu as une page blanche au moment de la génération du deuxième rapport ou au moment du chargement du formulaire ?

    Si c'est au moment de la génération, tu as sûrement une exception générée et pour cela, il faudrait que tu puisses voir la console ou les logs en espérant que tu loggues les exceptions

    Ca peut être notemment dû au fait que tu essayes de générer ton fichier sous le nom (par exemple) fichier.pdf alors que le premier portait le même nom et qu'il est ouvert.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Oui tu as raison,
    j'ai une exception NullPointerException. C'est due quand j'essaie de créer le "data source" (quand je declare le paramètre "odaURL")
    J'ai vous ajouté l'exception.

    Merci pour toute l'information.
    Images attachées Images attachées  

  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
    Je suis déjà plus rassurée !

    Bon déjà, premier point mais très important, les classes en Java commencent par une majuscule et le nom du .java doit avoir le même nom que la classe principale (public) du fichier. Donc renomme createDesign en CreateDesign

    Ensuite pourrait-on voir le code de la méthode buildDataSource() de CreateDesign et pourrait-tu mettre en évidence la ligne correspondant à la ligne 82 de ton fichier ?


  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    J'ai d'autre application qui fait des rapports aussi, mais seulement des tables (pas de chart) et cette application-là je la peux executer plusieurs fois sans problème et elle utilise les mêmes methodes buildDataSource et buildDataSet. Alors, je ne sais pas si l'exception est due aux charts (je crois pas, mais je suis pas sûre), à la structure de l'aplication (les clases) ou à aucune...

    Voici le code. L'exception est à la ligne en rouge. C'est parce que "dsHandle" est null (mais pas "designFactory")
    Remarque: designFactory est une variable globale.

    Merci BiM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	void buildDataSource( ) throws SemanticException {
    				
    		OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
    				"Rapport Data Source", "org.eclipse.birt.report.data.oda.jdbc" );
    		
    		dsHandle.setProperty( "odaDriverClass",	"com.mysql.jdbc.Driver");
    		dsHandle.setProperty( "odaURL", "jdbc:mysql://localhost/prueba" );
    		dsHandle.setProperty( "odaUser", "locuelas" );
    		dsHandle.setProperty( "odaPassword", "birt" );
    		
    		designHandle.getDataSources( ).add( dsHandle );
    
    	}

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Bonjour, j'ai trouvé la solution BiM...
    Le problème c'est que à la fin de ma clase principal (la clase qui a le servlet) j'appellais à "BirtEngine.destroyBirtEngine();"

    J'ai effacé cette ligne et maintenant ça marche!
    Je comprends pas alors à quoi ça sert la fonction destroyBirtEngine...

    Merci quand même

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Points : 95
    Points
    95
    Par défaut
    Peux-tu mettre en fichier attaché ton code car j'essaie de modifier mon datasource en fonction de mon serveur de deploiement (Prod, Backup...)
    mais je ne m'en sors pas avec les ODA..
    je ne trouve aucun exemple complet sur le sujet

    Merci d'avance Cédric

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    le code que j'ai utilisé pour créer le dataSource avec Oda est le suivante:

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    OdaDataSourceHandle buildDataSource( ) throws SemanticException {
                    OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
    				"nombre_Data_Source", "org.eclipse.birt.report.data.oda.jdbc" );
     
    		dsHandle.setProperty( "odaDriverClass",	"com.mysql.jdbc.Driver");
    		dsHandle.setProperty( "odaURL", "jdbc:mysql://ton_host/base_de_donnees" );
    		dsHandle.setProperty( "odaUser", "user_name" );
    		dsHandle.setProperty( "odaPassword", "pass" );
     
    		return dsHandle;
    }

    Remarque: designFactory est une instance d'ElementFactory.
    Remarque: après ajoute dsHandle à ton instance de "ReportDesignHandle"

    C'est ça ce que tu as besoin?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Points : 95
    Points
    95
    Par défaut
    Voilà le debut de mon code. Justement je ne sais pas comment recupérer une instance d'ElementFactory. et ReportDesignHandle. Je galère avec tout les objets je m'y perds et mon anglais est moyen :-(

    J'ai oublie de dire que j'ai une instance dans Birt qu'y s'apelle bdd dans tout mes rapports

    Code java : 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
     
    ServletContext sc = cycle.getRequestContext().getServlet().getServletContext();
    					IReportEngine birtReportEngine = BirtEngine.getBirtEngine(sc);
    					//setup image directory
    					HTMLRenderContext renderContext = new HTMLRenderContext();
    					HashMap contextMap = new HashMap();
    					contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
     
    					IReportRunnable design;
    					try
    					{
    						design = birtReportEngine.openReportDesign( cycle.getRequestContext().getServlet().getServletContext().getRealPath("/Reports")+"/"+reportName );
    //						/*
    //						 * data source
    //						 */
    //						OdaDataSourceHandle odaDataSourceHandle = factory.newOdaDataSource(","org.eclipse.birt.report.data.oda.jdbc");
    //				        odaDataSourceHandle.setProperty("odaDriverClass",driver);
    //				        odaDataSourceHandle.setProperty("odaURL",url);
    //				        odaDataSourceHandle.setProperty("odaUser",user);
    //				        odaDataSourceHandle.setProperty("odaPassword",password);
    //				        
    //						OdaDataSourceHandle designHandle = design.getDesignHandle();
    //						design.get
    //						OdaDataSourceHandle dataSourceHandle = (OdaDataSourceHandle) designHandle.
    //						.findDataSource( "dataSource" );//$NON-NLS-1$
    //						dataSourceHandle.setProperty( "odaUser", "NewUser" );//$NON-NLS-1$ //$NON-NLS-2$
    //						dataSourceHandle.setProperty( "odaPassword", "NewPassword" );//$NON-NLS-1$ //$NON-NLS-2$
    //						dataSourceHandle.setProperty( "odaURL", "NewURL" )
    //						openReportDesign("test.rptdesign"); 
    //						ReportDesignHandle report = (ReportDesignHandle) design.getDesignHandle( ); 
    //						OdaDataSourceHandle dataSourceHandle=(OdaDataSourceHandle) report.findDataSource("bdd"); 
    //						dataSourceHandle.setProperty( "odaUser", "investissement" );
    //						dataSourceHandle.setProperty( "odaPassword", "ctiv" );
    //						dataSourceHandle.setProperty( "odaURL", "jdbc:postgresql://190.1.128.40:5432/investissement?charSet=LATIN9" );
     
     
    						//create task to run and render report
    						IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask( design );
    						task.setAppContext( contextMap );

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Tu veux exécuter ton application sur quelque serveur web? Lequel?

    Pour recupérer l'instance de ReportDesignHandle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    designHandle = (ReportDesignHandle) design.getDesignHandle( );
    Pour recupérer l'instance de ElementFactory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    designFactory = designHandle.getElementFactory( );
    Remarque: design est une instance de IReportRunnable. C'est l'instance obtenue de l'ouverture de ton fichier *.rptdesign

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vider le cache sans redémarrer Tomcat
    Par hpl76 dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 22/04/2013, 10h52
  2. Réponses: 1
    Dernier message: 09/06/2011, 21h38
  3. [CR8.5]lancer plusieurs impressions sans utiliser l'ocx
    Par sboober dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 04/05/2005, 10h08
  4. CR10 : ouvrir rapport sans passer par concepteur
    Par manunam80 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/03/2005, 15h46
  5. [CR] Regrouper plusieurs rapports
    Par theclear dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 22/04/2004, 14h36

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