Quantcast
Channel: SCN : Popular Discussions - SAP Crystal Reports, version for Eclipse
Viewing all articles
Browse latest Browse all 893

crystal report viewer jsp how desalocate memory

$
0
0

Hello

 

I have an code jsp  it is ok

On toolbar I have a lot "pageserver.exe" , the memory is high !!

( We have Tomcat )   

 

look my code i clean the memory by dispose it's ok ??  Thanks you

very much michel

 

 

<%

%><%@ page import = "com.crystaldecisions.sdk.occa.infostore.*,                   com.crystaldecisions.sdk.plugin.desktop.common.*,                   com.crystaldecisions.sdk.framework.*,                   com.crystaldecisions.sdk.occa.security.*,                   com.crystaldecisions.sdk.exception.SDKException,             com.crystaldecisions.sdk.occa.report.exportoptions.*,                   com.crystaldecisions.sdk.occa.managedreports.IReportSourceFactory,                   java.util.Locale,             java.util.*,             java.lang.String,             java.io.IOException,             java.io.InputStream,             java.io.OutputStream,             java.util.*,             java.util.ArrayList,             java.util.Iterator,             java.util.List,             java.io.*,                   com.crystaldecisions.sdk.occa.report.data.*,                   com.crystaldecisions.report.web.viewer.*"

