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

JSF Java Discussion :

Download file Java heap space JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 28
    Par défaut Download file Java heap space JSF
    Bonjour.

    Je viens à vous car je suis face à un problème qui me bloque plutôt bien.

    Dans mon application, je réalise des imports et des exports de fichier csv et xml. Les fichiers sont enregistrés dans ma base en tant que blob.

    Lors d'un export, mon fichier est créé en batch et enregistré dans la base.
    Afin de le récupérer, j'utilise un bouton de download qui me permet de récupérer le fichier créer.

    Pour ce faire j'utilise le code 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
    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
     
    protected void createDownloadableFile(String fileName, String mimeType, InputStream is)
        {
            sLogger.info("Begin create file.");
            OutputStream os = null;
            try
            {
                HttpServletResponse response = createResponse(fileName, mimeType);
                sLogger.info("Response created.");
                os = response.getOutputStream();
                if (mimeType.equals("text/xml"))
                {
                    sLogger.info("xml file.");
                    IOUtils.copy(XmlUtil.formatStream(is), os);
                    sLogger.info("stream copied.");
                }
                else if (mimeType.equals("text/csv"))
                {
                    sLogger.info("csv file.");
                    // Delete the BOM marker from the stream
                    UnicodeInputStream uis = new UnicodeInputStream(is, null);
                    String enc = uis.getEncoding();
                    InputStreamReader isr;
                    if (enc == null)
                        isr = new InputStreamReader(uis);
                    else
                        isr = new InputStreamReader(uis, enc);
                    // Read the stream in a buffer
                    Reader reader = new BufferedReader(isr);
                    StringBuffer sb = new StringBuffer();
                    int ch;
                    while ((ch = reader.read()) > -1)
                        sb.append((char) ch);
                    // Write in the file
                    Writer dataWriter = new OutputStreamWriter(os);
                    dataWriter.write(sb.toString());
                    // Close writer and reader
                    dataWriter.close();
                    reader.close();
                }
                else
                    IOUtils.copy(is, os);
                sLogger.info("before response complete.");
                FacesContext.getCurrentInstance().responseComplete();
                sLogger.info("after response complete.");
            }
            catch (Exception e)
            {
                addMessage(null, FacesMessage.SEVERITY_ERROR, "downloadError");
            }
            finally
            {
                IOUtils.closeQuietly(is);
                IOUtils.closeQuietly(os);
            }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected HttpServletResponse createResponse(String fileName, String mimeType)
        {
            HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext()
                .getResponse();
     
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", 0);
            response.setContentType(mimeType);
            response.setHeader("Content-disposition", "attachment; filename=" + fileName);
            if (mimeType.equals("text/xml"))
                response.setCharacterEncoding("utf-8");
     
            return response;
        }
    Tout ceci fonctionne parfaitement lorsque je télécharge un fichier.
    Le problème viens du fait que lors d'un téléchargement en cours d'un fichier d'une taille assez conséquentes, si je rééssaye de télécharger le fichier, j'ai l'erreur suivante:
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    2011-03-18 12:22:10,448 [TP-Processor3] ERROR org.ajax4jsf.webapp.BaseXMLFilter Exception in the filter chain  []
    javax.servlet.ServletException: Filter execution threw an exception
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:259)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at com.jamonapi.JAMonFilter.doFilter(JAMonFilter.java:57)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
    	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
    	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
    	at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.OutOfMemoryError: Java heap space
    	at java.io.Writer.write(Writer.java:172)
    	at java.io.PrintWriter.write(PrintWriter.java:412)
    	at java.io.PrintWriter.write(PrintWriter.java:429)
    	at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlResponseWriterImpl.write(HtmlResponseWriterImpl.java:586)
    	at org.apache.myfaces.renderkit.html.util.DefaultAddResource.writeResponse(DefaultAddResource.java:491)
    	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:359)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at com.jamonapi.JAMonFilter.doFilter(JAMonFilter.java:57)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    J'avoue que je je bloque un peu sur cette erreur si quelqu'un a une idée?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2006
    Messages : 67
    Par défaut OutOfMemoryError: Java heap space
    Salut,
    Il s'agit d'un heap space (manque d'espace mémoire) et si tu allouais à ton serveur plus de mémoire !!
    en ajoutant l'argument -Xms256M -Xmx512M à ton serveur !!!

  3. #3
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    si tu as assez de mémoire tu peux ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -Xms512m -Xmx1024m -XX:MaxPermSize=512m
    aux arguments de ton serveur

Discussions similaires

  1. [Info] Chargement image et Java heap space
    Par dazz_x dans le forum Langage
    Réponses: 9
    Dernier message: 11/09/2007, 11h51
  2. Java heap space
    Par youdev dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 10/07/2007, 11h10
  3. [jarsigner] java heap space
    Par GLDavid dans le forum Langage
    Réponses: 3
    Dernier message: 16/08/2006, 11h35
  4. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28
  5. [ memoire ] Java Heap Space
    Par natha dans le forum Général Java
    Réponses: 10
    Dernier message: 23/01/2006, 11h15

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