%><%
String pi_scms             = request.getParameter("cms");       String pi_suser             = request.getParameter("user"); r      String pi_spass             = request.getParameter("pass");       String pi_sdocName       = request.getParameter("sdoc");      String pi_suserDb     = request.getParameter("userdb");exemple rcteaxeriah     String pi_spassDb     = request.getParameter("passdb");                  // ****  Récupération des paramétres envoyés par l'URL la premiere Fois      // les fois suivantes il faut utiliser le principe de session      String[] tab_schamp  = request.getParameterValues("schamp");     String[] tab_stype   = request.getParameterValues("stype");     String[] tab_svaleur = request.getParameterValues("svaleur");     String[ ] tab_schamp1 = new String[100];  // Tableau des Champs     String[ ] tab_stype1  = new String[100];  // Tableau des Types      String[ ] tab_svaleur1 = new String[1000]; // Tableau des Valeurs           // on Mémorise dans une session pour l'activiewer     // pour contourner le probleme lors d'access a la prochaine page sur l'active viewer       // les données etaient a vide       HttpSession session1 = request.getSession(true);                         //            1ere CONNECTION (URL) on mémorise dans la session     if( session1.isNew() )      {        session1.setAttribute ("CMS",pi_scms);  // nom cms        session1.setAttribute ("USER",pi_suser); // nom user connection cms         session1.setAttribute ("PASS",pi_spass); // password cms        session1.setAttribute ("SDOC",pi_sdocName); // nom du report Rpt         session1.setAttribute ("USERDB",pi_suserDb); // utilisateur base de donne        session1.setAttribute ("PASSDB",pi_spassDb); // mot de passe base de donnée                                         // on parcours le tableau des champs type et valeur         // pour le stocker dans la session PARAM0,TYPE0,VALEUR0,PARAM1,TYPE1,VALEUR1,        String  l_s_mot_cle_param  ;        String  l_s_mot_cle_type   ;        String  l_s_mot_cle_valeur ;                  for (int l_i_Nbr_Champ = 0; l_i_Nbr_Champ < tab_schamp.length; l_i_Nbr_Champ++)        {                      l_s_mot_cle_param  = " " ; l_s_mot_cle_type   = " "  ; l_s_mot_cle_valeur = " ";                              l_s_mot_cle_param  = "PARAM" ;           l_s_mot_cle_type   = "TYPE"  ;          l_s_mot_cle_valeur = "VALEUR";           l_s_mot_cle_param  = l_s_mot_cle_param  + String.valueOf(l_i_Nbr_Champ);           l_s_mot_cle_type   = l_s_mot_cle_type   + String.valueOf(l_i_Nbr_Champ);           l_s_mot_cle_valeur = l_s_mot_cle_valeur + String.valueOf(l_i_Nbr_Champ);                         // Mémorisation en session                            session1.setAttribute (l_s_mot_cle_param  , tab_schamp [l_i_Nbr_Champ]);          session1.setAttribute (l_s_mot_cle_type   , tab_stype  [l_i_Nbr_Champ]);          session1.setAttribute (l_s_mot_cle_valeur , tab_svaleur[l_i_Nbr_Champ]);              }               // Stocke le nombre de champs passés dans l'URL en session            session1.setAttribute ("NBRELEM" , String.valueOf(tab_schamp.length-1));        } // fin  si nouvelle connection on mémorise dans la session                           //            1ERE CONNECTION OU CONNECTION SUIVANTES       //            on récupére les valeurs de la session                            // Récupération des valeurs de la session           String l_s_cms      = (String)session1.getAttribute("CMS");       String l_s_user     = (String)session1.getAttribute("USER");       String l_s_pass     = (String)session1.getAttribute("PASS");       String l_s_sdocname     = (String)session1.getAttribute("SDOC");       String l_s_userDb     = (String)session1.getAttribute("USERDB");       String l_s_passDb     = (String)session1.getAttribute("PASSDB");                   // recupération du nombre d'élément       String l_s_nbrelem     = (String)session1.getAttribute("NBRELEM");       int l_i_nbr = Integer.parseInt(l_s_nbrelem);        // Récupération des champs et insertion dans un tableau        // de tous les champs mémorisés dans la session                                    String  l_s_mot_cle_param1   ;       String  l_s_mot_cle_type1    ;       String  l_s_mot_cle_valeur1 ;                 for (int l_s_cmpt = 0; l_s_cmpt <= l_i_nbr ; l_s_cmpt++)                             {                              l_s_mot_cle_param1  = " " ;l_s_mot_cle_type1   = " "  ;l_s_mot_cle_valeur1 = " ";                          l_s_mot_cle_param1  = "PARAM" ;                l_s_mot_cle_type1   = "TYPE"  ;                l_s_mot_cle_valeur1 = "VALEUR";                                l_s_mot_cle_param1  = l_s_mot_cle_param1  + String.valueOf(l_s_cmpt);                l_s_mot_cle_type1   = l_s_mot_cle_type1   + String.valueOf(l_s_cmpt);                l_s_mot_cle_valeur1 = l_s_mot_cle_valeur1 + String.valueOf(l_s_cmpt);                               tab_schamp1 [l_s_cmpt]  = (String)session1.getAttribute(l_s_mot_cle_param1);                tab_stype1  [l_s_cmpt]  = (String)session1.getAttribute(l_s_mot_cle_type1);                tab_svaleur1 [l_s_cmpt] = (String)session1.getAttribute(l_s_mot_cle_valeur1);                      }      //            FIN RECUPERATION DES CHAMPS MEMORISES EN SESSION                    try {                   //            CONNECTION AU CMS                   IEnterpriseSession enterpriseSession = CrystalEnterprise.getSessionMgr().logon(l_s_user,l_s_pass,l_s_cms,"secEnterprise");                   //Grab the InfoStore from the httpsession (Entreprise session)         IInfoStore infoStore = (IInfoStore)enterpriseSession.getService("", "InfoStore");                  //Query for the report object in the CMS.  See the Developer Reference guide for more information the query language.           // CI_INFOOBJECTS = TABLES des objets du referentiel BO         IInfoObjects oInfoObjects = (IInfoObjects)infoStore.query("SELECT TOP 1 * " + "FROM CI_INFOOBJECTS " +          "WHERE SI_PROGID = 'CrystalEnterprise.Report' AND SI_INSTANCE=0 AND SI_NAME='" +  l_s_sdocname + "'" );              if (oInfoObjects.size() > 0) {                            //Recupere la derniere instance du report               IInfoObject oInfoObject = (IInfoObject) oInfoObjects.get(0);                   //Use the PS report factory to obtain a report source that will be processed on the Page Server.                  IReportSourceFactory factoryPS = (IReportSourceFactory)enterpriseSession.getService("PSReportFactory");              Object reportSource = factoryPS.openReportSource((oInfoObject), Locale.ENGLISH);                             session.setAttribute("reportSource", reportSource);               //            FIN CONNECTION AU CMS                     //             CONNECTION A LA BASE DE DONNEE ORACLE                          ConnectionInfo dbLogonInfo = new ConnectionInfo();          dbLogonInfo.setUserName(l_s_userDb);          dbLogonInfo.setPassword(l_s_passDb);          ConnectionInfos dbLogonInfos = new ConnectionInfos();          dbLogonInfos.add(dbLogonInfo);                         //Put this object in session so that it can be retrieved and used by the viewer.          session.setAttribute("dbLogonInfos", dbLogonInfos);                          //       INSTANCE DE l'ACTIVE VIEWER DE CRYSTAL REPORT            CrystalReportViewer viewer = new CrystalReportViewer();                  viewer.setName("CrystalReportViewer");              // Active l'exportation et l'impression sur le visualisateur                    viewer.setOwnPage(true);              //Impression possible sur le mode ActiveX                viewer.setPrintMode(CrPrintMode.ACTIVEX);                  //le rapport sera affiché sur le Viewer                   //Object reportSource = session.getAttribute("reportSource");              viewer.setReportSource(reportSource);                  //ConnectionInfos dbLogonInfos = (ConnectionInfos)session.getAttribute("dbLogonInfos");          // affecte la connection au viewer               viewer.setDatabaseLogonInfos(dbLogonInfos);           // creation champ field pour le report           Fields fields = new Fields();            // force le parametre dans le browser                  viewer.setParameterFields(fields);                   // prompt du parametre de saisie caché                // car on veut que le rapport s'affiche automatiquement                       viewer.setEnableParameterPrompt(false);            // Rafraichissement que la premiere fois           if( session1.isNew() )           {                   viewer.refresh();// desactiver car probleme sur activewiever           }                    //          //        FORCAGE DES PARAMETRES ENTREES AU REPORT SI TYPE DATE           //                     for (int l_i_Nbr_Champ = 0; l_i_Nbr_Champ <= l_i_nbr ; l_i_Nbr_Champ++)          {                                        if (tab_stype1[l_i_Nbr_Champ].equals("DATE"))                {                              // extraction du format JJ/MM/AAAA et déclaration des variables                // Année                int iannee = Integer.parseInt(tab_svaleur1[l_i_Nbr_Champ].substring(6,10));                               // le mois de janvier commence a 0                int imois  = Integer.parseInt(tab_svaleur1[l_i_Nbr_Champ].substring(3,5)) -1 ;               // Jour                int ijour  = Integer.parseInt(tab_svaleur1[l_i_Nbr_Champ].substring(0,2));                              RC_P_setParameterValueDate(fields,tab_schamp1[l_i_Nbr_Champ],"",iannee,imois,ijour,out);               }          //       FIN  FORCAGE DES PARAMETRES ENTREES SI TYPE DATE                //   FORCAGE DES PARAMETRES ENTREES AU REPORT SI TYPE STR                                     if (tab_stype1[l_i_Nbr_Champ].equals("STR"))                {                                   RC_P_setParameterValueStr(fields,tab_schamp1[l_i_Nbr_Champ],"",tab_svaleur1[l_i_Nbr_Champ],out);               }                              //       FIN  FORCAGE DES PARAMETRES ENTREES SI TYPE STR                                         //   FORCAGE DES PARAMETRES ENTREES AU REPORT SI TYPE INT                                   if (tab_stype1[l_i_Nbr_Champ].equals("INT"))                {                                   RC_P_setParameterValueInt(fields,tab_schamp1[l_i_Nbr_Champ],"",tab_svaleur1[l_i_Nbr_Champ],out);               }                              //       FIN  FORCAGE DES PARAMETRES ENTREES SI TYPE INT                     }                                     //lance le visualiseur dans la fenêtre active du navigateur.                    viewer.processHttpRequest(request, response, getServletConfig().getServletContext(), null);               // Nettoyage                    viewer.dispose();                                }         else {              out.println("Report " + pi_sdocName + " not found.");              }    }    catch(SDKException sdkEx) {          out.println(sdkEx);       }

//       FIN PROGRAMME PRINCIPAL          
%><%!
//  Auteur : MM 
//  date   : 26/09/2008     
//  Nom Procedure RC_P_setParameterValueDate
//  Version 1.0
//  Explication :  Prépare les paramétres entrées dans le report pour les champs de type Date 
//  se sert de l'objet calendar de java  

static void RC_P_setParameterValueDate(Fields oFields, String paramName, String reportName,int annee,int mois,int jour,JspWriter out) throws javax.servlet.jsp.JspException 

{ 

  // FORMAT DATE    Calendar calendar = Calendar.getInstance();   calendar.set(Calendar.DAY_OF_MONTH, jour);   calendar.set(Calendar.MONTH, mois);   calendar.set(Calendar.YEAR, annee);   Object value = calendar.getTime();        ParameterField oParameterField = new ParameterField();   oParameterField.setReportName(reportName);   Values oValues = new Values();   ParameterFieldDiscreteValue oParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();   oParameterField.setName(paramName);   oParameterFieldDiscreteValue.setValue(value);   oValues.add(oParameterFieldDiscreteValue);   oParameterField.setCurrentValues(oValues);   oFields.add(oParameterField);       
}
%><%!
//   Auteur : MM 
//   date   : 26/09/2008     
//   Nom Procedure RC_P_setParameterValueStr
//   Version 1.0
//   Explication Prépare les paramétres entrées dans le report pour les champsde type STR

private void RC_P_setParameterValueStr(Fields oFields, String paramName, String reportName, Object value,JspWriter out) throws javax.servlet.jsp.JspException 
{
 
    ParameterField oParameterField = new ParameterField();    oParameterField.setReportName(reportName);    Values oValues = new Values();    ParameterFieldDiscreteValue oParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();    oParameterField.setName(paramName);    oParameterFieldDiscreteValue.setValue(value);    oValues.add(oParameterFieldDiscreteValue);    oParameterField.setCurrentValues(oValues);    oFields.add(oParameterField);      
}
%><%!
//   Auteur : MM 
//   date   : 26/09/2008     
//   Nom Procedure RC_P_setParameterValueInt
//   Version 1.0
//   Explication Prépare les paramétres entrées dans le report pour les champsde type INT
private void RC_P_setParameterValueInt(Fields oFields, String paramName, String reportName, Object value,JspWriter out) throws javax.servlet.jsp.JspException 
{    ParameterField oParameterField = new ParameterField();    oParameterField.setReportName(reportName);    Values oValues = new Values();    ParameterFieldDiscreteValue oParameterFieldDiscreteValue = new ParameterFieldDiscreteValue();    oParameterField.setName(paramName);    oParameterFieldDiscreteValue.setValue(value);    oValues.add(oParameterFieldDiscreteValue);    oParameterField.setCurrentValues(oValues);    oFields.add(oParameterField);      
}
%><%!

//   Auteur : MM 
//   date   : 26/09/2008     
//   Nom Procedure RC_P_Affiche
//   Version 1.0
//   Pour Debug affiche les informations
//   note l'appel  se fait par affiche(out,"test") et mettre en commentaire la ligne d'access au viewer viewer.processHttpRequest

static void RC_P_Affiche(JspWriter out, String s) throws javax.servlet.jsp.JspException
{
  try  {    out.println(s);  }  catch(java.io.IOException e)  { throw new javax.servlet.jsp.JspException(e); }  return;
}
%>

 

 


Viewing all articles
Browse latest Browse all 893

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>